aurea-eden 1.26.0 → 1.27.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,13 +0,0 @@
1
- !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).AureaEDEN={})}(this,(function(t){"use strict";
2
- /**
3
- * @license
4
- * Copyright 2010-2024 Three.js Authors
5
- * SPDX-License-Identifier: MIT
6
- */const e="172",n={LEFT:0,MIDDLE:1,RIGHT:2,ROTATE:0,DOLLY:1,PAN:2},i={ROTATE:0,PAN:1,DOLLY_PAN:2,DOLLY_ROTATE:3},r=0,s=1,a=2,o=100,l=101,h=102,c=200,q=201,u=202,d=203,m=204,p=205,f=206,g=207,x=208,_=209,y=210,v=211,w=212,b=213,M=214,S=0,T=1,E=2,A=3,C=4,R=5,z=6,I=7,P="attached",L="detached",N=300,k=301,D=302,U=303,O=304,F=306,B=1e3,V=1001,H=1002,G=1003,W=1004,j=1005,X=1006,Y=1007,Z=1008,J=1009,$=1010,K=1011,Q=1012,tt=1013,et=1014,nt=1015,it=1016,rt=1017,st=1018,at=1020,ot=35902,lt=1021,ht=1022,ct=1023,qt=1024,ut=1025,dt=1026,mt=1027,pt=1028,ft=1029,gt=1030,xt=1031,_t=1033,yt=33776,vt=33777,wt=33778,bt=33779,Mt=35840,St=35841,Tt=35842,Et=35843,At=36196,Ct=37492,Rt=37496,zt=37808,It=37809,Pt=37810,Lt=37811,Nt=37812,kt=37813,Dt=37814,Ut=37815,Ot=37816,Ft=37817,Bt=37818,Vt=37819,Ht=37820,Gt=37821,Wt=36492,jt=36494,Xt=36495,Yt=36283,Zt=36284,Jt=36285,$t=36286,Kt=2300,Qt=2301,te=2302,ee=2400,ne=2401,ie=2402,re=2500,se=2501,ae="",oe="srgb",le="srgb-linear",he="linear",ce="srgb",qe=7680,ue=512,de=513,me=514,pe=515,fe=516,ge=517,xe=518,_e=519,ye=35044,ve="300 es",we=2e3,be=2001;let Me=class{addEventListener(t,e){void 0===this._listeners&&(this._listeners={});const n=this._listeners;void 0===n[t]&&(n[t]=[]),-1===n[t].indexOf(e)&&n[t].push(e)}hasEventListener(t,e){if(void 0===this._listeners)return!1;const n=this._listeners;return void 0!==n[t]&&-1!==n[t].indexOf(e)}removeEventListener(t,e){if(void 0===this._listeners)return;const n=this._listeners[t];if(void 0!==n){const t=n.indexOf(e);-1!==t&&n.splice(t,1)}}dispatchEvent(t){if(void 0===this._listeners)return;const e=this._listeners[t.type];if(void 0!==e){t.target=this;const n=e.slice(0);for(let e=0,i=n.length;e<i;e++)n[e].call(this,t);t.target=null}}};const Se=["00","01","02","03","04","05","06","07","08","09","0a","0b","0c","0d","0e","0f","10","11","12","13","14","15","16","17","18","19","1a","1b","1c","1d","1e","1f","20","21","22","23","24","25","26","27","28","29","2a","2b","2c","2d","2e","2f","30","31","32","33","34","35","36","37","38","39","3a","3b","3c","3d","3e","3f","40","41","42","43","44","45","46","47","48","49","4a","4b","4c","4d","4e","4f","50","51","52","53","54","55","56","57","58","59","5a","5b","5c","5d","5e","5f","60","61","62","63","64","65","66","67","68","69","6a","6b","6c","6d","6e","6f","70","71","72","73","74","75","76","77","78","79","7a","7b","7c","7d","7e","7f","80","81","82","83","84","85","86","87","88","89","8a","8b","8c","8d","8e","8f","90","91","92","93","94","95","96","97","98","99","9a","9b","9c","9d","9e","9f","a0","a1","a2","a3","a4","a5","a6","a7","a8","a9","aa","ab","ac","ad","ae","af","b0","b1","b2","b3","b4","b5","b6","b7","b8","b9","ba","bb","bc","bd","be","bf","c0","c1","c2","c3","c4","c5","c6","c7","c8","c9","ca","cb","cc","cd","ce","cf","d0","d1","d2","d3","d4","d5","d6","d7","d8","d9","da","db","dc","dd","de","df","e0","e1","e2","e3","e4","e5","e6","e7","e8","e9","ea","eb","ec","ed","ee","ef","f0","f1","f2","f3","f4","f5","f6","f7","f8","f9","fa","fb","fc","fd","fe","ff"];let Te=1234567;const Ee=Math.PI/180,Ae=180/Math.PI;function Ce(){const t=4294967295*Math.random()|0,e=4294967295*Math.random()|0,n=4294967295*Math.random()|0,i=4294967295*Math.random()|0;return(Se[255&t]+Se[t>>8&255]+Se[t>>16&255]+Se[t>>24&255]+"-"+Se[255&e]+Se[e>>8&255]+"-"+Se[e>>16&15|64]+Se[e>>24&255]+"-"+Se[63&n|128]+Se[n>>8&255]+"-"+Se[n>>16&255]+Se[n>>24&255]+Se[255&i]+Se[i>>8&255]+Se[i>>16&255]+Se[i>>24&255]).toLowerCase()}function Re(t,e,n){return Math.max(e,Math.min(n,t))}function ze(t,e){return(t%e+e)%e}function Ie(t,e,n){return(1-n)*t+n*e}function Pe(t,e){switch(e.constructor){case Float32Array:return t;case Uint32Array:return t/4294967295;case Uint16Array:return t/65535;case Uint8Array:return t/255;case Int32Array:return Math.max(t/2147483647,-1);case Int16Array:return Math.max(t/32767,-1);case Int8Array:return Math.max(t/127,-1);default:throw new Error("Invalid component type.")}}function Le(t,e){switch(e.constructor){case Float32Array:return t;case Uint32Array:return Math.round(4294967295*t);case Uint16Array:return Math.round(65535*t);case Uint8Array:return Math.round(255*t);case Int32Array:return Math.round(2147483647*t);case Int16Array:return Math.round(32767*t);case Int8Array:return Math.round(127*t);default:throw new Error("Invalid component type.")}}const Ne={DEG2RAD:Ee,RAD2DEG:Ae,generateUUID:Ce,clamp:Re,euclideanModulo:ze,mapLinear:function(t,e,n,i,r){return i+(t-e)*(r-i)/(n-e)},inverseLerp:function(t,e,n){return t!==e?(n-t)/(e-t):0},lerp:Ie,damp:function(t,e,n,i){return Ie(t,e,1-Math.exp(-n*i))},pingpong:function(t,e=1){return e-Math.abs(ze(t,2*e)-e)},smoothstep:function(t,e,n){return t<=e?0:t>=n?1:(t=(t-e)/(n-e))*t*(3-2*t)},smootherstep:function(t,e,n){return t<=e?0:t>=n?1:(t=(t-e)/(n-e))*t*t*(t*(6*t-15)+10)},randInt:function(t,e){return t+Math.floor(Math.random()*(e-t+1))},randFloat:function(t,e){return t+Math.random()*(e-t)},randFloatSpread:function(t){return t*(.5-Math.random())},seededRandom:function(t){void 0!==t&&(Te=t);let e=Te+=1831565813;return e=Math.imul(e^e>>>15,1|e),e^=e+Math.imul(e^e>>>7,61|e),((e^e>>>14)>>>0)/4294967296},degToRad:function(t){return t*Ee},radToDeg:function(t){return t*Ae},isPowerOfTwo:function(t){return!(t&t-1)&&0!==t},ceilPowerOfTwo:function(t){return Math.pow(2,Math.ceil(Math.log(t)/Math.LN2))},floorPowerOfTwo:function(t){return Math.pow(2,Math.floor(Math.log(t)/Math.LN2))},setQuaternionFromProperEuler:function(t,e,n,i,r){const s=Math.cos,a=Math.sin,o=s(n/2),l=a(n/2),h=s((e+i)/2),c=a((e+i)/2),q=s((e-i)/2),u=a((e-i)/2),d=s((i-e)/2),m=a((i-e)/2);switch(r){case"XYX":t.set(o*c,l*q,l*u,o*h);break;case"YZY":t.set(l*u,o*c,l*q,o*h);break;case"ZXZ":t.set(l*q,l*u,o*c,o*h);break;case"XZX":t.set(o*c,l*m,l*d,o*h);break;case"YXY":t.set(l*d,o*c,l*m,o*h);break;case"ZYZ":t.set(l*m,l*d,o*c,o*h);break;default:console.warn("THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: "+r)}},normalize:Le,denormalize:Pe};let ke=class t{constructor(e=0,n=0){t.prototype.isVector2=!0,this.x=e,this.y=n}get width(){return this.x}set width(t){this.x=t}get height(){return this.y}set height(t){this.y=t}set(t,e){return this.x=t,this.y=e,this}setScalar(t){return this.x=t,this.y=t,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setComponent(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;default:throw new Error("index is out of range: "+t)}return this}getComponent(t){switch(t){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+t)}}clone(){return new this.constructor(this.x,this.y)}copy(t){return this.x=t.x,this.y=t.y,this}add(t){return this.x+=t.x,this.y+=t.y,this}addScalar(t){return this.x+=t,this.y+=t,this}addVectors(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this}addScaledVector(t,e){return this.x+=t.x*e,this.y+=t.y*e,this}sub(t){return this.x-=t.x,this.y-=t.y,this}subScalar(t){return this.x-=t,this.y-=t,this}subVectors(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this}multiply(t){return this.x*=t.x,this.y*=t.y,this}multiplyScalar(t){return this.x*=t,this.y*=t,this}divide(t){return this.x/=t.x,this.y/=t.y,this}divideScalar(t){return this.multiplyScalar(1/t)}applyMatrix3(t){const e=this.x,n=this.y,i=t.elements;return this.x=i[0]*e+i[3]*n+i[6],this.y=i[1]*e+i[4]*n+i[7],this}min(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this}max(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this}clamp(t,e){return this.x=Re(this.x,t.x,e.x),this.y=Re(this.y,t.y,e.y),this}clampScalar(t,e){return this.x=Re(this.x,t,e),this.y=Re(this.y,t,e),this}clampLength(t,e){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Re(n,t,e))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this}negate(){return this.x=-this.x,this.y=-this.y,this}dot(t){return this.x*t.x+this.y*t.y}cross(t){return this.x*t.y-this.y*t.x}lengthSq(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)}normalize(){return this.divideScalar(this.length()||1)}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}angleTo(t){const e=Math.sqrt(this.lengthSq()*t.lengthSq());if(0===e)return Math.PI/2;const n=this.dot(t)/e;return Math.acos(Re(n,-1,1))}distanceTo(t){return Math.sqrt(this.distanceToSquared(t))}distanceToSquared(t){const e=this.x-t.x,n=this.y-t.y;return e*e+n*n}manhattanDistanceTo(t){return Math.abs(this.x-t.x)+Math.abs(this.y-t.y)}setLength(t){return this.normalize().multiplyScalar(t)}lerp(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this}lerpVectors(t,e,n){return this.x=t.x+(e.x-t.x)*n,this.y=t.y+(e.y-t.y)*n,this}equals(t){return t.x===this.x&&t.y===this.y}fromArray(t,e=0){return this.x=t[e],this.y=t[e+1],this}toArray(t=[],e=0){return t[e]=this.x,t[e+1]=this.y,t}fromBufferAttribute(t,e){return this.x=t.getX(e),this.y=t.getY(e),this}rotateAround(t,e){const n=Math.cos(e),i=Math.sin(e),r=this.x-t.x,s=this.y-t.y;return this.x=r*n-s*i+t.x,this.y=r*i+s*n+t.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}},De=class t{constructor(e,n,i,r,s,a,o,l,h){t.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1],void 0!==e&&this.set(e,n,i,r,s,a,o,l,h)}set(t,e,n,i,r,s,a,o,l){const h=this.elements;return h[0]=t,h[1]=i,h[2]=a,h[3]=e,h[4]=r,h[5]=o,h[6]=n,h[7]=s,h[8]=l,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(t){const e=this.elements,n=t.elements;return e[0]=n[0],e[1]=n[1],e[2]=n[2],e[3]=n[3],e[4]=n[4],e[5]=n[5],e[6]=n[6],e[7]=n[7],e[8]=n[8],this}extractBasis(t,e,n){return t.setFromMatrix3Column(this,0),e.setFromMatrix3Column(this,1),n.setFromMatrix3Column(this,2),this}setFromMatrix4(t){const e=t.elements;return this.set(e[0],e[4],e[8],e[1],e[5],e[9],e[2],e[6],e[10]),this}multiply(t){return this.multiplyMatrices(this,t)}premultiply(t){return this.multiplyMatrices(t,this)}multiplyMatrices(t,e){const n=t.elements,i=e.elements,r=this.elements,s=n[0],a=n[3],o=n[6],l=n[1],h=n[4],c=n[7],q=n[2],u=n[5],d=n[8],m=i[0],p=i[3],f=i[6],g=i[1],x=i[4],_=i[7],y=i[2],v=i[5],w=i[8];return r[0]=s*m+a*g+o*y,r[3]=s*p+a*x+o*v,r[6]=s*f+a*_+o*w,r[1]=l*m+h*g+c*y,r[4]=l*p+h*x+c*v,r[7]=l*f+h*_+c*w,r[2]=q*m+u*g+d*y,r[5]=q*p+u*x+d*v,r[8]=q*f+u*_+d*w,this}multiplyScalar(t){const e=this.elements;return e[0]*=t,e[3]*=t,e[6]*=t,e[1]*=t,e[4]*=t,e[7]*=t,e[2]*=t,e[5]*=t,e[8]*=t,this}determinant(){const t=this.elements,e=t[0],n=t[1],i=t[2],r=t[3],s=t[4],a=t[5],o=t[6],l=t[7],h=t[8];return e*s*h-e*a*l-n*r*h+n*a*o+i*r*l-i*s*o}invert(){const t=this.elements,e=t[0],n=t[1],i=t[2],r=t[3],s=t[4],a=t[5],o=t[6],l=t[7],h=t[8],c=h*s-a*l,q=a*o-h*r,u=l*r-s*o,d=e*c+n*q+i*u;if(0===d)return this.set(0,0,0,0,0,0,0,0,0);const m=1/d;return t[0]=c*m,t[1]=(i*l-h*n)*m,t[2]=(a*n-i*s)*m,t[3]=q*m,t[4]=(h*e-i*o)*m,t[5]=(i*r-a*e)*m,t[6]=u*m,t[7]=(n*o-l*e)*m,t[8]=(s*e-n*r)*m,this}transpose(){let t;const e=this.elements;return t=e[1],e[1]=e[3],e[3]=t,t=e[2],e[2]=e[6],e[6]=t,t=e[5],e[5]=e[7],e[7]=t,this}getNormalMatrix(t){return this.setFromMatrix4(t).invert().transpose()}transposeIntoArray(t){const e=this.elements;return t[0]=e[0],t[1]=e[3],t[2]=e[6],t[3]=e[1],t[4]=e[4],t[5]=e[7],t[6]=e[2],t[7]=e[5],t[8]=e[8],this}setUvTransform(t,e,n,i,r,s,a){const o=Math.cos(r),l=Math.sin(r);return this.set(n*o,n*l,-n*(o*s+l*a)+s+t,-i*l,i*o,-i*(-l*s+o*a)+a+e,0,0,1),this}scale(t,e){return this.premultiply(Ue.makeScale(t,e)),this}rotate(t){return this.premultiply(Ue.makeRotation(-t)),this}translate(t,e){return this.premultiply(Ue.makeTranslation(t,e)),this}makeTranslation(t,e){return t.isVector2?this.set(1,0,t.x,0,1,t.y,0,0,1):this.set(1,0,t,0,1,e,0,0,1),this}makeRotation(t){const e=Math.cos(t),n=Math.sin(t);return this.set(e,-n,0,n,e,0,0,0,1),this}makeScale(t,e){return this.set(t,0,0,0,e,0,0,0,1),this}equals(t){const e=this.elements,n=t.elements;for(let i=0;i<9;i++)if(e[i]!==n[i])return!1;return!0}fromArray(t,e=0){for(let n=0;n<9;n++)this.elements[n]=t[n+e];return this}toArray(t=[],e=0){const n=this.elements;return t[e]=n[0],t[e+1]=n[1],t[e+2]=n[2],t[e+3]=n[3],t[e+4]=n[4],t[e+5]=n[5],t[e+6]=n[6],t[e+7]=n[7],t[e+8]=n[8],t}clone(){return(new this.constructor).fromArray(this.elements)}};const Ue=new De;function Oe(t){for(let e=t.length-1;e>=0;--e)if(t[e]>=65535)return!0;return!1}const Fe={Int8Array:Int8Array,Uint8Array:Uint8Array,Uint8ClampedArray:Uint8ClampedArray,Int16Array:Int16Array,Uint16Array:Uint16Array,Int32Array:Int32Array,Uint32Array:Uint32Array,Float32Array:Float32Array,Float64Array:Float64Array};function Be(t,e){return new Fe[t](e)}function Ve(t){return document.createElementNS("http://www.w3.org/1999/xhtml",t)}function He(){const t=Ve("canvas");return t.style.display="block",t}const Ge={};function We(t){t in Ge||(Ge[t]=!0,console.warn(t))}const je=(new De).set(.4123908,.3575843,.1804808,.212639,.7151687,.0721923,.0193308,.1191948,.9505322),Xe=(new De).set(3.2409699,-1.5373832,-.4986108,-.9692436,1.8759675,.0415551,.0556301,-.203977,1.0569715);function Ye(){const t={enabled:!0,workingColorSpace:le,spaces:{},convert:function(t,e,n){return!1!==this.enabled&&e!==n&&e&&n?(this.spaces[e].transfer===ce&&(t.r=Je(t.r),t.g=Je(t.g),t.b=Je(t.b)),this.spaces[e].primaries!==this.spaces[n].primaries&&(t.applyMatrix3(this.spaces[e].toXYZ),t.applyMatrix3(this.spaces[n].fromXYZ)),this.spaces[n].transfer===ce&&(t.r=$e(t.r),t.g=$e(t.g),t.b=$e(t.b)),t):t},fromWorkingColorSpace:function(t,e){return this.convert(t,this.workingColorSpace,e)},toWorkingColorSpace:function(t,e){return this.convert(t,e,this.workingColorSpace)},getPrimaries:function(t){return this.spaces[t].primaries},getTransfer:function(t){return t===ae?he:this.spaces[t].transfer},getLuminanceCoefficients:function(t,e=this.workingColorSpace){return t.fromArray(this.spaces[e].luminanceCoefficients)},define:function(t){Object.assign(this.spaces,t)},_getMatrix:function(t,e,n){return t.copy(this.spaces[e].toXYZ).multiply(this.spaces[n].fromXYZ)},_getDrawingBufferColorSpace:function(t){return this.spaces[t].outputColorSpaceConfig.drawingBufferColorSpace},_getUnpackColorSpace:function(t=this.workingColorSpace){return this.spaces[t].workingColorSpaceConfig.unpackColorSpace}},e=[.64,.33,.3,.6,.15,.06],n=[.2126,.7152,.0722],i=[.3127,.329];return t.define({[le]:{primaries:e,whitePoint:i,transfer:he,toXYZ:je,fromXYZ:Xe,luminanceCoefficients:n,workingColorSpaceConfig:{unpackColorSpace:oe},outputColorSpaceConfig:{drawingBufferColorSpace:oe}},[oe]:{primaries:e,whitePoint:i,transfer:ce,toXYZ:je,fromXYZ:Xe,luminanceCoefficients:n,outputColorSpaceConfig:{drawingBufferColorSpace:oe}}}),t}const Ze=Ye();function Je(t){return t<.04045?.0773993808*t:Math.pow(.9478672986*t+.0521327014,2.4)}function $e(t){return t<.0031308?12.92*t:1.055*Math.pow(t,.41666)-.055}let Ke;class Qe{static getDataURL(t){if(/^data:/i.test(t.src))return t.src;if("undefined"==typeof HTMLCanvasElement)return t.src;let e;if(t instanceof HTMLCanvasElement)e=t;else{void 0===Ke&&(Ke=Ve("canvas")),Ke.width=t.width,Ke.height=t.height;const n=Ke.getContext("2d");t instanceof ImageData?n.putImageData(t,0,0):n.drawImage(t,0,0,t.width,t.height),e=Ke}return e.width>2048||e.height>2048?(console.warn("THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons",t),e.toDataURL("image/jpeg",.6)):e.toDataURL("image/png")}static sRGBToLinear(t){if("undefined"!=typeof HTMLImageElement&&t instanceof HTMLImageElement||"undefined"!=typeof HTMLCanvasElement&&t instanceof HTMLCanvasElement||"undefined"!=typeof ImageBitmap&&t instanceof ImageBitmap){const e=Ve("canvas");e.width=t.width,e.height=t.height;const n=e.getContext("2d");n.drawImage(t,0,0,t.width,t.height);const i=n.getImageData(0,0,t.width,t.height),r=i.data;for(let t=0;t<r.length;t++)r[t]=255*Je(r[t]/255);return n.putImageData(i,0,0),e}if(t.data){const e=t.data.slice(0);for(let t=0;t<e.length;t++)e instanceof Uint8Array||e instanceof Uint8ClampedArray?e[t]=Math.floor(255*Je(e[t]/255)):e[t]=Je(e[t]);return{data:e,width:t.width,height:t.height}}return console.warn("THREE.ImageUtils.sRGBToLinear(): Unsupported image type. No color space conversion applied."),t}}let tn=0;class en{constructor(t=null){this.isSource=!0,Object.defineProperty(this,"id",{value:tn++}),this.uuid=Ce(),this.data=t,this.dataReady=!0,this.version=0}set needsUpdate(t){!0===t&&this.version++}toJSON(t){const e=void 0===t||"string"==typeof t;if(!e&&void 0!==t.images[this.uuid])return t.images[this.uuid];const n={uuid:this.uuid,url:""},i=this.data;if(null!==i){let t;if(Array.isArray(i)){t=[];for(let e=0,n=i.length;e<n;e++)i[e].isDataTexture?t.push(nn(i[e].image)):t.push(nn(i[e]))}else t=nn(i);n.url=t}return e||(t.images[this.uuid]=n),n}}function nn(t){return"undefined"!=typeof HTMLImageElement&&t instanceof HTMLImageElement||"undefined"!=typeof HTMLCanvasElement&&t instanceof HTMLCanvasElement||"undefined"!=typeof ImageBitmap&&t instanceof ImageBitmap?Qe.getDataURL(t):t.data?{data:Array.from(t.data),width:t.width,height:t.height,type:t.data.constructor.name}:(console.warn("THREE.Texture: Unable to serialize Texture."),{})}let rn=0;class sn extends Me{constructor(t=sn.DEFAULT_IMAGE,e=sn.DEFAULT_MAPPING,n=1001,i=1001,r=1006,s=1008,a=1023,o=1009,l=sn.DEFAULT_ANISOTROPY,h=""){super(),this.isTexture=!0,Object.defineProperty(this,"id",{value:rn++}),this.uuid=Ce(),this.name="",this.source=new en(t),this.mipmaps=[],this.mapping=e,this.channel=0,this.wrapS=n,this.wrapT=i,this.magFilter=r,this.minFilter=s,this.anisotropy=l,this.format=a,this.internalFormat=null,this.type=o,this.offset=new ke(0,0),this.repeat=new ke(1,1),this.center=new ke(0,0),this.rotation=0,this.matrixAutoUpdate=!0,this.matrix=new De,this.generateMipmaps=!0,this.premultiplyAlpha=!1,this.flipY=!0,this.unpackAlignment=4,this.colorSpace=h,this.userData={},this.version=0,this.onUpdate=null,this.renderTarget=null,this.isRenderTargetTexture=!1,this.pmremVersion=0}get image(){return this.source.data}set image(t=null){this.source.data=t}updateMatrix(){this.matrix.setUvTransform(this.offset.x,this.offset.y,this.repeat.x,this.repeat.y,this.rotation,this.center.x,this.center.y)}clone(){return(new this.constructor).copy(this)}copy(t){return this.name=t.name,this.source=t.source,this.mipmaps=t.mipmaps.slice(0),this.mapping=t.mapping,this.channel=t.channel,this.wrapS=t.wrapS,this.wrapT=t.wrapT,this.magFilter=t.magFilter,this.minFilter=t.minFilter,this.anisotropy=t.anisotropy,this.format=t.format,this.internalFormat=t.internalFormat,this.type=t.type,this.offset.copy(t.offset),this.repeat.copy(t.repeat),this.center.copy(t.center),this.rotation=t.rotation,this.matrixAutoUpdate=t.matrixAutoUpdate,this.matrix.copy(t.matrix),this.generateMipmaps=t.generateMipmaps,this.premultiplyAlpha=t.premultiplyAlpha,this.flipY=t.flipY,this.unpackAlignment=t.unpackAlignment,this.colorSpace=t.colorSpace,this.renderTarget=t.renderTarget,this.isRenderTargetTexture=t.isRenderTargetTexture,this.userData=JSON.parse(JSON.stringify(t.userData)),this.needsUpdate=!0,this}toJSON(t){const e=void 0===t||"string"==typeof t;if(!e&&void 0!==t.textures[this.uuid])return t.textures[this.uuid];const n={metadata:{version:4.6,type:"Texture",generator:"Texture.toJSON"},uuid:this.uuid,name:this.name,image:this.source.toJSON(t).uuid,mapping:this.mapping,channel:this.channel,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,internalFormat:this.internalFormat,type:this.type,colorSpace:this.colorSpace,minFilter:this.minFilter,magFilter:this.magFilter,anisotropy:this.anisotropy,flipY:this.flipY,generateMipmaps:this.generateMipmaps,premultiplyAlpha:this.premultiplyAlpha,unpackAlignment:this.unpackAlignment};return Object.keys(this.userData).length>0&&(n.userData=this.userData),e||(t.textures[this.uuid]=n),n}dispose(){this.dispatchEvent({type:"dispose"})}transformUv(t){if(this.mapping!==N)return t;if(t.applyMatrix3(this.matrix),t.x<0||t.x>1)switch(this.wrapS){case B:t.x=t.x-Math.floor(t.x);break;case V:t.x=t.x<0?0:1;break;case H:1===Math.abs(Math.floor(t.x)%2)?t.x=Math.ceil(t.x)-t.x:t.x=t.x-Math.floor(t.x)}if(t.y<0||t.y>1)switch(this.wrapT){case B:t.y=t.y-Math.floor(t.y);break;case V:t.y=t.y<0?0:1;break;case H:1===Math.abs(Math.floor(t.y)%2)?t.y=Math.ceil(t.y)-t.y:t.y=t.y-Math.floor(t.y)}return this.flipY&&(t.y=1-t.y),t}set needsUpdate(t){!0===t&&(this.version++,this.source.needsUpdate=!0)}set needsPMREMUpdate(t){!0===t&&this.pmremVersion++}}sn.DEFAULT_IMAGE=null,sn.DEFAULT_MAPPING=N,sn.DEFAULT_ANISOTROPY=1;let an=class t{constructor(e=0,n=0,i=0,r=1){t.prototype.isVector4=!0,this.x=e,this.y=n,this.z=i,this.w=r}get width(){return this.z}set width(t){this.z=t}get height(){return this.w}set height(t){this.w=t}set(t,e,n,i){return this.x=t,this.y=e,this.z=n,this.w=i,this}setScalar(t){return this.x=t,this.y=t,this.z=t,this.w=t,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setZ(t){return this.z=t,this}setW(t){return this.w=t,this}setComponent(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;case 2:this.z=e;break;case 3:this.w=e;break;default:throw new Error("index is out of range: "+t)}return this}getComponent(t){switch(t){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: "+t)}}clone(){return new this.constructor(this.x,this.y,this.z,this.w)}copy(t){return this.x=t.x,this.y=t.y,this.z=t.z,this.w=void 0!==t.w?t.w:1,this}add(t){return this.x+=t.x,this.y+=t.y,this.z+=t.z,this.w+=t.w,this}addScalar(t){return this.x+=t,this.y+=t,this.z+=t,this.w+=t,this}addVectors(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this.z=t.z+e.z,this.w=t.w+e.w,this}addScaledVector(t,e){return this.x+=t.x*e,this.y+=t.y*e,this.z+=t.z*e,this.w+=t.w*e,this}sub(t){return this.x-=t.x,this.y-=t.y,this.z-=t.z,this.w-=t.w,this}subScalar(t){return this.x-=t,this.y-=t,this.z-=t,this.w-=t,this}subVectors(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this.z=t.z-e.z,this.w=t.w-e.w,this}multiply(t){return this.x*=t.x,this.y*=t.y,this.z*=t.z,this.w*=t.w,this}multiplyScalar(t){return this.x*=t,this.y*=t,this.z*=t,this.w*=t,this}applyMatrix4(t){const e=this.x,n=this.y,i=this.z,r=this.w,s=t.elements;return this.x=s[0]*e+s[4]*n+s[8]*i+s[12]*r,this.y=s[1]*e+s[5]*n+s[9]*i+s[13]*r,this.z=s[2]*e+s[6]*n+s[10]*i+s[14]*r,this.w=s[3]*e+s[7]*n+s[11]*i+s[15]*r,this}divide(t){return this.x/=t.x,this.y/=t.y,this.z/=t.z,this.w/=t.w,this}divideScalar(t){return this.multiplyScalar(1/t)}setAxisAngleFromQuaternion(t){this.w=2*Math.acos(t.w);const e=Math.sqrt(1-t.w*t.w);return e<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=t.x/e,this.y=t.y/e,this.z=t.z/e),this}setAxisAngleFromRotationMatrix(t){let e,n,i,r;const s=.01,a=.1,o=t.elements,l=o[0],h=o[4],c=o[8],q=o[1],u=o[5],d=o[9],m=o[2],p=o[6],f=o[10];if(Math.abs(h-q)<s&&Math.abs(c-m)<s&&Math.abs(d-p)<s){if(Math.abs(h+q)<a&&Math.abs(c+m)<a&&Math.abs(d+p)<a&&Math.abs(l+u+f-3)<a)return this.set(1,0,0,0),this;e=Math.PI;const t=(l+1)/2,o=(u+1)/2,g=(f+1)/2,x=(h+q)/4,_=(c+m)/4,y=(d+p)/4;return t>o&&t>g?t<s?(n=0,i=.707106781,r=.707106781):(n=Math.sqrt(t),i=x/n,r=_/n):o>g?o<s?(n=.707106781,i=0,r=.707106781):(i=Math.sqrt(o),n=x/i,r=y/i):g<s?(n=.707106781,i=.707106781,r=0):(r=Math.sqrt(g),n=_/r,i=y/r),this.set(n,i,r,e),this}let g=Math.sqrt((p-d)*(p-d)+(c-m)*(c-m)+(q-h)*(q-h));return Math.abs(g)<.001&&(g=1),this.x=(p-d)/g,this.y=(c-m)/g,this.z=(q-h)/g,this.w=Math.acos((l+u+f-1)/2),this}setFromMatrixPosition(t){const e=t.elements;return this.x=e[12],this.y=e[13],this.z=e[14],this.w=e[15],this}min(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this.z=Math.min(this.z,t.z),this.w=Math.min(this.w,t.w),this}max(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this.z=Math.max(this.z,t.z),this.w=Math.max(this.w,t.w),this}clamp(t,e){return this.x=Re(this.x,t.x,e.x),this.y=Re(this.y,t.y,e.y),this.z=Re(this.z,t.z,e.z),this.w=Re(this.w,t.w,e.w),this}clampScalar(t,e){return this.x=Re(this.x,t,e),this.y=Re(this.y,t,e),this.z=Re(this.z,t,e),this.w=Re(this.w,t,e),this}clampLength(t,e){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Re(n,t,e))}floor(){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(){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(){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(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this.w=Math.trunc(this.w),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-this.w,this}dot(t){return this.x*t.x+this.y*t.y+this.z*t.z+this.w*t.w}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)}normalize(){return this.divideScalar(this.length()||1)}setLength(t){return this.normalize().multiplyScalar(t)}lerp(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this.z+=(t.z-this.z)*e,this.w+=(t.w-this.w)*e,this}lerpVectors(t,e,n){return this.x=t.x+(e.x-t.x)*n,this.y=t.y+(e.y-t.y)*n,this.z=t.z+(e.z-t.z)*n,this.w=t.w+(e.w-t.w)*n,this}equals(t){return t.x===this.x&&t.y===this.y&&t.z===this.z&&t.w===this.w}fromArray(t,e=0){return this.x=t[e],this.y=t[e+1],this.z=t[e+2],this.w=t[e+3],this}toArray(t=[],e=0){return t[e]=this.x,t[e+1]=this.y,t[e+2]=this.z,t[e+3]=this.w,t}fromBufferAttribute(t,e){return this.x=t.getX(e),this.y=t.getY(e),this.z=t.getZ(e),this.w=t.getW(e),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this.w=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z,yield this.w}};class on extends Me{constructor(t=1,e=1,n={}){super(),this.isRenderTarget=!0,this.width=t,this.height=e,this.depth=1,this.scissor=new an(0,0,t,e),this.scissorTest=!1,this.viewport=new an(0,0,t,e);const i={width:t,height:e,depth:1};n=Object.assign({generateMipmaps:!1,internalFormat:null,minFilter:X,depthBuffer:!0,stencilBuffer:!1,resolveDepthBuffer:!0,resolveStencilBuffer:!0,depthTexture:null,samples:0,count:1},n);const r=new sn(i,n.mapping,n.wrapS,n.wrapT,n.magFilter,n.minFilter,n.format,n.type,n.anisotropy,n.colorSpace);r.flipY=!1,r.generateMipmaps=n.generateMipmaps,r.internalFormat=n.internalFormat,this.textures=[];const s=n.count;for(let a=0;a<s;a++)this.textures[a]=r.clone(),this.textures[a].isRenderTargetTexture=!0,this.textures[a].renderTarget=this;this.depthBuffer=n.depthBuffer,this.stencilBuffer=n.stencilBuffer,this.resolveDepthBuffer=n.resolveDepthBuffer,this.resolveStencilBuffer=n.resolveStencilBuffer,this._depthTexture=null,this.depthTexture=n.depthTexture,this.samples=n.samples}get texture(){return this.textures[0]}set texture(t){this.textures[0]=t}set depthTexture(t){null!==this._depthTexture&&(this._depthTexture.renderTarget=null),null!==t&&(t.renderTarget=this),this._depthTexture=t}get depthTexture(){return this._depthTexture}setSize(t,e,n=1){if(this.width!==t||this.height!==e||this.depth!==n){this.width=t,this.height=e,this.depth=n;for(let i=0,r=this.textures.length;i<r;i++)this.textures[i].image.width=t,this.textures[i].image.height=e,this.textures[i].image.depth=n;this.dispose()}this.viewport.set(0,0,t,e),this.scissor.set(0,0,t,e)}clone(){return(new this.constructor).copy(this)}copy(t){this.width=t.width,this.height=t.height,this.depth=t.depth,this.scissor.copy(t.scissor),this.scissorTest=t.scissorTest,this.viewport.copy(t.viewport),this.textures.length=0;for(let n=0,i=t.textures.length;n<i;n++)this.textures[n]=t.textures[n].clone(),this.textures[n].isRenderTargetTexture=!0,this.textures[n].renderTarget=this;const e=Object.assign({},t.texture.image);return this.texture.source=new en(e),this.depthBuffer=t.depthBuffer,this.stencilBuffer=t.stencilBuffer,this.resolveDepthBuffer=t.resolveDepthBuffer,this.resolveStencilBuffer=t.resolveStencilBuffer,null!==t.depthTexture&&(this.depthTexture=t.depthTexture.clone()),this.samples=t.samples,this}dispose(){this.dispatchEvent({type:"dispose"})}}class ln extends on{constructor(t=1,e=1,n={}){super(t,e,n),this.isWebGLRenderTarget=!0}}class hn extends sn{constructor(t=null,e=1,n=1,i=1){super(null),this.isDataArrayTexture=!0,this.image={data:t,width:e,height:n,depth:i},this.magFilter=G,this.minFilter=G,this.wrapR=V,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1,this.layerUpdates=new Set}addLayerUpdate(t){this.layerUpdates.add(t)}clearLayerUpdates(){this.layerUpdates.clear()}}class cn extends sn{constructor(t=null,e=1,n=1,i=1){super(null),this.isData3DTexture=!0,this.image={data:t,width:e,height:n,depth:i},this.magFilter=G,this.minFilter=G,this.wrapR=V,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}}let qn=class{constructor(t=0,e=0,n=0,i=1){this.isQuaternion=!0,this._x=t,this._y=e,this._z=n,this._w=i}static slerpFlat(t,e,n,i,r,s,a){let o=n[i+0],l=n[i+1],h=n[i+2],c=n[i+3];const q=r[s+0],u=r[s+1],d=r[s+2],m=r[s+3];if(0===a)return t[e+0]=o,t[e+1]=l,t[e+2]=h,void(t[e+3]=c);if(1===a)return t[e+0]=q,t[e+1]=u,t[e+2]=d,void(t[e+3]=m);if(c!==m||o!==q||l!==u||h!==d){let t=1-a;const e=o*q+l*u+h*d+c*m,n=e>=0?1:-1,i=1-e*e;if(i>Number.EPSILON){const r=Math.sqrt(i),s=Math.atan2(r,e*n);t=Math.sin(t*s)/r,a=Math.sin(a*s)/r}const r=a*n;if(o=o*t+q*r,l=l*t+u*r,h=h*t+d*r,c=c*t+m*r,t===1-a){const t=1/Math.sqrt(o*o+l*l+h*h+c*c);o*=t,l*=t,h*=t,c*=t}}t[e]=o,t[e+1]=l,t[e+2]=h,t[e+3]=c}static multiplyQuaternionsFlat(t,e,n,i,r,s){const a=n[i],o=n[i+1],l=n[i+2],h=n[i+3],c=r[s],q=r[s+1],u=r[s+2],d=r[s+3];return t[e]=a*d+h*c+o*u-l*q,t[e+1]=o*d+h*q+l*c-a*u,t[e+2]=l*d+h*u+a*q-o*c,t[e+3]=h*d-a*c-o*q-l*u,t}get x(){return this._x}set x(t){this._x=t,this._onChangeCallback()}get y(){return this._y}set y(t){this._y=t,this._onChangeCallback()}get z(){return this._z}set z(t){this._z=t,this._onChangeCallback()}get w(){return this._w}set w(t){this._w=t,this._onChangeCallback()}set(t,e,n,i){return this._x=t,this._y=e,this._z=n,this._w=i,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._w)}copy(t){return this._x=t.x,this._y=t.y,this._z=t.z,this._w=t.w,this._onChangeCallback(),this}setFromEuler(t,e=!0){const n=t._x,i=t._y,r=t._z,s=t._order,a=Math.cos,o=Math.sin,l=a(n/2),h=a(i/2),c=a(r/2),q=o(n/2),u=o(i/2),d=o(r/2);switch(s){case"XYZ":this._x=q*h*c+l*u*d,this._y=l*u*c-q*h*d,this._z=l*h*d+q*u*c,this._w=l*h*c-q*u*d;break;case"YXZ":this._x=q*h*c+l*u*d,this._y=l*u*c-q*h*d,this._z=l*h*d-q*u*c,this._w=l*h*c+q*u*d;break;case"ZXY":this._x=q*h*c-l*u*d,this._y=l*u*c+q*h*d,this._z=l*h*d+q*u*c,this._w=l*h*c-q*u*d;break;case"ZYX":this._x=q*h*c-l*u*d,this._y=l*u*c+q*h*d,this._z=l*h*d-q*u*c,this._w=l*h*c+q*u*d;break;case"YZX":this._x=q*h*c+l*u*d,this._y=l*u*c+q*h*d,this._z=l*h*d-q*u*c,this._w=l*h*c-q*u*d;break;case"XZY":this._x=q*h*c-l*u*d,this._y=l*u*c-q*h*d,this._z=l*h*d+q*u*c,this._w=l*h*c+q*u*d;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+s)}return!0===e&&this._onChangeCallback(),this}setFromAxisAngle(t,e){const n=e/2,i=Math.sin(n);return this._x=t.x*i,this._y=t.y*i,this._z=t.z*i,this._w=Math.cos(n),this._onChangeCallback(),this}setFromRotationMatrix(t){const e=t.elements,n=e[0],i=e[4],r=e[8],s=e[1],a=e[5],o=e[9],l=e[2],h=e[6],c=e[10],q=n+a+c;if(q>0){const t=.5/Math.sqrt(q+1);this._w=.25/t,this._x=(h-o)*t,this._y=(r-l)*t,this._z=(s-i)*t}else if(n>a&&n>c){const t=2*Math.sqrt(1+n-a-c);this._w=(h-o)/t,this._x=.25*t,this._y=(i+s)/t,this._z=(r+l)/t}else if(a>c){const t=2*Math.sqrt(1+a-n-c);this._w=(r-l)/t,this._x=(i+s)/t,this._y=.25*t,this._z=(o+h)/t}else{const t=2*Math.sqrt(1+c-n-a);this._w=(s-i)/t,this._x=(r+l)/t,this._y=(o+h)/t,this._z=.25*t}return this._onChangeCallback(),this}setFromUnitVectors(t,e){let n=t.dot(e)+1;return n<Number.EPSILON?(n=0,Math.abs(t.x)>Math.abs(t.z)?(this._x=-t.y,this._y=t.x,this._z=0,this._w=n):(this._x=0,this._y=-t.z,this._z=t.y,this._w=n)):(this._x=t.y*e.z-t.z*e.y,this._y=t.z*e.x-t.x*e.z,this._z=t.x*e.y-t.y*e.x,this._w=n),this.normalize()}angleTo(t){return 2*Math.acos(Math.abs(Re(this.dot(t),-1,1)))}rotateTowards(t,e){const n=this.angleTo(t);if(0===n)return this;const i=Math.min(1,e/n);return this.slerp(t,i),this}identity(){return this.set(0,0,0,1)}invert(){return this.conjugate()}conjugate(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this}dot(t){return this._x*t._x+this._y*t._y+this._z*t._z+this._w*t._w}lengthSq(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}normalize(){let t=this.length();return 0===t?(this._x=0,this._y=0,this._z=0,this._w=1):(t=1/t,this._x=this._x*t,this._y=this._y*t,this._z=this._z*t,this._w=this._w*t),this._onChangeCallback(),this}multiply(t){return this.multiplyQuaternions(this,t)}premultiply(t){return this.multiplyQuaternions(t,this)}multiplyQuaternions(t,e){const n=t._x,i=t._y,r=t._z,s=t._w,a=e._x,o=e._y,l=e._z,h=e._w;return this._x=n*h+s*a+i*l-r*o,this._y=i*h+s*o+r*a-n*l,this._z=r*h+s*l+n*o-i*a,this._w=s*h-n*a-i*o-r*l,this._onChangeCallback(),this}slerp(t,e){if(0===e)return this;if(1===e)return this.copy(t);const n=this._x,i=this._y,r=this._z,s=this._w;let a=s*t._w+n*t._x+i*t._y+r*t._z;if(a<0?(this._w=-t._w,this._x=-t._x,this._y=-t._y,this._z=-t._z,a=-a):this.copy(t),a>=1)return this._w=s,this._x=n,this._y=i,this._z=r,this;const o=1-a*a;if(o<=Number.EPSILON){const t=1-e;return this._w=t*s+e*this._w,this._x=t*n+e*this._x,this._y=t*i+e*this._y,this._z=t*r+e*this._z,this.normalize(),this}const l=Math.sqrt(o),h=Math.atan2(l,a),c=Math.sin((1-e)*h)/l,q=Math.sin(e*h)/l;return this._w=s*c+this._w*q,this._x=n*c+this._x*q,this._y=i*c+this._y*q,this._z=r*c+this._z*q,this._onChangeCallback(),this}slerpQuaternions(t,e,n){return this.copy(t).slerp(e,n)}random(){const t=2*Math.PI*Math.random(),e=2*Math.PI*Math.random(),n=Math.random(),i=Math.sqrt(1-n),r=Math.sqrt(n);return this.set(i*Math.sin(t),i*Math.cos(t),r*Math.sin(e),r*Math.cos(e))}equals(t){return t._x===this._x&&t._y===this._y&&t._z===this._z&&t._w===this._w}fromArray(t,e=0){return this._x=t[e],this._y=t[e+1],this._z=t[e+2],this._w=t[e+3],this._onChangeCallback(),this}toArray(t=[],e=0){return t[e]=this._x,t[e+1]=this._y,t[e+2]=this._z,t[e+3]=this._w,t}fromBufferAttribute(t,e){return this._x=t.getX(e),this._y=t.getY(e),this._z=t.getZ(e),this._w=t.getW(e),this._onChangeCallback(),this}toJSON(){return this.toArray()}_onChange(t){return this._onChangeCallback=t,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}},un=class t{constructor(e=0,n=0,i=0){t.prototype.isVector3=!0,this.x=e,this.y=n,this.z=i}set(t,e,n){return void 0===n&&(n=this.z),this.x=t,this.y=e,this.z=n,this}setScalar(t){return this.x=t,this.y=t,this.z=t,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setZ(t){return this.z=t,this}setComponent(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;case 2:this.z=e;break;default:throw new Error("index is out of range: "+t)}return this}getComponent(t){switch(t){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+t)}}clone(){return new this.constructor(this.x,this.y,this.z)}copy(t){return this.x=t.x,this.y=t.y,this.z=t.z,this}add(t){return this.x+=t.x,this.y+=t.y,this.z+=t.z,this}addScalar(t){return this.x+=t,this.y+=t,this.z+=t,this}addVectors(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this.z=t.z+e.z,this}addScaledVector(t,e){return this.x+=t.x*e,this.y+=t.y*e,this.z+=t.z*e,this}sub(t){return this.x-=t.x,this.y-=t.y,this.z-=t.z,this}subScalar(t){return this.x-=t,this.y-=t,this.z-=t,this}subVectors(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this.z=t.z-e.z,this}multiply(t){return this.x*=t.x,this.y*=t.y,this.z*=t.z,this}multiplyScalar(t){return this.x*=t,this.y*=t,this.z*=t,this}multiplyVectors(t,e){return this.x=t.x*e.x,this.y=t.y*e.y,this.z=t.z*e.z,this}applyEuler(t){return this.applyQuaternion(mn.setFromEuler(t))}applyAxisAngle(t,e){return this.applyQuaternion(mn.setFromAxisAngle(t,e))}applyMatrix3(t){const e=this.x,n=this.y,i=this.z,r=t.elements;return this.x=r[0]*e+r[3]*n+r[6]*i,this.y=r[1]*e+r[4]*n+r[7]*i,this.z=r[2]*e+r[5]*n+r[8]*i,this}applyNormalMatrix(t){return this.applyMatrix3(t).normalize()}applyMatrix4(t){const e=this.x,n=this.y,i=this.z,r=t.elements,s=1/(r[3]*e+r[7]*n+r[11]*i+r[15]);return this.x=(r[0]*e+r[4]*n+r[8]*i+r[12])*s,this.y=(r[1]*e+r[5]*n+r[9]*i+r[13])*s,this.z=(r[2]*e+r[6]*n+r[10]*i+r[14])*s,this}applyQuaternion(t){const e=this.x,n=this.y,i=this.z,r=t.x,s=t.y,a=t.z,o=t.w,l=2*(s*i-a*n),h=2*(a*e-r*i),c=2*(r*n-s*e);return this.x=e+o*l+s*c-a*h,this.y=n+o*h+a*l-r*c,this.z=i+o*c+r*h-s*l,this}project(t){return this.applyMatrix4(t.matrixWorldInverse).applyMatrix4(t.projectionMatrix)}unproject(t){return this.applyMatrix4(t.projectionMatrixInverse).applyMatrix4(t.matrixWorld)}transformDirection(t){const e=this.x,n=this.y,i=this.z,r=t.elements;return this.x=r[0]*e+r[4]*n+r[8]*i,this.y=r[1]*e+r[5]*n+r[9]*i,this.z=r[2]*e+r[6]*n+r[10]*i,this.normalize()}divide(t){return this.x/=t.x,this.y/=t.y,this.z/=t.z,this}divideScalar(t){return this.multiplyScalar(1/t)}min(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this.z=Math.min(this.z,t.z),this}max(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this.z=Math.max(this.z,t.z),this}clamp(t,e){return this.x=Re(this.x,t.x,e.x),this.y=Re(this.y,t.y,e.y),this.z=Re(this.z,t.z,e.z),this}clampScalar(t,e){return this.x=Re(this.x,t,e),this.y=Re(this.y,t,e),this.z=Re(this.z,t,e),this}clampLength(t,e){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Re(n,t,e))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(t){return this.x*t.x+this.y*t.y+this.z*t.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(t){return this.normalize().multiplyScalar(t)}lerp(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this.z+=(t.z-this.z)*e,this}lerpVectors(t,e,n){return this.x=t.x+(e.x-t.x)*n,this.y=t.y+(e.y-t.y)*n,this.z=t.z+(e.z-t.z)*n,this}cross(t){return this.crossVectors(this,t)}crossVectors(t,e){const n=t.x,i=t.y,r=t.z,s=e.x,a=e.y,o=e.z;return this.x=i*o-r*a,this.y=r*s-n*o,this.z=n*a-i*s,this}projectOnVector(t){const e=t.lengthSq();if(0===e)return this.set(0,0,0);const n=t.dot(this)/e;return this.copy(t).multiplyScalar(n)}projectOnPlane(t){return dn.copy(this).projectOnVector(t),this.sub(dn)}reflect(t){return this.sub(dn.copy(t).multiplyScalar(2*this.dot(t)))}angleTo(t){const e=Math.sqrt(this.lengthSq()*t.lengthSq());if(0===e)return Math.PI/2;const n=this.dot(t)/e;return Math.acos(Re(n,-1,1))}distanceTo(t){return Math.sqrt(this.distanceToSquared(t))}distanceToSquared(t){const e=this.x-t.x,n=this.y-t.y,i=this.z-t.z;return e*e+n*n+i*i}manhattanDistanceTo(t){return Math.abs(this.x-t.x)+Math.abs(this.y-t.y)+Math.abs(this.z-t.z)}setFromSpherical(t){return this.setFromSphericalCoords(t.radius,t.phi,t.theta)}setFromSphericalCoords(t,e,n){const i=Math.sin(e)*t;return this.x=i*Math.sin(n),this.y=Math.cos(e)*t,this.z=i*Math.cos(n),this}setFromCylindrical(t){return this.setFromCylindricalCoords(t.radius,t.theta,t.y)}setFromCylindricalCoords(t,e,n){return this.x=t*Math.sin(e),this.y=n,this.z=t*Math.cos(e),this}setFromMatrixPosition(t){const e=t.elements;return this.x=e[12],this.y=e[13],this.z=e[14],this}setFromMatrixScale(t){const e=this.setFromMatrixColumn(t,0).length(),n=this.setFromMatrixColumn(t,1).length(),i=this.setFromMatrixColumn(t,2).length();return this.x=e,this.y=n,this.z=i,this}setFromMatrixColumn(t,e){return this.fromArray(t.elements,4*e)}setFromMatrix3Column(t,e){return this.fromArray(t.elements,3*e)}setFromEuler(t){return this.x=t._x,this.y=t._y,this.z=t._z,this}setFromColor(t){return this.x=t.r,this.y=t.g,this.z=t.b,this}equals(t){return t.x===this.x&&t.y===this.y&&t.z===this.z}fromArray(t,e=0){return this.x=t[e],this.y=t[e+1],this.z=t[e+2],this}toArray(t=[],e=0){return t[e]=this.x,t[e+1]=this.y,t[e+2]=this.z,t}fromBufferAttribute(t,e){return this.x=t.getX(e),this.y=t.getY(e),this.z=t.getZ(e),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){const t=Math.random()*Math.PI*2,e=2*Math.random()-1,n=Math.sqrt(1-e*e);return this.x=n*Math.cos(t),this.y=e,this.z=n*Math.sin(t),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}};const dn=new un,mn=new qn;class pn{constructor(t=new un(1/0,1/0,1/0),e=new un(-1/0,-1/0,-1/0)){this.isBox3=!0,this.min=t,this.max=e}set(t,e){return this.min.copy(t),this.max.copy(e),this}setFromArray(t){this.makeEmpty();for(let e=0,n=t.length;e<n;e+=3)this.expandByPoint(gn.fromArray(t,e));return this}setFromBufferAttribute(t){this.makeEmpty();for(let e=0,n=t.count;e<n;e++)this.expandByPoint(gn.fromBufferAttribute(t,e));return this}setFromPoints(t){this.makeEmpty();for(let e=0,n=t.length;e<n;e++)this.expandByPoint(t[e]);return this}setFromCenterAndSize(t,e){const n=gn.copy(e).multiplyScalar(.5);return this.min.copy(t).sub(n),this.max.copy(t).add(n),this}setFromObject(t,e=!1){return this.makeEmpty(),this.expandByObject(t,e)}clone(){return(new this.constructor).copy(this)}copy(t){return this.min.copy(t.min),this.max.copy(t.max),this}makeEmpty(){return this.min.x=this.min.y=this.min.z=1/0,this.max.x=this.max.y=this.max.z=-1/0,this}isEmpty(){return this.max.x<this.min.x||this.max.y<this.min.y||this.max.z<this.min.z}getCenter(t){return this.isEmpty()?t.set(0,0,0):t.addVectors(this.min,this.max).multiplyScalar(.5)}getSize(t){return this.isEmpty()?t.set(0,0,0):t.subVectors(this.max,this.min)}expandByPoint(t){return this.min.min(t),this.max.max(t),this}expandByVector(t){return this.min.sub(t),this.max.add(t),this}expandByScalar(t){return this.min.addScalar(-t),this.max.addScalar(t),this}expandByObject(t,e=!1){t.updateWorldMatrix(!1,!1);const n=t.geometry;if(void 0!==n){const i=n.getAttribute("position");if(!0===e&&void 0!==i&&!0!==t.isInstancedMesh)for(let e=0,n=i.count;e<n;e++)!0===t.isMesh?t.getVertexPosition(e,gn):gn.fromBufferAttribute(i,e),gn.applyMatrix4(t.matrixWorld),this.expandByPoint(gn);else void 0!==t.boundingBox?(null===t.boundingBox&&t.computeBoundingBox(),xn.copy(t.boundingBox)):(null===n.boundingBox&&n.computeBoundingBox(),xn.copy(n.boundingBox)),xn.applyMatrix4(t.matrixWorld),this.union(xn)}const i=t.children;for(let r=0,s=i.length;r<s;r++)this.expandByObject(i[r],e);return this}containsPoint(t){return t.x>=this.min.x&&t.x<=this.max.x&&t.y>=this.min.y&&t.y<=this.max.y&&t.z>=this.min.z&&t.z<=this.max.z}containsBox(t){return this.min.x<=t.min.x&&t.max.x<=this.max.x&&this.min.y<=t.min.y&&t.max.y<=this.max.y&&this.min.z<=t.min.z&&t.max.z<=this.max.z}getParameter(t,e){return e.set((t.x-this.min.x)/(this.max.x-this.min.x),(t.y-this.min.y)/(this.max.y-this.min.y),(t.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(t){return t.max.x>=this.min.x&&t.min.x<=this.max.x&&t.max.y>=this.min.y&&t.min.y<=this.max.y&&t.max.z>=this.min.z&&t.min.z<=this.max.z}intersectsSphere(t){return this.clampPoint(t.center,gn),gn.distanceToSquared(t.center)<=t.radius*t.radius}intersectsPlane(t){let e,n;return t.normal.x>0?(e=t.normal.x*this.min.x,n=t.normal.x*this.max.x):(e=t.normal.x*this.max.x,n=t.normal.x*this.min.x),t.normal.y>0?(e+=t.normal.y*this.min.y,n+=t.normal.y*this.max.y):(e+=t.normal.y*this.max.y,n+=t.normal.y*this.min.y),t.normal.z>0?(e+=t.normal.z*this.min.z,n+=t.normal.z*this.max.z):(e+=t.normal.z*this.max.z,n+=t.normal.z*this.min.z),e<=-t.constant&&n>=-t.constant}intersectsTriangle(t){if(this.isEmpty())return!1;this.getCenter(Sn),Tn.subVectors(this.max,Sn),_n.subVectors(t.a,Sn),yn.subVectors(t.b,Sn),vn.subVectors(t.c,Sn),wn.subVectors(yn,_n),bn.subVectors(vn,yn),Mn.subVectors(_n,vn);let e=[0,-wn.z,wn.y,0,-bn.z,bn.y,0,-Mn.z,Mn.y,wn.z,0,-wn.x,bn.z,0,-bn.x,Mn.z,0,-Mn.x,-wn.y,wn.x,0,-bn.y,bn.x,0,-Mn.y,Mn.x,0];return!!Cn(e,_n,yn,vn,Tn)&&(e=[1,0,0,0,1,0,0,0,1],!!Cn(e,_n,yn,vn,Tn)&&(En.crossVectors(wn,bn),e=[En.x,En.y,En.z],Cn(e,_n,yn,vn,Tn)))}clampPoint(t,e){return e.copy(t).clamp(this.min,this.max)}distanceToPoint(t){return this.clampPoint(t,gn).distanceTo(t)}getBoundingSphere(t){return this.isEmpty()?t.makeEmpty():(this.getCenter(t.center),t.radius=.5*this.getSize(gn).length()),t}intersect(t){return this.min.max(t.min),this.max.min(t.max),this.isEmpty()&&this.makeEmpty(),this}union(t){return this.min.min(t.min),this.max.max(t.max),this}applyMatrix4(t){return this.isEmpty()||(fn[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(t),fn[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(t),fn[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(t),fn[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(t),fn[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(t),fn[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(t),fn[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(t),fn[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(t),this.setFromPoints(fn)),this}translate(t){return this.min.add(t),this.max.add(t),this}equals(t){return t.min.equals(this.min)&&t.max.equals(this.max)}}const fn=[new un,new un,new un,new un,new un,new un,new un,new un],gn=new un,xn=new pn,_n=new un,yn=new un,vn=new un,wn=new un,bn=new un,Mn=new un,Sn=new un,Tn=new un,En=new un,An=new un;function Cn(t,e,n,i,r){for(let s=0,a=t.length-3;s<=a;s+=3){An.fromArray(t,s);const a=r.x*Math.abs(An.x)+r.y*Math.abs(An.y)+r.z*Math.abs(An.z),o=e.dot(An),l=n.dot(An),h=i.dot(An);if(Math.max(-Math.max(o,l,h),Math.min(o,l,h))>a)return!1}return!0}const Rn=new pn,zn=new un,In=new un;class Pn{constructor(t=new un,e=-1){this.isSphere=!0,this.center=t,this.radius=e}set(t,e){return this.center.copy(t),this.radius=e,this}setFromPoints(t,e){const n=this.center;void 0!==e?n.copy(e):Rn.setFromPoints(t).getCenter(n);let i=0;for(let r=0,s=t.length;r<s;r++)i=Math.max(i,n.distanceToSquared(t[r]));return this.radius=Math.sqrt(i),this}copy(t){return this.center.copy(t.center),this.radius=t.radius,this}isEmpty(){return this.radius<0}makeEmpty(){return this.center.set(0,0,0),this.radius=-1,this}containsPoint(t){return t.distanceToSquared(this.center)<=this.radius*this.radius}distanceToPoint(t){return t.distanceTo(this.center)-this.radius}intersectsSphere(t){const e=this.radius+t.radius;return t.center.distanceToSquared(this.center)<=e*e}intersectsBox(t){return t.intersectsSphere(this)}intersectsPlane(t){return Math.abs(t.distanceToPoint(this.center))<=this.radius}clampPoint(t,e){const n=this.center.distanceToSquared(t);return e.copy(t),n>this.radius*this.radius&&(e.sub(this.center).normalize(),e.multiplyScalar(this.radius).add(this.center)),e}getBoundingBox(t){return this.isEmpty()?(t.makeEmpty(),t):(t.set(this.center,this.center),t.expandByScalar(this.radius),t)}applyMatrix4(t){return this.center.applyMatrix4(t),this.radius=this.radius*t.getMaxScaleOnAxis(),this}translate(t){return this.center.add(t),this}expandByPoint(t){if(this.isEmpty())return this.center.copy(t),this.radius=0,this;zn.subVectors(t,this.center);const e=zn.lengthSq();if(e>this.radius*this.radius){const t=Math.sqrt(e),n=.5*(t-this.radius);this.center.addScaledVector(zn,n/t),this.radius+=n}return this}union(t){return t.isEmpty()?this:this.isEmpty()?(this.copy(t),this):(!0===this.center.equals(t.center)?this.radius=Math.max(this.radius,t.radius):(In.subVectors(t.center,this.center).setLength(t.radius),this.expandByPoint(zn.copy(t.center).add(In)),this.expandByPoint(zn.copy(t.center).sub(In))),this)}equals(t){return t.center.equals(this.center)&&t.radius===this.radius}clone(){return(new this.constructor).copy(this)}}const Ln=new un,Nn=new un,kn=new un,Dn=new un,Un=new un,On=new un,Fn=new un;class Bn{constructor(t=new un,e=new un(0,0,-1)){this.origin=t,this.direction=e}set(t,e){return this.origin.copy(t),this.direction.copy(e),this}copy(t){return this.origin.copy(t.origin),this.direction.copy(t.direction),this}at(t,e){return e.copy(this.origin).addScaledVector(this.direction,t)}lookAt(t){return this.direction.copy(t).sub(this.origin).normalize(),this}recast(t){return this.origin.copy(this.at(t,Ln)),this}closestPointToPoint(t,e){e.subVectors(t,this.origin);const n=e.dot(this.direction);return n<0?e.copy(this.origin):e.copy(this.origin).addScaledVector(this.direction,n)}distanceToPoint(t){return Math.sqrt(this.distanceSqToPoint(t))}distanceSqToPoint(t){const e=Ln.subVectors(t,this.origin).dot(this.direction);return e<0?this.origin.distanceToSquared(t):(Ln.copy(this.origin).addScaledVector(this.direction,e),Ln.distanceToSquared(t))}distanceSqToSegment(t,e,n,i){Nn.copy(t).add(e).multiplyScalar(.5),kn.copy(e).sub(t).normalize(),Dn.copy(this.origin).sub(Nn);const r=.5*t.distanceTo(e),s=-this.direction.dot(kn),a=Dn.dot(this.direction),o=-Dn.dot(kn),l=Dn.lengthSq(),h=Math.abs(1-s*s);let c,q,u,d;if(h>0)if(c=s*o-a,q=s*a-o,d=r*h,c>=0)if(q>=-d)if(q<=d){const t=1/h;c*=t,q*=t,u=c*(c+s*q+2*a)+q*(s*c+q+2*o)+l}else q=r,c=Math.max(0,-(s*q+a)),u=-c*c+q*(q+2*o)+l;else q=-r,c=Math.max(0,-(s*q+a)),u=-c*c+q*(q+2*o)+l;else q<=-d?(c=Math.max(0,-(-s*r+a)),q=c>0?-r:Math.min(Math.max(-r,-o),r),u=-c*c+q*(q+2*o)+l):q<=d?(c=0,q=Math.min(Math.max(-r,-o),r),u=q*(q+2*o)+l):(c=Math.max(0,-(s*r+a)),q=c>0?r:Math.min(Math.max(-r,-o),r),u=-c*c+q*(q+2*o)+l);else q=s>0?-r:r,c=Math.max(0,-(s*q+a)),u=-c*c+q*(q+2*o)+l;return n&&n.copy(this.origin).addScaledVector(this.direction,c),i&&i.copy(Nn).addScaledVector(kn,q),u}intersectSphere(t,e){Ln.subVectors(t.center,this.origin);const n=Ln.dot(this.direction),i=Ln.dot(Ln)-n*n,r=t.radius*t.radius;if(i>r)return null;const s=Math.sqrt(r-i),a=n-s,o=n+s;return o<0?null:a<0?this.at(o,e):this.at(a,e)}intersectsSphere(t){return this.distanceSqToPoint(t.center)<=t.radius*t.radius}distanceToPlane(t){const e=t.normal.dot(this.direction);if(0===e)return 0===t.distanceToPoint(this.origin)?0:null;const n=-(this.origin.dot(t.normal)+t.constant)/e;return n>=0?n:null}intersectPlane(t,e){const n=this.distanceToPlane(t);return null===n?null:this.at(n,e)}intersectsPlane(t){const e=t.distanceToPoint(this.origin);if(0===e)return!0;return t.normal.dot(this.direction)*e<0}intersectBox(t,e){let n,i,r,s,a,o;const l=1/this.direction.x,h=1/this.direction.y,c=1/this.direction.z,q=this.origin;return l>=0?(n=(t.min.x-q.x)*l,i=(t.max.x-q.x)*l):(n=(t.max.x-q.x)*l,i=(t.min.x-q.x)*l),h>=0?(r=(t.min.y-q.y)*h,s=(t.max.y-q.y)*h):(r=(t.max.y-q.y)*h,s=(t.min.y-q.y)*h),n>s||r>i?null:((r>n||isNaN(n))&&(n=r),(s<i||isNaN(i))&&(i=s),c>=0?(a=(t.min.z-q.z)*c,o=(t.max.z-q.z)*c):(a=(t.max.z-q.z)*c,o=(t.min.z-q.z)*c),n>o||a>i?null:((a>n||n!=n)&&(n=a),(o<i||i!=i)&&(i=o),i<0?null:this.at(n>=0?n:i,e)))}intersectsBox(t){return null!==this.intersectBox(t,Ln)}intersectTriangle(t,e,n,i,r){Un.subVectors(e,t),On.subVectors(n,t),Fn.crossVectors(Un,On);let s,a=this.direction.dot(Fn);if(a>0){if(i)return null;s=1}else{if(!(a<0))return null;s=-1,a=-a}Dn.subVectors(this.origin,t);const o=s*this.direction.dot(On.crossVectors(Dn,On));if(o<0)return null;const l=s*this.direction.dot(Un.cross(Dn));if(l<0)return null;if(o+l>a)return null;const h=-s*Dn.dot(Fn);return h<0?null:this.at(h/a,r)}applyMatrix4(t){return this.origin.applyMatrix4(t),this.direction.transformDirection(t),this}equals(t){return t.origin.equals(this.origin)&&t.direction.equals(this.direction)}clone(){return(new this.constructor).copy(this)}}let Vn=class t{constructor(e,n,i,r,s,a,o,l,h,c,q,u,d,m,p,f){t.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],void 0!==e&&this.set(e,n,i,r,s,a,o,l,h,c,q,u,d,m,p,f)}set(t,e,n,i,r,s,a,o,l,h,c,q,u,d,m,p){const f=this.elements;return f[0]=t,f[4]=e,f[8]=n,f[12]=i,f[1]=r,f[5]=s,f[9]=a,f[13]=o,f[2]=l,f[6]=h,f[10]=c,f[14]=q,f[3]=u,f[7]=d,f[11]=m,f[15]=p,this}identity(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this}clone(){return(new t).fromArray(this.elements)}copy(t){const e=this.elements,n=t.elements;return e[0]=n[0],e[1]=n[1],e[2]=n[2],e[3]=n[3],e[4]=n[4],e[5]=n[5],e[6]=n[6],e[7]=n[7],e[8]=n[8],e[9]=n[9],e[10]=n[10],e[11]=n[11],e[12]=n[12],e[13]=n[13],e[14]=n[14],e[15]=n[15],this}copyPosition(t){const e=this.elements,n=t.elements;return e[12]=n[12],e[13]=n[13],e[14]=n[14],this}setFromMatrix3(t){const e=t.elements;return this.set(e[0],e[3],e[6],0,e[1],e[4],e[7],0,e[2],e[5],e[8],0,0,0,0,1),this}extractBasis(t,e,n){return t.setFromMatrixColumn(this,0),e.setFromMatrixColumn(this,1),n.setFromMatrixColumn(this,2),this}makeBasis(t,e,n){return this.set(t.x,e.x,n.x,0,t.y,e.y,n.y,0,t.z,e.z,n.z,0,0,0,0,1),this}extractRotation(t){const e=this.elements,n=t.elements,i=1/Hn.setFromMatrixColumn(t,0).length(),r=1/Hn.setFromMatrixColumn(t,1).length(),s=1/Hn.setFromMatrixColumn(t,2).length();return e[0]=n[0]*i,e[1]=n[1]*i,e[2]=n[2]*i,e[3]=0,e[4]=n[4]*r,e[5]=n[5]*r,e[6]=n[6]*r,e[7]=0,e[8]=n[8]*s,e[9]=n[9]*s,e[10]=n[10]*s,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this}makeRotationFromEuler(t){const e=this.elements,n=t.x,i=t.y,r=t.z,s=Math.cos(n),a=Math.sin(n),o=Math.cos(i),l=Math.sin(i),h=Math.cos(r),c=Math.sin(r);if("XYZ"===t.order){const t=s*h,n=s*c,i=a*h,r=a*c;e[0]=o*h,e[4]=-o*c,e[8]=l,e[1]=n+i*l,e[5]=t-r*l,e[9]=-a*o,e[2]=r-t*l,e[6]=i+n*l,e[10]=s*o}else if("YXZ"===t.order){const t=o*h,n=o*c,i=l*h,r=l*c;e[0]=t+r*a,e[4]=i*a-n,e[8]=s*l,e[1]=s*c,e[5]=s*h,e[9]=-a,e[2]=n*a-i,e[6]=r+t*a,e[10]=s*o}else if("ZXY"===t.order){const t=o*h,n=o*c,i=l*h,r=l*c;e[0]=t-r*a,e[4]=-s*c,e[8]=i+n*a,e[1]=n+i*a,e[5]=s*h,e[9]=r-t*a,e[2]=-s*l,e[6]=a,e[10]=s*o}else if("ZYX"===t.order){const t=s*h,n=s*c,i=a*h,r=a*c;e[0]=o*h,e[4]=i*l-n,e[8]=t*l+r,e[1]=o*c,e[5]=r*l+t,e[9]=n*l-i,e[2]=-l,e[6]=a*o,e[10]=s*o}else if("YZX"===t.order){const t=s*o,n=s*l,i=a*o,r=a*l;e[0]=o*h,e[4]=r-t*c,e[8]=i*c+n,e[1]=c,e[5]=s*h,e[9]=-a*h,e[2]=-l*h,e[6]=n*c+i,e[10]=t-r*c}else if("XZY"===t.order){const t=s*o,n=s*l,i=a*o,r=a*l;e[0]=o*h,e[4]=-c,e[8]=l*h,e[1]=t*c+r,e[5]=s*h,e[9]=n*c-i,e[2]=i*c-n,e[6]=a*h,e[10]=r*c+t}return e[3]=0,e[7]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this}makeRotationFromQuaternion(t){return this.compose(Wn,t,jn)}lookAt(t,e,n){const i=this.elements;return Zn.subVectors(t,e),0===Zn.lengthSq()&&(Zn.z=1),Zn.normalize(),Xn.crossVectors(n,Zn),0===Xn.lengthSq()&&(1===Math.abs(n.z)?Zn.x+=1e-4:Zn.z+=1e-4,Zn.normalize(),Xn.crossVectors(n,Zn)),Xn.normalize(),Yn.crossVectors(Zn,Xn),i[0]=Xn.x,i[4]=Yn.x,i[8]=Zn.x,i[1]=Xn.y,i[5]=Yn.y,i[9]=Zn.y,i[2]=Xn.z,i[6]=Yn.z,i[10]=Zn.z,this}multiply(t){return this.multiplyMatrices(this,t)}premultiply(t){return this.multiplyMatrices(t,this)}multiplyMatrices(t,e){const n=t.elements,i=e.elements,r=this.elements,s=n[0],a=n[4],o=n[8],l=n[12],h=n[1],c=n[5],q=n[9],u=n[13],d=n[2],m=n[6],p=n[10],f=n[14],g=n[3],x=n[7],_=n[11],y=n[15],v=i[0],w=i[4],b=i[8],M=i[12],S=i[1],T=i[5],E=i[9],A=i[13],C=i[2],R=i[6],z=i[10],I=i[14],P=i[3],L=i[7],N=i[11],k=i[15];return r[0]=s*v+a*S+o*C+l*P,r[4]=s*w+a*T+o*R+l*L,r[8]=s*b+a*E+o*z+l*N,r[12]=s*M+a*A+o*I+l*k,r[1]=h*v+c*S+q*C+u*P,r[5]=h*w+c*T+q*R+u*L,r[9]=h*b+c*E+q*z+u*N,r[13]=h*M+c*A+q*I+u*k,r[2]=d*v+m*S+p*C+f*P,r[6]=d*w+m*T+p*R+f*L,r[10]=d*b+m*E+p*z+f*N,r[14]=d*M+m*A+p*I+f*k,r[3]=g*v+x*S+_*C+y*P,r[7]=g*w+x*T+_*R+y*L,r[11]=g*b+x*E+_*z+y*N,r[15]=g*M+x*A+_*I+y*k,this}multiplyScalar(t){const e=this.elements;return e[0]*=t,e[4]*=t,e[8]*=t,e[12]*=t,e[1]*=t,e[5]*=t,e[9]*=t,e[13]*=t,e[2]*=t,e[6]*=t,e[10]*=t,e[14]*=t,e[3]*=t,e[7]*=t,e[11]*=t,e[15]*=t,this}determinant(){const t=this.elements,e=t[0],n=t[4],i=t[8],r=t[12],s=t[1],a=t[5],o=t[9],l=t[13],h=t[2],c=t[6],q=t[10],u=t[14];return t[3]*(+r*o*c-i*l*c-r*a*q+n*l*q+i*a*u-n*o*u)+t[7]*(+e*o*u-e*l*q+r*s*q-i*s*u+i*l*h-r*o*h)+t[11]*(+e*l*c-e*a*u-r*s*c+n*s*u+r*a*h-n*l*h)+t[15]*(-i*a*h-e*o*c+e*a*q+i*s*c-n*s*q+n*o*h)}transpose(){const t=this.elements;let e;return e=t[1],t[1]=t[4],t[4]=e,e=t[2],t[2]=t[8],t[8]=e,e=t[6],t[6]=t[9],t[9]=e,e=t[3],t[3]=t[12],t[12]=e,e=t[7],t[7]=t[13],t[13]=e,e=t[11],t[11]=t[14],t[14]=e,this}setPosition(t,e,n){const i=this.elements;return t.isVector3?(i[12]=t.x,i[13]=t.y,i[14]=t.z):(i[12]=t,i[13]=e,i[14]=n),this}invert(){const t=this.elements,e=t[0],n=t[1],i=t[2],r=t[3],s=t[4],a=t[5],o=t[6],l=t[7],h=t[8],c=t[9],q=t[10],u=t[11],d=t[12],m=t[13],p=t[14],f=t[15],g=c*p*l-m*q*l+m*o*u-a*p*u-c*o*f+a*q*f,x=d*q*l-h*p*l-d*o*u+s*p*u+h*o*f-s*q*f,_=h*m*l-d*c*l+d*a*u-s*m*u-h*a*f+s*c*f,y=d*c*o-h*m*o-d*a*q+s*m*q+h*a*p-s*c*p,v=e*g+n*x+i*_+r*y;if(0===v)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);const w=1/v;return t[0]=g*w,t[1]=(m*q*r-c*p*r-m*i*u+n*p*u+c*i*f-n*q*f)*w,t[2]=(a*p*r-m*o*r+m*i*l-n*p*l-a*i*f+n*o*f)*w,t[3]=(c*o*r-a*q*r-c*i*l+n*q*l+a*i*u-n*o*u)*w,t[4]=x*w,t[5]=(h*p*r-d*q*r+d*i*u-e*p*u-h*i*f+e*q*f)*w,t[6]=(d*o*r-s*p*r-d*i*l+e*p*l+s*i*f-e*o*f)*w,t[7]=(s*q*r-h*o*r+h*i*l-e*q*l-s*i*u+e*o*u)*w,t[8]=_*w,t[9]=(d*c*r-h*m*r-d*n*u+e*m*u+h*n*f-e*c*f)*w,t[10]=(s*m*r-d*a*r+d*n*l-e*m*l-s*n*f+e*a*f)*w,t[11]=(h*a*r-s*c*r-h*n*l+e*c*l+s*n*u-e*a*u)*w,t[12]=y*w,t[13]=(h*m*i-d*c*i+d*n*q-e*m*q-h*n*p+e*c*p)*w,t[14]=(d*a*i-s*m*i-d*n*o+e*m*o+s*n*p-e*a*p)*w,t[15]=(s*c*i-h*a*i+h*n*o-e*c*o-s*n*q+e*a*q)*w,this}scale(t){const e=this.elements,n=t.x,i=t.y,r=t.z;return e[0]*=n,e[4]*=i,e[8]*=r,e[1]*=n,e[5]*=i,e[9]*=r,e[2]*=n,e[6]*=i,e[10]*=r,e[3]*=n,e[7]*=i,e[11]*=r,this}getMaxScaleOnAxis(){const t=this.elements,e=t[0]*t[0]+t[1]*t[1]+t[2]*t[2],n=t[4]*t[4]+t[5]*t[5]+t[6]*t[6],i=t[8]*t[8]+t[9]*t[9]+t[10]*t[10];return Math.sqrt(Math.max(e,n,i))}makeTranslation(t,e,n){return t.isVector3?this.set(1,0,0,t.x,0,1,0,t.y,0,0,1,t.z,0,0,0,1):this.set(1,0,0,t,0,1,0,e,0,0,1,n,0,0,0,1),this}makeRotationX(t){const e=Math.cos(t),n=Math.sin(t);return this.set(1,0,0,0,0,e,-n,0,0,n,e,0,0,0,0,1),this}makeRotationY(t){const e=Math.cos(t),n=Math.sin(t);return this.set(e,0,n,0,0,1,0,0,-n,0,e,0,0,0,0,1),this}makeRotationZ(t){const e=Math.cos(t),n=Math.sin(t);return this.set(e,-n,0,0,n,e,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(t,e){const n=Math.cos(e),i=Math.sin(e),r=1-n,s=t.x,a=t.y,o=t.z,l=r*s,h=r*a;return this.set(l*s+n,l*a-i*o,l*o+i*a,0,l*a+i*o,h*a+n,h*o-i*s,0,l*o-i*a,h*o+i*s,r*o*o+n,0,0,0,0,1),this}makeScale(t,e,n){return this.set(t,0,0,0,0,e,0,0,0,0,n,0,0,0,0,1),this}makeShear(t,e,n,i,r,s){return this.set(1,n,r,0,t,1,s,0,e,i,1,0,0,0,0,1),this}compose(t,e,n){const i=this.elements,r=e._x,s=e._y,a=e._z,o=e._w,l=r+r,h=s+s,c=a+a,q=r*l,u=r*h,d=r*c,m=s*h,p=s*c,f=a*c,g=o*l,x=o*h,_=o*c,y=n.x,v=n.y,w=n.z;return i[0]=(1-(m+f))*y,i[1]=(u+_)*y,i[2]=(d-x)*y,i[3]=0,i[4]=(u-_)*v,i[5]=(1-(q+f))*v,i[6]=(p+g)*v,i[7]=0,i[8]=(d+x)*w,i[9]=(p-g)*w,i[10]=(1-(q+m))*w,i[11]=0,i[12]=t.x,i[13]=t.y,i[14]=t.z,i[15]=1,this}decompose(t,e,n){const i=this.elements;let r=Hn.set(i[0],i[1],i[2]).length();const s=Hn.set(i[4],i[5],i[6]).length(),a=Hn.set(i[8],i[9],i[10]).length();this.determinant()<0&&(r=-r),t.x=i[12],t.y=i[13],t.z=i[14],Gn.copy(this);const o=1/r,l=1/s,h=1/a;return Gn.elements[0]*=o,Gn.elements[1]*=o,Gn.elements[2]*=o,Gn.elements[4]*=l,Gn.elements[5]*=l,Gn.elements[6]*=l,Gn.elements[8]*=h,Gn.elements[9]*=h,Gn.elements[10]*=h,e.setFromRotationMatrix(Gn),n.x=r,n.y=s,n.z=a,this}makePerspective(t,e,n,i,r,s,a=2e3){const o=this.elements,l=2*r/(e-t),h=2*r/(n-i),c=(e+t)/(e-t),q=(n+i)/(n-i);let u,d;if(a===we)u=-(s+r)/(s-r),d=-2*s*r/(s-r);else{if(a!==be)throw new Error("THREE.Matrix4.makePerspective(): Invalid coordinate system: "+a);u=-s/(s-r),d=-s*r/(s-r)}return o[0]=l,o[4]=0,o[8]=c,o[12]=0,o[1]=0,o[5]=h,o[9]=q,o[13]=0,o[2]=0,o[6]=0,o[10]=u,o[14]=d,o[3]=0,o[7]=0,o[11]=-1,o[15]=0,this}makeOrthographic(t,e,n,i,r,s,a=2e3){const o=this.elements,l=1/(e-t),h=1/(n-i),c=1/(s-r),q=(e+t)*l,u=(n+i)*h;let d,m;if(a===we)d=(s+r)*c,m=-2*c;else{if(a!==be)throw new Error("THREE.Matrix4.makeOrthographic(): Invalid coordinate system: "+a);d=r*c,m=-1*c}return o[0]=2*l,o[4]=0,o[8]=0,o[12]=-q,o[1]=0,o[5]=2*h,o[9]=0,o[13]=-u,o[2]=0,o[6]=0,o[10]=m,o[14]=-d,o[3]=0,o[7]=0,o[11]=0,o[15]=1,this}equals(t){const e=this.elements,n=t.elements;for(let i=0;i<16;i++)if(e[i]!==n[i])return!1;return!0}fromArray(t,e=0){for(let n=0;n<16;n++)this.elements[n]=t[n+e];return this}toArray(t=[],e=0){const n=this.elements;return t[e]=n[0],t[e+1]=n[1],t[e+2]=n[2],t[e+3]=n[3],t[e+4]=n[4],t[e+5]=n[5],t[e+6]=n[6],t[e+7]=n[7],t[e+8]=n[8],t[e+9]=n[9],t[e+10]=n[10],t[e+11]=n[11],t[e+12]=n[12],t[e+13]=n[13],t[e+14]=n[14],t[e+15]=n[15],t}};const Hn=new un,Gn=new Vn,Wn=new un(0,0,0),jn=new un(1,1,1),Xn=new un,Yn=new un,Zn=new un,Jn=new Vn,$n=new qn;class Kn{constructor(t=0,e=0,n=0,i=Kn.DEFAULT_ORDER){this.isEuler=!0,this._x=t,this._y=e,this._z=n,this._order=i}get x(){return this._x}set x(t){this._x=t,this._onChangeCallback()}get y(){return this._y}set y(t){this._y=t,this._onChangeCallback()}get z(){return this._z}set z(t){this._z=t,this._onChangeCallback()}get order(){return this._order}set order(t){this._order=t,this._onChangeCallback()}set(t,e,n,i=this._order){return this._x=t,this._y=e,this._z=n,this._order=i,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._order)}copy(t){return this._x=t._x,this._y=t._y,this._z=t._z,this._order=t._order,this._onChangeCallback(),this}setFromRotationMatrix(t,e=this._order,n=!0){const i=t.elements,r=i[0],s=i[4],a=i[8],o=i[1],l=i[5],h=i[9],c=i[2],q=i[6],u=i[10];switch(e){case"XYZ":this._y=Math.asin(Re(a,-1,1)),Math.abs(a)<.9999999?(this._x=Math.atan2(-h,u),this._z=Math.atan2(-s,r)):(this._x=Math.atan2(q,l),this._z=0);break;case"YXZ":this._x=Math.asin(-Re(h,-1,1)),Math.abs(h)<.9999999?(this._y=Math.atan2(a,u),this._z=Math.atan2(o,l)):(this._y=Math.atan2(-c,r),this._z=0);break;case"ZXY":this._x=Math.asin(Re(q,-1,1)),Math.abs(q)<.9999999?(this._y=Math.atan2(-c,u),this._z=Math.atan2(-s,l)):(this._y=0,this._z=Math.atan2(o,r));break;case"ZYX":this._y=Math.asin(-Re(c,-1,1)),Math.abs(c)<.9999999?(this._x=Math.atan2(q,u),this._z=Math.atan2(o,r)):(this._x=0,this._z=Math.atan2(-s,l));break;case"YZX":this._z=Math.asin(Re(o,-1,1)),Math.abs(o)<.9999999?(this._x=Math.atan2(-h,l),this._y=Math.atan2(-c,r)):(this._x=0,this._y=Math.atan2(a,u));break;case"XZY":this._z=Math.asin(-Re(s,-1,1)),Math.abs(s)<.9999999?(this._x=Math.atan2(q,l),this._y=Math.atan2(a,r)):(this._x=Math.atan2(-h,u),this._y=0);break;default:console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: "+e)}return this._order=e,!0===n&&this._onChangeCallback(),this}setFromQuaternion(t,e,n){return Jn.makeRotationFromQuaternion(t),this.setFromRotationMatrix(Jn,e,n)}setFromVector3(t,e=this._order){return this.set(t.x,t.y,t.z,e)}reorder(t){return $n.setFromEuler(this),this.setFromQuaternion($n,t)}equals(t){return t._x===this._x&&t._y===this._y&&t._z===this._z&&t._order===this._order}fromArray(t){return this._x=t[0],this._y=t[1],this._z=t[2],void 0!==t[3]&&(this._order=t[3]),this._onChangeCallback(),this}toArray(t=[],e=0){return t[e]=this._x,t[e+1]=this._y,t[e+2]=this._z,t[e+3]=this._order,t}_onChange(t){return this._onChangeCallback=t,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._order}}Kn.DEFAULT_ORDER="XYZ";class Qn{constructor(){this.mask=1}set(t){this.mask=1<<t>>>0}enable(t){this.mask|=1<<t}enableAll(){this.mask=-1}toggle(t){this.mask^=1<<t}disable(t){this.mask&=~(1<<t)}disableAll(){this.mask=0}test(t){return!!(this.mask&t.mask)}isEnabled(t){return!!(this.mask&1<<t)}}let ti=0;const ei=new un,ni=new qn,ii=new Vn,ri=new un,si=new un,ai=new un,oi=new qn,li=new un(1,0,0),hi=new un(0,1,0),ci=new un(0,0,1),qi={type:"added"},ui={type:"removed"},di={type:"childadded",child:null},mi={type:"childremoved",child:null};class pi extends Me{constructor(){super(),this.isObject3D=!0,Object.defineProperty(this,"id",{value:ti++}),this.uuid=Ce(),this.name="",this.type="Object3D",this.parent=null,this.children=[],this.up=pi.DEFAULT_UP.clone();const t=new un,e=new Kn,n=new qn,i=new un(1,1,1);e._onChange((function(){n.setFromEuler(e,!1)})),n._onChange((function(){e.setFromQuaternion(n,void 0,!1)})),Object.defineProperties(this,{position:{configurable:!0,enumerable:!0,value:t},rotation:{configurable:!0,enumerable:!0,value:e},quaternion:{configurable:!0,enumerable:!0,value:n},scale:{configurable:!0,enumerable:!0,value:i},modelViewMatrix:{value:new Vn},normalMatrix:{value:new De}}),this.matrix=new Vn,this.matrixWorld=new Vn,this.matrixAutoUpdate=pi.DEFAULT_MATRIX_AUTO_UPDATE,this.matrixWorldAutoUpdate=pi.DEFAULT_MATRIX_WORLD_AUTO_UPDATE,this.matrixWorldNeedsUpdate=!1,this.layers=new Qn,this.visible=!0,this.castShadow=!1,this.receiveShadow=!1,this.frustumCulled=!0,this.renderOrder=0,this.animations=[],this.userData={}}onBeforeShadow(){}onAfterShadow(){}onBeforeRender(){}onAfterRender(){}applyMatrix4(t){this.matrixAutoUpdate&&this.updateMatrix(),this.matrix.premultiply(t),this.matrix.decompose(this.position,this.quaternion,this.scale)}applyQuaternion(t){return this.quaternion.premultiply(t),this}setRotationFromAxisAngle(t,e){this.quaternion.setFromAxisAngle(t,e)}setRotationFromEuler(t){this.quaternion.setFromEuler(t,!0)}setRotationFromMatrix(t){this.quaternion.setFromRotationMatrix(t)}setRotationFromQuaternion(t){this.quaternion.copy(t)}rotateOnAxis(t,e){return ni.setFromAxisAngle(t,e),this.quaternion.multiply(ni),this}rotateOnWorldAxis(t,e){return ni.setFromAxisAngle(t,e),this.quaternion.premultiply(ni),this}rotateX(t){return this.rotateOnAxis(li,t)}rotateY(t){return this.rotateOnAxis(hi,t)}rotateZ(t){return this.rotateOnAxis(ci,t)}translateOnAxis(t,e){return ei.copy(t).applyQuaternion(this.quaternion),this.position.add(ei.multiplyScalar(e)),this}translateX(t){return this.translateOnAxis(li,t)}translateY(t){return this.translateOnAxis(hi,t)}translateZ(t){return this.translateOnAxis(ci,t)}localToWorld(t){return this.updateWorldMatrix(!0,!1),t.applyMatrix4(this.matrixWorld)}worldToLocal(t){return this.updateWorldMatrix(!0,!1),t.applyMatrix4(ii.copy(this.matrixWorld).invert())}lookAt(t,e,n){t.isVector3?ri.copy(t):ri.set(t,e,n);const i=this.parent;this.updateWorldMatrix(!0,!1),si.setFromMatrixPosition(this.matrixWorld),this.isCamera||this.isLight?ii.lookAt(si,ri,this.up):ii.lookAt(ri,si,this.up),this.quaternion.setFromRotationMatrix(ii),i&&(ii.extractRotation(i.matrixWorld),ni.setFromRotationMatrix(ii),this.quaternion.premultiply(ni.invert()))}add(t){if(arguments.length>1){for(let t=0;t<arguments.length;t++)this.add(arguments[t]);return this}return t===this?(console.error("THREE.Object3D.add: object can't be added as a child of itself.",t),this):(t&&t.isObject3D?(t.removeFromParent(),t.parent=this,this.children.push(t),t.dispatchEvent(qi),di.child=t,this.dispatchEvent(di),di.child=null):console.error("THREE.Object3D.add: object not an instance of THREE.Object3D.",t),this)}remove(t){if(arguments.length>1){for(let t=0;t<arguments.length;t++)this.remove(arguments[t]);return this}const e=this.children.indexOf(t);return-1!==e&&(t.parent=null,this.children.splice(e,1),t.dispatchEvent(ui),mi.child=t,this.dispatchEvent(mi),mi.child=null),this}removeFromParent(){const t=this.parent;return null!==t&&t.remove(this),this}clear(){return this.remove(...this.children)}attach(t){return this.updateWorldMatrix(!0,!1),ii.copy(this.matrixWorld).invert(),null!==t.parent&&(t.parent.updateWorldMatrix(!0,!1),ii.multiply(t.parent.matrixWorld)),t.applyMatrix4(ii),t.removeFromParent(),t.parent=this,this.children.push(t),t.updateWorldMatrix(!1,!0),t.dispatchEvent(qi),di.child=t,this.dispatchEvent(di),di.child=null,this}getObjectById(t){return this.getObjectByProperty("id",t)}getObjectByName(t){return this.getObjectByProperty("name",t)}getObjectByProperty(t,e){if(this[t]===e)return this;for(let n=0,i=this.children.length;n<i;n++){const i=this.children[n].getObjectByProperty(t,e);if(void 0!==i)return i}}getObjectsByProperty(t,e,n=[]){this[t]===e&&n.push(this);const i=this.children;for(let r=0,s=i.length;r<s;r++)i[r].getObjectsByProperty(t,e,n);return n}getWorldPosition(t){return this.updateWorldMatrix(!0,!1),t.setFromMatrixPosition(this.matrixWorld)}getWorldQuaternion(t){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(si,t,ai),t}getWorldScale(t){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(si,oi,t),t}getWorldDirection(t){this.updateWorldMatrix(!0,!1);const e=this.matrixWorld.elements;return t.set(e[8],e[9],e[10]).normalize()}raycast(){}traverse(t){t(this);const e=this.children;for(let n=0,i=e.length;n<i;n++)e[n].traverse(t)}traverseVisible(t){if(!1===this.visible)return;t(this);const e=this.children;for(let n=0,i=e.length;n<i;n++)e[n].traverseVisible(t)}traverseAncestors(t){const e=this.parent;null!==e&&(t(e),e.traverseAncestors(t))}updateMatrix(){this.matrix.compose(this.position,this.quaternion,this.scale),this.matrixWorldNeedsUpdate=!0}updateMatrixWorld(t){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||t)&&(!0===this.matrixWorldAutoUpdate&&(null===this.parent?this.matrixWorld.copy(this.matrix):this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix)),this.matrixWorldNeedsUpdate=!1,t=!0);const e=this.children;for(let n=0,i=e.length;n<i;n++){e[n].updateMatrixWorld(t)}}updateWorldMatrix(t,e){const n=this.parent;if(!0===t&&null!==n&&n.updateWorldMatrix(!0,!1),this.matrixAutoUpdate&&this.updateMatrix(),!0===this.matrixWorldAutoUpdate&&(null===this.parent?this.matrixWorld.copy(this.matrix):this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix)),!0===e){const t=this.children;for(let e=0,n=t.length;e<n;e++){t[e].updateWorldMatrix(!1,!0)}}}toJSON(t){const e=void 0===t||"string"==typeof t,n={};e&&(t={geometries:{},materials:{},textures:{},images:{},shapes:{},skeletons:{},animations:{},nodes:{}},n.metadata={version:4.6,type:"Object",generator:"Object3D.toJSON"});const i={};function r(e,n){return void 0===e[n.uuid]&&(e[n.uuid]=n.toJSON(t)),n.uuid}if(i.uuid=this.uuid,i.type=this.type,""!==this.name&&(i.name=this.name),!0===this.castShadow&&(i.castShadow=!0),!0===this.receiveShadow&&(i.receiveShadow=!0),!1===this.visible&&(i.visible=!1),!1===this.frustumCulled&&(i.frustumCulled=!1),0!==this.renderOrder&&(i.renderOrder=this.renderOrder),Object.keys(this.userData).length>0&&(i.userData=this.userData),i.layers=this.layers.mask,i.matrix=this.matrix.toArray(),i.up=this.up.toArray(),!1===this.matrixAutoUpdate&&(i.matrixAutoUpdate=!1),this.isInstancedMesh&&(i.type="InstancedMesh",i.count=this.count,i.instanceMatrix=this.instanceMatrix.toJSON(),null!==this.instanceColor&&(i.instanceColor=this.instanceColor.toJSON())),this.isBatchedMesh&&(i.type="BatchedMesh",i.perObjectFrustumCulled=this.perObjectFrustumCulled,i.sortObjects=this.sortObjects,i.drawRanges=this._drawRanges,i.reservedRanges=this._reservedRanges,i.visibility=this._visibility,i.active=this._active,i.bounds=this._bounds.map((t=>({boxInitialized:t.boxInitialized,boxMin:t.box.min.toArray(),boxMax:t.box.max.toArray(),sphereInitialized:t.sphereInitialized,sphereRadius:t.sphere.radius,sphereCenter:t.sphere.center.toArray()}))),i.maxInstanceCount=this._maxInstanceCount,i.maxVertexCount=this._maxVertexCount,i.maxIndexCount=this._maxIndexCount,i.geometryInitialized=this._geometryInitialized,i.geometryCount=this._geometryCount,i.matricesTexture=this._matricesTexture.toJSON(t),null!==this._colorsTexture&&(i.colorsTexture=this._colorsTexture.toJSON(t)),null!==this.boundingSphere&&(i.boundingSphere={center:i.boundingSphere.center.toArray(),radius:i.boundingSphere.radius}),null!==this.boundingBox&&(i.boundingBox={min:i.boundingBox.min.toArray(),max:i.boundingBox.max.toArray()})),this.isScene)this.background&&(this.background.isColor?i.background=this.background.toJSON():this.background.isTexture&&(i.background=this.background.toJSON(t).uuid)),this.environment&&this.environment.isTexture&&!0!==this.environment.isRenderTargetTexture&&(i.environment=this.environment.toJSON(t).uuid);else if(this.isMesh||this.isLine||this.isPoints){i.geometry=r(t.geometries,this.geometry);const e=this.geometry.parameters;if(void 0!==e&&void 0!==e.shapes){const n=e.shapes;if(Array.isArray(n))for(let e=0,i=n.length;e<i;e++){const i=n[e];r(t.shapes,i)}else r(t.shapes,n)}}if(this.isSkinnedMesh&&(i.bindMode=this.bindMode,i.bindMatrix=this.bindMatrix.toArray(),void 0!==this.skeleton&&(r(t.skeletons,this.skeleton),i.skeleton=this.skeleton.uuid)),void 0!==this.material)if(Array.isArray(this.material)){const e=[];for(let n=0,i=this.material.length;n<i;n++)e.push(r(t.materials,this.material[n]));i.material=e}else i.material=r(t.materials,this.material);if(this.children.length>0){i.children=[];for(let e=0;e<this.children.length;e++)i.children.push(this.children[e].toJSON(t).object)}if(this.animations.length>0){i.animations=[];for(let e=0;e<this.animations.length;e++){const n=this.animations[e];i.animations.push(r(t.animations,n))}}if(e){const e=s(t.geometries),i=s(t.materials),r=s(t.textures),a=s(t.images),o=s(t.shapes),l=s(t.skeletons),h=s(t.animations),c=s(t.nodes);e.length>0&&(n.geometries=e),i.length>0&&(n.materials=i),r.length>0&&(n.textures=r),a.length>0&&(n.images=a),o.length>0&&(n.shapes=o),l.length>0&&(n.skeletons=l),h.length>0&&(n.animations=h),c.length>0&&(n.nodes=c)}return n.object=i,n;function s(t){const e=[];for(const n in t){const i=t[n];delete i.metadata,e.push(i)}return e}}clone(t){return(new this.constructor).copy(this,t)}copy(t,e=!0){if(this.name=t.name,this.up.copy(t.up),this.position.copy(t.position),this.rotation.order=t.rotation.order,this.quaternion.copy(t.quaternion),this.scale.copy(t.scale),this.matrix.copy(t.matrix),this.matrixWorld.copy(t.matrixWorld),this.matrixAutoUpdate=t.matrixAutoUpdate,this.matrixWorldAutoUpdate=t.matrixWorldAutoUpdate,this.matrixWorldNeedsUpdate=t.matrixWorldNeedsUpdate,this.layers.mask=t.layers.mask,this.visible=t.visible,this.castShadow=t.castShadow,this.receiveShadow=t.receiveShadow,this.frustumCulled=t.frustumCulled,this.renderOrder=t.renderOrder,this.animations=t.animations.slice(),this.userData=JSON.parse(JSON.stringify(t.userData)),!0===e)for(let n=0;n<t.children.length;n++){const e=t.children[n];this.add(e.clone())}return this}}pi.DEFAULT_UP=new un(0,1,0),pi.DEFAULT_MATRIX_AUTO_UPDATE=!0,pi.DEFAULT_MATRIX_WORLD_AUTO_UPDATE=!0;const fi=new un,gi=new un,xi=new un,_i=new un,yi=new un,vi=new un,wi=new un,bi=new un,Mi=new un,Si=new un,Ti=new an,Ei=new an,Ai=new an;class Ci{constructor(t=new un,e=new un,n=new un){this.a=t,this.b=e,this.c=n}static getNormal(t,e,n,i){i.subVectors(n,e),fi.subVectors(t,e),i.cross(fi);const r=i.lengthSq();return r>0?i.multiplyScalar(1/Math.sqrt(r)):i.set(0,0,0)}static getBarycoord(t,e,n,i,r){fi.subVectors(i,e),gi.subVectors(n,e),xi.subVectors(t,e);const s=fi.dot(fi),a=fi.dot(gi),o=fi.dot(xi),l=gi.dot(gi),h=gi.dot(xi),c=s*l-a*a;if(0===c)return r.set(0,0,0),null;const q=1/c,u=(l*o-a*h)*q,d=(s*h-a*o)*q;return r.set(1-u-d,d,u)}static containsPoint(t,e,n,i){return null!==this.getBarycoord(t,e,n,i,_i)&&(_i.x>=0&&_i.y>=0&&_i.x+_i.y<=1)}static getInterpolation(t,e,n,i,r,s,a,o){return null===this.getBarycoord(t,e,n,i,_i)?(o.x=0,o.y=0,"z"in o&&(o.z=0),"w"in o&&(o.w=0),null):(o.setScalar(0),o.addScaledVector(r,_i.x),o.addScaledVector(s,_i.y),o.addScaledVector(a,_i.z),o)}static getInterpolatedAttribute(t,e,n,i,r,s){return Ti.setScalar(0),Ei.setScalar(0),Ai.setScalar(0),Ti.fromBufferAttribute(t,e),Ei.fromBufferAttribute(t,n),Ai.fromBufferAttribute(t,i),s.setScalar(0),s.addScaledVector(Ti,r.x),s.addScaledVector(Ei,r.y),s.addScaledVector(Ai,r.z),s}static isFrontFacing(t,e,n,i){return fi.subVectors(n,e),gi.subVectors(t,e),fi.cross(gi).dot(i)<0}set(t,e,n){return this.a.copy(t),this.b.copy(e),this.c.copy(n),this}setFromPointsAndIndices(t,e,n,i){return this.a.copy(t[e]),this.b.copy(t[n]),this.c.copy(t[i]),this}setFromAttributeAndIndices(t,e,n,i){return this.a.fromBufferAttribute(t,e),this.b.fromBufferAttribute(t,n),this.c.fromBufferAttribute(t,i),this}clone(){return(new this.constructor).copy(this)}copy(t){return this.a.copy(t.a),this.b.copy(t.b),this.c.copy(t.c),this}getArea(){return fi.subVectors(this.c,this.b),gi.subVectors(this.a,this.b),.5*fi.cross(gi).length()}getMidpoint(t){return t.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(t){return Ci.getNormal(this.a,this.b,this.c,t)}getPlane(t){return t.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(t,e){return Ci.getBarycoord(t,this.a,this.b,this.c,e)}getInterpolation(t,e,n,i,r){return Ci.getInterpolation(t,this.a,this.b,this.c,e,n,i,r)}containsPoint(t){return Ci.containsPoint(t,this.a,this.b,this.c)}isFrontFacing(t){return Ci.isFrontFacing(this.a,this.b,this.c,t)}intersectsBox(t){return t.intersectsTriangle(this)}closestPointToPoint(t,e){const n=this.a,i=this.b,r=this.c;let s,a;yi.subVectors(i,n),vi.subVectors(r,n),bi.subVectors(t,n);const o=yi.dot(bi),l=vi.dot(bi);if(o<=0&&l<=0)return e.copy(n);Mi.subVectors(t,i);const h=yi.dot(Mi),c=vi.dot(Mi);if(h>=0&&c<=h)return e.copy(i);const q=o*c-h*l;if(q<=0&&o>=0&&h<=0)return s=o/(o-h),e.copy(n).addScaledVector(yi,s);Si.subVectors(t,r);const u=yi.dot(Si),d=vi.dot(Si);if(d>=0&&u<=d)return e.copy(r);const m=u*l-o*d;if(m<=0&&l>=0&&d<=0)return a=l/(l-d),e.copy(n).addScaledVector(vi,a);const p=h*d-u*c;if(p<=0&&c-h>=0&&u-d>=0)return wi.subVectors(r,i),a=(c-h)/(c-h+(u-d)),e.copy(i).addScaledVector(wi,a);const f=1/(p+m+q);return s=m*f,a=q*f,e.copy(n).addScaledVector(yi,s).addScaledVector(vi,a)}equals(t){return t.a.equals(this.a)&&t.b.equals(this.b)&&t.c.equals(this.c)}}const Ri={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},zi={h:0,s:0,l:0},Ii={h:0,s:0,l:0};function Pi(t,e,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?t+6*(e-t)*n:n<.5?e:n<2/3?t+6*(e-t)*(2/3-n):t}let Li=class{constructor(t,e,n){return this.isColor=!0,this.r=1,this.g=1,this.b=1,this.set(t,e,n)}set(t,e,n){if(void 0===e&&void 0===n){const e=t;e&&e.isColor?this.copy(e):"number"==typeof e?this.setHex(e):"string"==typeof e&&this.setStyle(e)}else this.setRGB(t,e,n);return this}setScalar(t){return this.r=t,this.g=t,this.b=t,this}setHex(t,e=oe){return t=Math.floor(t),this.r=(t>>16&255)/255,this.g=(t>>8&255)/255,this.b=(255&t)/255,Ze.toWorkingColorSpace(this,e),this}setRGB(t,e,n,i=Ze.workingColorSpace){return this.r=t,this.g=e,this.b=n,Ze.toWorkingColorSpace(this,i),this}setHSL(t,e,n,i=Ze.workingColorSpace){if(t=ze(t,1),e=Re(e,0,1),n=Re(n,0,1),0===e)this.r=this.g=this.b=n;else{const i=n<=.5?n*(1+e):n+e-n*e,r=2*n-i;this.r=Pi(r,i,t+1/3),this.g=Pi(r,i,t),this.b=Pi(r,i,t-1/3)}return Ze.toWorkingColorSpace(this,i),this}setStyle(t,e=oe){function n(e){void 0!==e&&parseFloat(e)<1&&console.warn("THREE.Color: Alpha component of "+t+" will be ignored.")}let i;if(i=/^(\w+)\(([^\)]*)\)/.exec(t)){let r;const s=i[1],a=i[2];switch(s){case"rgb":case"rgba":if(r=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(a))return n(r[4]),this.setRGB(Math.min(255,parseInt(r[1],10))/255,Math.min(255,parseInt(r[2],10))/255,Math.min(255,parseInt(r[3],10))/255,e);if(r=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(a))return n(r[4]),this.setRGB(Math.min(100,parseInt(r[1],10))/100,Math.min(100,parseInt(r[2],10))/100,Math.min(100,parseInt(r[3],10))/100,e);break;case"hsl":case"hsla":if(r=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)\%\s*,\s*(\d*\.?\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(a))return n(r[4]),this.setHSL(parseFloat(r[1])/360,parseFloat(r[2])/100,parseFloat(r[3])/100,e);break;default:console.warn("THREE.Color: Unknown color model "+t)}}else if(i=/^\#([A-Fa-f\d]+)$/.exec(t)){const n=i[1],r=n.length;if(3===r)return this.setRGB(parseInt(n.charAt(0),16)/15,parseInt(n.charAt(1),16)/15,parseInt(n.charAt(2),16)/15,e);if(6===r)return this.setHex(parseInt(n,16),e);console.warn("THREE.Color: Invalid hex color "+t)}else if(t&&t.length>0)return this.setColorName(t,e);return this}setColorName(t,e=oe){const n=Ri[t.toLowerCase()];return void 0!==n?this.setHex(n,e):console.warn("THREE.Color: Unknown color "+t),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(t){return this.r=t.r,this.g=t.g,this.b=t.b,this}copySRGBToLinear(t){return this.r=Je(t.r),this.g=Je(t.g),this.b=Je(t.b),this}copyLinearToSRGB(t){return this.r=$e(t.r),this.g=$e(t.g),this.b=$e(t.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(t=oe){return Ze.fromWorkingColorSpace(Ni.copy(this),t),65536*Math.round(Re(255*Ni.r,0,255))+256*Math.round(Re(255*Ni.g,0,255))+Math.round(Re(255*Ni.b,0,255))}getHexString(t=oe){return("000000"+this.getHex(t).toString(16)).slice(-6)}getHSL(t,e=Ze.workingColorSpace){Ze.fromWorkingColorSpace(Ni.copy(this),e);const n=Ni.r,i=Ni.g,r=Ni.b,s=Math.max(n,i,r),a=Math.min(n,i,r);let o,l;const h=(a+s)/2;if(a===s)o=0,l=0;else{const t=s-a;switch(l=h<=.5?t/(s+a):t/(2-s-a),s){case n:o=(i-r)/t+(i<r?6:0);break;case i:o=(r-n)/t+2;break;case r:o=(n-i)/t+4}o/=6}return t.h=o,t.s=l,t.l=h,t}getRGB(t,e=Ze.workingColorSpace){return Ze.fromWorkingColorSpace(Ni.copy(this),e),t.r=Ni.r,t.g=Ni.g,t.b=Ni.b,t}getStyle(t=oe){Ze.fromWorkingColorSpace(Ni.copy(this),t);const e=Ni.r,n=Ni.g,i=Ni.b;return t!==oe?`color(${t} ${e.toFixed(3)} ${n.toFixed(3)} ${i.toFixed(3)})`:`rgb(${Math.round(255*e)},${Math.round(255*n)},${Math.round(255*i)})`}offsetHSL(t,e,n){return this.getHSL(zi),this.setHSL(zi.h+t,zi.s+e,zi.l+n)}add(t){return this.r+=t.r,this.g+=t.g,this.b+=t.b,this}addColors(t,e){return this.r=t.r+e.r,this.g=t.g+e.g,this.b=t.b+e.b,this}addScalar(t){return this.r+=t,this.g+=t,this.b+=t,this}sub(t){return this.r=Math.max(0,this.r-t.r),this.g=Math.max(0,this.g-t.g),this.b=Math.max(0,this.b-t.b),this}multiply(t){return this.r*=t.r,this.g*=t.g,this.b*=t.b,this}multiplyScalar(t){return this.r*=t,this.g*=t,this.b*=t,this}lerp(t,e){return this.r+=(t.r-this.r)*e,this.g+=(t.g-this.g)*e,this.b+=(t.b-this.b)*e,this}lerpColors(t,e,n){return this.r=t.r+(e.r-t.r)*n,this.g=t.g+(e.g-t.g)*n,this.b=t.b+(e.b-t.b)*n,this}lerpHSL(t,e){this.getHSL(zi),t.getHSL(Ii);const n=Ie(zi.h,Ii.h,e),i=Ie(zi.s,Ii.s,e),r=Ie(zi.l,Ii.l,e);return this.setHSL(n,i,r),this}setFromVector3(t){return this.r=t.x,this.g=t.y,this.b=t.z,this}applyMatrix3(t){const e=this.r,n=this.g,i=this.b,r=t.elements;return this.r=r[0]*e+r[3]*n+r[6]*i,this.g=r[1]*e+r[4]*n+r[7]*i,this.b=r[2]*e+r[5]*n+r[8]*i,this}equals(t){return t.r===this.r&&t.g===this.g&&t.b===this.b}fromArray(t,e=0){return this.r=t[e],this.g=t[e+1],this.b=t[e+2],this}toArray(t=[],e=0){return t[e]=this.r,t[e+1]=this.g,t[e+2]=this.b,t}fromBufferAttribute(t,e){return this.r=t.getX(e),this.g=t.getY(e),this.b=t.getZ(e),this}toJSON(){return this.getHex()}*[Symbol.iterator](){yield this.r,yield this.g,yield this.b}};const Ni=new Li;Li.NAMES=Ri;let ki=0;class Di extends Me{constructor(){super(),this.isMaterial=!0,Object.defineProperty(this,"id",{value:ki++}),this.uuid=Ce(),this.name="",this.type="Material",this.blending=1,this.side=0,this.vertexColors=!1,this.opacity=1,this.transparent=!1,this.alphaHash=!1,this.blendSrc=m,this.blendDst=p,this.blendEquation=o,this.blendSrcAlpha=null,this.blendDstAlpha=null,this.blendEquationAlpha=null,this.blendColor=new Li(0,0,0),this.blendAlpha=0,this.depthFunc=3,this.depthTest=!0,this.depthWrite=!0,this.stencilWriteMask=255,this.stencilFunc=519,this.stencilRef=0,this.stencilFuncMask=255,this.stencilFail=qe,this.stencilZFail=qe,this.stencilZPass=qe,this.stencilWrite=!1,this.clippingPlanes=null,this.clipIntersection=!1,this.clipShadows=!1,this.shadowSide=null,this.colorWrite=!0,this.precision=null,this.polygonOffset=!1,this.polygonOffsetFactor=0,this.polygonOffsetUnits=0,this.dithering=!1,this.alphaToCoverage=!1,this.premultipliedAlpha=!1,this.forceSinglePass=!1,this.visible=!0,this.toneMapped=!0,this.userData={},this.version=0,this._alphaTest=0}get alphaTest(){return this._alphaTest}set alphaTest(t){this._alphaTest>0!=t>0&&this.version++,this._alphaTest=t}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(t){if(void 0!==t)for(const e in t){const n=t[e];if(void 0===n){console.warn(`THREE.Material: parameter '${e}' has value of undefined.`);continue}const i=this[e];void 0!==i?i&&i.isColor?i.set(n):i&&i.isVector3&&n&&n.isVector3?i.copy(n):this[e]=n:console.warn(`THREE.Material: '${e}' is not a property of THREE.${this.type}.`)}}toJSON(t){const e=void 0===t||"string"==typeof t;e&&(t={textures:{},images:{}});const n={metadata:{version:4.6,type:"Material",generator:"Material.toJSON"}};function i(t){const e=[];for(const n in t){const i=t[n];delete i.metadata,e.push(i)}return e}if(n.uuid=this.uuid,n.type=this.type,""!==this.name&&(n.name=this.name),this.color&&this.color.isColor&&(n.color=this.color.getHex()),void 0!==this.roughness&&(n.roughness=this.roughness),void 0!==this.metalness&&(n.metalness=this.metalness),void 0!==this.sheen&&(n.sheen=this.sheen),this.sheenColor&&this.sheenColor.isColor&&(n.sheenColor=this.sheenColor.getHex()),void 0!==this.sheenRoughness&&(n.sheenRoughness=this.sheenRoughness),this.emissive&&this.emissive.isColor&&(n.emissive=this.emissive.getHex()),void 0!==this.emissiveIntensity&&1!==this.emissiveIntensity&&(n.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(n.specular=this.specular.getHex()),void 0!==this.specularIntensity&&(n.specularIntensity=this.specularIntensity),this.specularColor&&this.specularColor.isColor&&(n.specularColor=this.specularColor.getHex()),void 0!==this.shininess&&(n.shininess=this.shininess),void 0!==this.clearcoat&&(n.clearcoat=this.clearcoat),void 0!==this.clearcoatRoughness&&(n.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(n.clearcoatMap=this.clearcoatMap.toJSON(t).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(n.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(t).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(n.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(t).uuid,n.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),void 0!==this.dispersion&&(n.dispersion=this.dispersion),void 0!==this.iridescence&&(n.iridescence=this.iridescence),void 0!==this.iridescenceIOR&&(n.iridescenceIOR=this.iridescenceIOR),void 0!==this.iridescenceThicknessRange&&(n.iridescenceThicknessRange=this.iridescenceThicknessRange),this.iridescenceMap&&this.iridescenceMap.isTexture&&(n.iridescenceMap=this.iridescenceMap.toJSON(t).uuid),this.iridescenceThicknessMap&&this.iridescenceThicknessMap.isTexture&&(n.iridescenceThicknessMap=this.iridescenceThicknessMap.toJSON(t).uuid),void 0!==this.anisotropy&&(n.anisotropy=this.anisotropy),void 0!==this.anisotropyRotation&&(n.anisotropyRotation=this.anisotropyRotation),this.anisotropyMap&&this.anisotropyMap.isTexture&&(n.anisotropyMap=this.anisotropyMap.toJSON(t).uuid),this.map&&this.map.isTexture&&(n.map=this.map.toJSON(t).uuid),this.matcap&&this.matcap.isTexture&&(n.matcap=this.matcap.toJSON(t).uuid),this.alphaMap&&this.alphaMap.isTexture&&(n.alphaMap=this.alphaMap.toJSON(t).uuid),this.lightMap&&this.lightMap.isTexture&&(n.lightMap=this.lightMap.toJSON(t).uuid,n.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(n.aoMap=this.aoMap.toJSON(t).uuid,n.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(n.bumpMap=this.bumpMap.toJSON(t).uuid,n.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(n.normalMap=this.normalMap.toJSON(t).uuid,n.normalMapType=this.normalMapType,n.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(n.displacementMap=this.displacementMap.toJSON(t).uuid,n.displacementScale=this.displacementScale,n.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(n.roughnessMap=this.roughnessMap.toJSON(t).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(n.metalnessMap=this.metalnessMap.toJSON(t).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(n.emissiveMap=this.emissiveMap.toJSON(t).uuid),this.specularMap&&this.specularMap.isTexture&&(n.specularMap=this.specularMap.toJSON(t).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(n.specularIntensityMap=this.specularIntensityMap.toJSON(t).uuid),this.specularColorMap&&this.specularColorMap.isTexture&&(n.specularColorMap=this.specularColorMap.toJSON(t).uuid),this.envMap&&this.envMap.isTexture&&(n.envMap=this.envMap.toJSON(t).uuid,void 0!==this.combine&&(n.combine=this.combine)),void 0!==this.envMapRotation&&(n.envMapRotation=this.envMapRotation.toArray()),void 0!==this.envMapIntensity&&(n.envMapIntensity=this.envMapIntensity),void 0!==this.reflectivity&&(n.reflectivity=this.reflectivity),void 0!==this.refractionRatio&&(n.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(n.gradientMap=this.gradientMap.toJSON(t).uuid),void 0!==this.transmission&&(n.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(n.transmissionMap=this.transmissionMap.toJSON(t).uuid),void 0!==this.thickness&&(n.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(n.thicknessMap=this.thicknessMap.toJSON(t).uuid),void 0!==this.attenuationDistance&&this.attenuationDistance!==1/0&&(n.attenuationDistance=this.attenuationDistance),void 0!==this.attenuationColor&&(n.attenuationColor=this.attenuationColor.getHex()),void 0!==this.size&&(n.size=this.size),null!==this.shadowSide&&(n.shadowSide=this.shadowSide),void 0!==this.sizeAttenuation&&(n.sizeAttenuation=this.sizeAttenuation),1!==this.blending&&(n.blending=this.blending),0!==this.side&&(n.side=this.side),!0===this.vertexColors&&(n.vertexColors=!0),this.opacity<1&&(n.opacity=this.opacity),!0===this.transparent&&(n.transparent=!0),this.blendSrc!==m&&(n.blendSrc=this.blendSrc),this.blendDst!==p&&(n.blendDst=this.blendDst),this.blendEquation!==o&&(n.blendEquation=this.blendEquation),null!==this.blendSrcAlpha&&(n.blendSrcAlpha=this.blendSrcAlpha),null!==this.blendDstAlpha&&(n.blendDstAlpha=this.blendDstAlpha),null!==this.blendEquationAlpha&&(n.blendEquationAlpha=this.blendEquationAlpha),this.blendColor&&this.blendColor.isColor&&(n.blendColor=this.blendColor.getHex()),0!==this.blendAlpha&&(n.blendAlpha=this.blendAlpha),3!==this.depthFunc&&(n.depthFunc=this.depthFunc),!1===this.depthTest&&(n.depthTest=this.depthTest),!1===this.depthWrite&&(n.depthWrite=this.depthWrite),!1===this.colorWrite&&(n.colorWrite=this.colorWrite),255!==this.stencilWriteMask&&(n.stencilWriteMask=this.stencilWriteMask),519!==this.stencilFunc&&(n.stencilFunc=this.stencilFunc),0!==this.stencilRef&&(n.stencilRef=this.stencilRef),255!==this.stencilFuncMask&&(n.stencilFuncMask=this.stencilFuncMask),this.stencilFail!==qe&&(n.stencilFail=this.stencilFail),this.stencilZFail!==qe&&(n.stencilZFail=this.stencilZFail),this.stencilZPass!==qe&&(n.stencilZPass=this.stencilZPass),!0===this.stencilWrite&&(n.stencilWrite=this.stencilWrite),void 0!==this.rotation&&0!==this.rotation&&(n.rotation=this.rotation),!0===this.polygonOffset&&(n.polygonOffset=!0),0!==this.polygonOffsetFactor&&(n.polygonOffsetFactor=this.polygonOffsetFactor),0!==this.polygonOffsetUnits&&(n.polygonOffsetUnits=this.polygonOffsetUnits),void 0!==this.linewidth&&1!==this.linewidth&&(n.linewidth=this.linewidth),void 0!==this.dashSize&&(n.dashSize=this.dashSize),void 0!==this.gapSize&&(n.gapSize=this.gapSize),void 0!==this.scale&&(n.scale=this.scale),!0===this.dithering&&(n.dithering=!0),this.alphaTest>0&&(n.alphaTest=this.alphaTest),!0===this.alphaHash&&(n.alphaHash=!0),!0===this.alphaToCoverage&&(n.alphaToCoverage=!0),!0===this.premultipliedAlpha&&(n.premultipliedAlpha=!0),!0===this.forceSinglePass&&(n.forceSinglePass=!0),!0===this.wireframe&&(n.wireframe=!0),this.wireframeLinewidth>1&&(n.wireframeLinewidth=this.wireframeLinewidth),"round"!==this.wireframeLinecap&&(n.wireframeLinecap=this.wireframeLinecap),"round"!==this.wireframeLinejoin&&(n.wireframeLinejoin=this.wireframeLinejoin),!0===this.flatShading&&(n.flatShading=!0),!1===this.visible&&(n.visible=!1),!1===this.toneMapped&&(n.toneMapped=!1),!1===this.fog&&(n.fog=!1),Object.keys(this.userData).length>0&&(n.userData=this.userData),e){const e=i(t.textures),r=i(t.images);e.length>0&&(n.textures=e),r.length>0&&(n.images=r)}return n}clone(){return(new this.constructor).copy(this)}copy(t){this.name=t.name,this.blending=t.blending,this.side=t.side,this.vertexColors=t.vertexColors,this.opacity=t.opacity,this.transparent=t.transparent,this.blendSrc=t.blendSrc,this.blendDst=t.blendDst,this.blendEquation=t.blendEquation,this.blendSrcAlpha=t.blendSrcAlpha,this.blendDstAlpha=t.blendDstAlpha,this.blendEquationAlpha=t.blendEquationAlpha,this.blendColor.copy(t.blendColor),this.blendAlpha=t.blendAlpha,this.depthFunc=t.depthFunc,this.depthTest=t.depthTest,this.depthWrite=t.depthWrite,this.stencilWriteMask=t.stencilWriteMask,this.stencilFunc=t.stencilFunc,this.stencilRef=t.stencilRef,this.stencilFuncMask=t.stencilFuncMask,this.stencilFail=t.stencilFail,this.stencilZFail=t.stencilZFail,this.stencilZPass=t.stencilZPass,this.stencilWrite=t.stencilWrite;const e=t.clippingPlanes;let n=null;if(null!==e){const t=e.length;n=new Array(t);for(let i=0;i!==t;++i)n[i]=e[i].clone()}return this.clippingPlanes=n,this.clipIntersection=t.clipIntersection,this.clipShadows=t.clipShadows,this.shadowSide=t.shadowSide,this.colorWrite=t.colorWrite,this.precision=t.precision,this.polygonOffset=t.polygonOffset,this.polygonOffsetFactor=t.polygonOffsetFactor,this.polygonOffsetUnits=t.polygonOffsetUnits,this.dithering=t.dithering,this.alphaTest=t.alphaTest,this.alphaHash=t.alphaHash,this.alphaToCoverage=t.alphaToCoverage,this.premultipliedAlpha=t.premultipliedAlpha,this.forceSinglePass=t.forceSinglePass,this.visible=t.visible,this.toneMapped=t.toneMapped,this.userData=JSON.parse(JSON.stringify(t.userData)),this}dispose(){this.dispatchEvent({type:"dispose"})}set needsUpdate(t){!0===t&&this.version++}onBuild(){console.warn("Material: onBuild() has been removed.")}}class Ui extends Di{constructor(t){super(),this.isMeshBasicMaterial=!0,this.type="MeshBasicMaterial",this.color=new Li(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new Kn,this.combine=0,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(t)}copy(t){return super.copy(t),this.color.copy(t.color),this.map=t.map,this.lightMap=t.lightMap,this.lightMapIntensity=t.lightMapIntensity,this.aoMap=t.aoMap,this.aoMapIntensity=t.aoMapIntensity,this.specularMap=t.specularMap,this.alphaMap=t.alphaMap,this.envMap=t.envMap,this.envMapRotation.copy(t.envMapRotation),this.combine=t.combine,this.reflectivity=t.reflectivity,this.refractionRatio=t.refractionRatio,this.wireframe=t.wireframe,this.wireframeLinewidth=t.wireframeLinewidth,this.wireframeLinecap=t.wireframeLinecap,this.wireframeLinejoin=t.wireframeLinejoin,this.fog=t.fog,this}}const Oi=Fi();function Fi(){const t=new ArrayBuffer(4),e=new Float32Array(t),n=new Uint32Array(t),i=new Uint32Array(512),r=new Uint32Array(512);for(let l=0;l<256;++l){const t=l-127;t<-27?(i[l]=0,i[256|l]=32768,r[l]=24,r[256|l]=24):t<-14?(i[l]=1024>>-t-14,i[256|l]=1024>>-t-14|32768,r[l]=-t-1,r[256|l]=-t-1):t<=15?(i[l]=t+15<<10,i[256|l]=t+15<<10|32768,r[l]=13,r[256|l]=13):t<128?(i[l]=31744,i[256|l]=64512,r[l]=24,r[256|l]=24):(i[l]=31744,i[256|l]=64512,r[l]=13,r[256|l]=13)}const s=new Uint32Array(2048),a=new Uint32Array(64),o=new Uint32Array(64);for(let l=1;l<1024;++l){let t=l<<13,e=0;for(;!(8388608&t);)t<<=1,e-=8388608;t&=-8388609,e+=947912704,s[l]=t|e}for(let l=1024;l<2048;++l)s[l]=939524096+(l-1024<<13);for(let l=1;l<31;++l)a[l]=l<<23;a[31]=1199570944,a[32]=2147483648;for(let l=33;l<63;++l)a[l]=2147483648+(l-32<<23);a[63]=3347054592;for(let l=1;l<64;++l)32!==l&&(o[l]=1024);return{floatView:e,uint32View:n,baseTable:i,shiftTable:r,mantissaTable:s,exponentTable:a,offsetTable:o}}function Bi(t){Math.abs(t)>65504&&console.warn("THREE.DataUtils.toHalfFloat(): Value out of range."),t=Re(t,-65504,65504),Oi.floatView[0]=t;const e=Oi.uint32View[0],n=e>>23&511;return Oi.baseTable[n]+((8388607&e)>>Oi.shiftTable[n])}function Vi(t){const e=t>>10;return Oi.uint32View[0]=Oi.mantissaTable[Oi.offsetTable[e]+(1023&t)]+Oi.exponentTable[e],Oi.floatView[0]}const Hi={toHalfFloat:Bi,fromHalfFloat:Vi},Gi=new un,Wi=new ke;let ji=class{constructor(t,e,n=!1){if(Array.isArray(t))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.isBufferAttribute=!0,this.name="",this.array=t,this.itemSize=e,this.count=void 0!==t?t.length/e:0,this.normalized=n,this.usage=ye,this.updateRanges=[],this.gpuType=nt,this.version=0}onUploadCallback(){}set needsUpdate(t){!0===t&&this.version++}setUsage(t){return this.usage=t,this}addUpdateRange(t,e){this.updateRanges.push({start:t,count:e})}clearUpdateRanges(){this.updateRanges.length=0}copy(t){return this.name=t.name,this.array=new t.array.constructor(t.array),this.itemSize=t.itemSize,this.count=t.count,this.normalized=t.normalized,this.usage=t.usage,this.gpuType=t.gpuType,this}copyAt(t,e,n){t*=this.itemSize,n*=e.itemSize;for(let i=0,r=this.itemSize;i<r;i++)this.array[t+i]=e.array[n+i];return this}copyArray(t){return this.array.set(t),this}applyMatrix3(t){if(2===this.itemSize)for(let e=0,n=this.count;e<n;e++)Wi.fromBufferAttribute(this,e),Wi.applyMatrix3(t),this.setXY(e,Wi.x,Wi.y);else if(3===this.itemSize)for(let e=0,n=this.count;e<n;e++)Gi.fromBufferAttribute(this,e),Gi.applyMatrix3(t),this.setXYZ(e,Gi.x,Gi.y,Gi.z);return this}applyMatrix4(t){for(let e=0,n=this.count;e<n;e++)Gi.fromBufferAttribute(this,e),Gi.applyMatrix4(t),this.setXYZ(e,Gi.x,Gi.y,Gi.z);return this}applyNormalMatrix(t){for(let e=0,n=this.count;e<n;e++)Gi.fromBufferAttribute(this,e),Gi.applyNormalMatrix(t),this.setXYZ(e,Gi.x,Gi.y,Gi.z);return this}transformDirection(t){for(let e=0,n=this.count;e<n;e++)Gi.fromBufferAttribute(this,e),Gi.transformDirection(t),this.setXYZ(e,Gi.x,Gi.y,Gi.z);return this}set(t,e=0){return this.array.set(t,e),this}getComponent(t,e){let n=this.array[t*this.itemSize+e];return this.normalized&&(n=Pe(n,this.array)),n}setComponent(t,e,n){return this.normalized&&(n=Le(n,this.array)),this.array[t*this.itemSize+e]=n,this}getX(t){let e=this.array[t*this.itemSize];return this.normalized&&(e=Pe(e,this.array)),e}setX(t,e){return this.normalized&&(e=Le(e,this.array)),this.array[t*this.itemSize]=e,this}getY(t){let e=this.array[t*this.itemSize+1];return this.normalized&&(e=Pe(e,this.array)),e}setY(t,e){return this.normalized&&(e=Le(e,this.array)),this.array[t*this.itemSize+1]=e,this}getZ(t){let e=this.array[t*this.itemSize+2];return this.normalized&&(e=Pe(e,this.array)),e}setZ(t,e){return this.normalized&&(e=Le(e,this.array)),this.array[t*this.itemSize+2]=e,this}getW(t){let e=this.array[t*this.itemSize+3];return this.normalized&&(e=Pe(e,this.array)),e}setW(t,e){return this.normalized&&(e=Le(e,this.array)),this.array[t*this.itemSize+3]=e,this}setXY(t,e,n){return t*=this.itemSize,this.normalized&&(e=Le(e,this.array),n=Le(n,this.array)),this.array[t+0]=e,this.array[t+1]=n,this}setXYZ(t,e,n,i){return t*=this.itemSize,this.normalized&&(e=Le(e,this.array),n=Le(n,this.array),i=Le(i,this.array)),this.array[t+0]=e,this.array[t+1]=n,this.array[t+2]=i,this}setXYZW(t,e,n,i,r){return t*=this.itemSize,this.normalized&&(e=Le(e,this.array),n=Le(n,this.array),i=Le(i,this.array),r=Le(r,this.array)),this.array[t+0]=e,this.array[t+1]=n,this.array[t+2]=i,this.array[t+3]=r,this}onUpload(t){return this.onUploadCallback=t,this}clone(){return new this.constructor(this.array,this.itemSize).copy(this)}toJSON(){const t={itemSize:this.itemSize,type:this.array.constructor.name,array:Array.from(this.array),normalized:this.normalized};return""!==this.name&&(t.name=this.name),this.usage!==ye&&(t.usage=this.usage),t}};class Xi extends ji{constructor(t,e,n){super(new Uint16Array(t),e,n)}}class Yi extends ji{constructor(t,e,n){super(new Uint32Array(t),e,n)}}class Zi extends ji{constructor(t,e,n){super(new Float32Array(t),e,n)}}let Ji=0;const $i=new Vn,Ki=new pi,Qi=new un,tr=new pn,er=new pn,nr=new un;class ir extends Me{constructor(){super(),this.isBufferGeometry=!0,Object.defineProperty(this,"id",{value:Ji++}),this.uuid=Ce(),this.name="",this.type="BufferGeometry",this.index=null,this.indirect=null,this.attributes={},this.morphAttributes={},this.morphTargetsRelative=!1,this.groups=[],this.boundingBox=null,this.boundingSphere=null,this.drawRange={start:0,count:1/0},this.userData={}}getIndex(){return this.index}setIndex(t){return Array.isArray(t)?this.index=new(Oe(t)?Yi:Xi)(t,1):this.index=t,this}setIndirect(t){return this.indirect=t,this}getIndirect(){return this.indirect}getAttribute(t){return this.attributes[t]}setAttribute(t,e){return this.attributes[t]=e,this}deleteAttribute(t){return delete this.attributes[t],this}hasAttribute(t){return void 0!==this.attributes[t]}addGroup(t,e,n=0){this.groups.push({start:t,count:e,materialIndex:n})}clearGroups(){this.groups=[]}setDrawRange(t,e){this.drawRange.start=t,this.drawRange.count=e}applyMatrix4(t){const e=this.attributes.position;void 0!==e&&(e.applyMatrix4(t),e.needsUpdate=!0);const n=this.attributes.normal;if(void 0!==n){const e=(new De).getNormalMatrix(t);n.applyNormalMatrix(e),n.needsUpdate=!0}const i=this.attributes.tangent;return void 0!==i&&(i.transformDirection(t),i.needsUpdate=!0),null!==this.boundingBox&&this.computeBoundingBox(),null!==this.boundingSphere&&this.computeBoundingSphere(),this}applyQuaternion(t){return $i.makeRotationFromQuaternion(t),this.applyMatrix4($i),this}rotateX(t){return $i.makeRotationX(t),this.applyMatrix4($i),this}rotateY(t){return $i.makeRotationY(t),this.applyMatrix4($i),this}rotateZ(t){return $i.makeRotationZ(t),this.applyMatrix4($i),this}translate(t,e,n){return $i.makeTranslation(t,e,n),this.applyMatrix4($i),this}scale(t,e,n){return $i.makeScale(t,e,n),this.applyMatrix4($i),this}lookAt(t){return Ki.lookAt(t),Ki.updateMatrix(),this.applyMatrix4(Ki.matrix),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(Qi).negate(),this.translate(Qi.x,Qi.y,Qi.z),this}setFromPoints(t){const e=this.getAttribute("position");if(void 0===e){const e=[];for(let n=0,i=t.length;n<i;n++){const i=t[n];e.push(i.x,i.y,i.z||0)}this.setAttribute("position",new Zi(e,3))}else{const n=Math.min(t.length,e.count);for(let i=0;i<n;i++){const n=t[i];e.setXYZ(i,n.x,n.y,n.z||0)}t.length>e.count&&console.warn("THREE.BufferGeometry: Buffer size too small for points data. Use .dispose() and create a new geometry."),e.needsUpdate=!0}return this}computeBoundingBox(){null===this.boundingBox&&(this.boundingBox=new pn);const t=this.attributes.position,e=this.morphAttributes.position;if(t&&t.isGLBufferAttribute)return console.error("THREE.BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box.",this),void this.boundingBox.set(new un(-1/0,-1/0,-1/0),new un(1/0,1/0,1/0));if(void 0!==t){if(this.boundingBox.setFromBufferAttribute(t),e)for(let n=0,i=e.length;n<i;n++){const t=e[n];tr.setFromBufferAttribute(t),this.morphTargetsRelative?(nr.addVectors(this.boundingBox.min,tr.min),this.boundingBox.expandByPoint(nr),nr.addVectors(this.boundingBox.max,tr.max),this.boundingBox.expandByPoint(nr)):(this.boundingBox.expandByPoint(tr.min),this.boundingBox.expandByPoint(tr.max))}}else this.boundingBox.makeEmpty();(isNaN(this.boundingBox.min.x)||isNaN(this.boundingBox.min.y)||isNaN(this.boundingBox.min.z))&&console.error('THREE.BufferGeometry.computeBoundingBox(): Computed min/max have NaN values. The "position" attribute is likely to have NaN values.',this)}computeBoundingSphere(){null===this.boundingSphere&&(this.boundingSphere=new Pn);const t=this.attributes.position,e=this.morphAttributes.position;if(t&&t.isGLBufferAttribute)return console.error("THREE.BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere.",this),void this.boundingSphere.set(new un,1/0);if(t){const n=this.boundingSphere.center;if(tr.setFromBufferAttribute(t),e)for(let t=0,r=e.length;t<r;t++){const n=e[t];er.setFromBufferAttribute(n),this.morphTargetsRelative?(nr.addVectors(tr.min,er.min),tr.expandByPoint(nr),nr.addVectors(tr.max,er.max),tr.expandByPoint(nr)):(tr.expandByPoint(er.min),tr.expandByPoint(er.max))}tr.getCenter(n);let i=0;for(let e=0,r=t.count;e<r;e++)nr.fromBufferAttribute(t,e),i=Math.max(i,n.distanceToSquared(nr));if(e)for(let r=0,s=e.length;r<s;r++){const s=e[r],a=this.morphTargetsRelative;for(let e=0,r=s.count;e<r;e++)nr.fromBufferAttribute(s,e),a&&(Qi.fromBufferAttribute(t,e),nr.add(Qi)),i=Math.max(i,n.distanceToSquared(nr))}this.boundingSphere.radius=Math.sqrt(i),isNaN(this.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this)}}computeTangents(){const t=this.index,e=this.attributes;if(null===t||void 0===e.position||void 0===e.normal||void 0===e.uv)return void console.error("THREE.BufferGeometry: .computeTangents() failed. Missing required attributes (index, position, normal or uv)");const n=e.position,i=e.normal,r=e.uv;!1===this.hasAttribute("tangent")&&this.setAttribute("tangent",new ji(new Float32Array(4*n.count),4));const s=this.getAttribute("tangent"),a=[],o=[];for(let b=0;b<n.count;b++)a[b]=new un,o[b]=new un;const l=new un,h=new un,c=new un,q=new ke,u=new ke,d=new ke,m=new un,p=new un;function f(t,e,i){l.fromBufferAttribute(n,t),h.fromBufferAttribute(n,e),c.fromBufferAttribute(n,i),q.fromBufferAttribute(r,t),u.fromBufferAttribute(r,e),d.fromBufferAttribute(r,i),h.sub(l),c.sub(l),u.sub(q),d.sub(q);const s=1/(u.x*d.y-d.x*u.y);isFinite(s)&&(m.copy(h).multiplyScalar(d.y).addScaledVector(c,-u.y).multiplyScalar(s),p.copy(c).multiplyScalar(u.x).addScaledVector(h,-d.x).multiplyScalar(s),a[t].add(m),a[e].add(m),a[i].add(m),o[t].add(p),o[e].add(p),o[i].add(p))}let g=this.groups;0===g.length&&(g=[{start:0,count:t.count}]);for(let b=0,M=g.length;b<M;++b){const e=g[b],n=e.start;for(let i=n,r=n+e.count;i<r;i+=3)f(t.getX(i+0),t.getX(i+1),t.getX(i+2))}const x=new un,_=new un,y=new un,v=new un;function w(t){y.fromBufferAttribute(i,t),v.copy(y);const e=a[t];x.copy(e),x.sub(y.multiplyScalar(y.dot(e))).normalize(),_.crossVectors(v,e);const n=_.dot(o[t])<0?-1:1;s.setXYZW(t,x.x,x.y,x.z,n)}for(let b=0,M=g.length;b<M;++b){const e=g[b],n=e.start;for(let i=n,r=n+e.count;i<r;i+=3)w(t.getX(i+0)),w(t.getX(i+1)),w(t.getX(i+2))}}computeVertexNormals(){const t=this.index,e=this.getAttribute("position");if(void 0!==e){let n=this.getAttribute("normal");if(void 0===n)n=new ji(new Float32Array(3*e.count),3),this.setAttribute("normal",n);else for(let t=0,e=n.count;t<e;t++)n.setXYZ(t,0,0,0);const i=new un,r=new un,s=new un,a=new un,o=new un,l=new un,h=new un,c=new un;if(t)for(let q=0,u=t.count;q<u;q+=3){const u=t.getX(q+0),d=t.getX(q+1),m=t.getX(q+2);i.fromBufferAttribute(e,u),r.fromBufferAttribute(e,d),s.fromBufferAttribute(e,m),h.subVectors(s,r),c.subVectors(i,r),h.cross(c),a.fromBufferAttribute(n,u),o.fromBufferAttribute(n,d),l.fromBufferAttribute(n,m),a.add(h),o.add(h),l.add(h),n.setXYZ(u,a.x,a.y,a.z),n.setXYZ(d,o.x,o.y,o.z),n.setXYZ(m,l.x,l.y,l.z)}else for(let t=0,q=e.count;t<q;t+=3)i.fromBufferAttribute(e,t+0),r.fromBufferAttribute(e,t+1),s.fromBufferAttribute(e,t+2),h.subVectors(s,r),c.subVectors(i,r),h.cross(c),n.setXYZ(t+0,h.x,h.y,h.z),n.setXYZ(t+1,h.x,h.y,h.z),n.setXYZ(t+2,h.x,h.y,h.z);this.normalizeNormals(),n.needsUpdate=!0}}normalizeNormals(){const t=this.attributes.normal;for(let e=0,n=t.count;e<n;e++)nr.fromBufferAttribute(t,e),nr.normalize(),t.setXYZ(e,nr.x,nr.y,nr.z)}toNonIndexed(){function t(t,e){const n=t.array,i=t.itemSize,r=t.normalized,s=new n.constructor(e.length*i);let a=0,o=0;for(let l=0,h=e.length;l<h;l++){a=t.isInterleavedBufferAttribute?e[l]*t.data.stride+t.offset:e[l]*i;for(let t=0;t<i;t++)s[o++]=n[a++]}return new ji(s,i,r)}if(null===this.index)return console.warn("THREE.BufferGeometry.toNonIndexed(): BufferGeometry is already non-indexed."),this;const e=new ir,n=this.index.array,i=this.attributes;for(const a in i){const r=t(i[a],n);e.setAttribute(a,r)}const r=this.morphAttributes;for(const a in r){const i=[],s=r[a];for(let e=0,r=s.length;e<r;e++){const r=t(s[e],n);i.push(r)}e.morphAttributes[a]=i}e.morphTargetsRelative=this.morphTargetsRelative;const s=this.groups;for(let a=0,o=s.length;a<o;a++){const t=s[a];e.addGroup(t.start,t.count,t.materialIndex)}return e}toJSON(){const t={metadata:{version:4.6,type:"BufferGeometry",generator:"BufferGeometry.toJSON"}};if(t.uuid=this.uuid,t.type=this.type,""!==this.name&&(t.name=this.name),Object.keys(this.userData).length>0&&(t.userData=this.userData),void 0!==this.parameters){const e=this.parameters;for(const n in e)void 0!==e[n]&&(t[n]=e[n]);return t}t.data={attributes:{}};const e=this.index;null!==e&&(t.data.index={type:e.array.constructor.name,array:Array.prototype.slice.call(e.array)});const n=this.attributes;for(const o in n){const e=n[o];t.data.attributes[o]=e.toJSON(t.data)}const i={};let r=!1;for(const o in this.morphAttributes){const e=this.morphAttributes[o],n=[];for(let i=0,r=e.length;i<r;i++){const r=e[i];n.push(r.toJSON(t.data))}n.length>0&&(i[o]=n,r=!0)}r&&(t.data.morphAttributes=i,t.data.morphTargetsRelative=this.morphTargetsRelative);const s=this.groups;s.length>0&&(t.data.groups=JSON.parse(JSON.stringify(s)));const a=this.boundingSphere;return null!==a&&(t.data.boundingSphere={center:a.center.toArray(),radius:a.radius}),t}clone(){return(new this.constructor).copy(this)}copy(t){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;const e={};this.name=t.name;const n=t.index;null!==n&&this.setIndex(n.clone(e));const i=t.attributes;for(const l in i){const t=i[l];this.setAttribute(l,t.clone(e))}const r=t.morphAttributes;for(const l in r){const t=[],n=r[l];for(let i=0,r=n.length;i<r;i++)t.push(n[i].clone(e));this.morphAttributes[l]=t}this.morphTargetsRelative=t.morphTargetsRelative;const s=t.groups;for(let l=0,h=s.length;l<h;l++){const t=s[l];this.addGroup(t.start,t.count,t.materialIndex)}const a=t.boundingBox;null!==a&&(this.boundingBox=a.clone());const o=t.boundingSphere;return null!==o&&(this.boundingSphere=o.clone()),this.drawRange.start=t.drawRange.start,this.drawRange.count=t.drawRange.count,this.userData=t.userData,this}dispose(){this.dispatchEvent({type:"dispose"})}}const rr=new Vn,sr=new Bn,ar=new Pn,or=new un,lr=new un,hr=new un,cr=new un,qr=new un,ur=new un,dr=new un,mr=new un;class pr extends pi{constructor(t=new ir,e=new Ui){super(),this.isMesh=!0,this.type="Mesh",this.geometry=t,this.material=e,this.updateMorphTargets()}copy(t,e){return super.copy(t,e),void 0!==t.morphTargetInfluences&&(this.morphTargetInfluences=t.morphTargetInfluences.slice()),void 0!==t.morphTargetDictionary&&(this.morphTargetDictionary=Object.assign({},t.morphTargetDictionary)),this.material=Array.isArray(t.material)?t.material.slice():t.material,this.geometry=t.geometry,this}updateMorphTargets(){const t=this.geometry.morphAttributes,e=Object.keys(t);if(e.length>0){const n=t[e[0]];if(void 0!==n){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let t=0,e=n.length;t<e;t++){const e=n[t].name||String(t);this.morphTargetInfluences.push(0),this.morphTargetDictionary[e]=t}}}}getVertexPosition(t,e){const n=this.geometry,i=n.attributes.position,r=n.morphAttributes.position,s=n.morphTargetsRelative;e.fromBufferAttribute(i,t);const a=this.morphTargetInfluences;if(r&&a){ur.set(0,0,0);for(let n=0,i=r.length;n<i;n++){const i=a[n],o=r[n];0!==i&&(qr.fromBufferAttribute(o,t),s?ur.addScaledVector(qr,i):ur.addScaledVector(qr.sub(e),i))}e.add(ur)}return e}raycast(t,e){const n=this.geometry,i=this.material,r=this.matrixWorld;if(void 0!==i){if(null===n.boundingSphere&&n.computeBoundingSphere(),ar.copy(n.boundingSphere),ar.applyMatrix4(r),sr.copy(t.ray).recast(t.near),!1===ar.containsPoint(sr.origin)){if(null===sr.intersectSphere(ar,or))return;if(sr.origin.distanceToSquared(or)>(t.far-t.near)**2)return}rr.copy(r).invert(),sr.copy(t.ray).applyMatrix4(rr),null!==n.boundingBox&&!1===sr.intersectsBox(n.boundingBox)||this._computeIntersections(t,e,sr)}}_computeIntersections(t,e,n){let i;const r=this.geometry,s=this.material,a=r.index,o=r.attributes.position,l=r.attributes.uv,h=r.attributes.uv1,c=r.attributes.normal,q=r.groups,u=r.drawRange;if(null!==a)if(Array.isArray(s))for(let d=0,m=q.length;d<m;d++){const r=q[d],o=s[r.materialIndex];for(let s=Math.max(r.start,u.start),q=Math.min(a.count,Math.min(r.start+r.count,u.start+u.count));s<q;s+=3){i=fr(this,o,t,n,l,h,c,a.getX(s),a.getX(s+1),a.getX(s+2)),i&&(i.faceIndex=Math.floor(s/3),i.face.materialIndex=r.materialIndex,e.push(i))}}else{for(let r=Math.max(0,u.start),o=Math.min(a.count,u.start+u.count);r<o;r+=3){i=fr(this,s,t,n,l,h,c,a.getX(r),a.getX(r+1),a.getX(r+2)),i&&(i.faceIndex=Math.floor(r/3),e.push(i))}}else if(void 0!==o)if(Array.isArray(s))for(let d=0,m=q.length;d<m;d++){const r=q[d],a=s[r.materialIndex];for(let s=Math.max(r.start,u.start),q=Math.min(o.count,Math.min(r.start+r.count,u.start+u.count));s<q;s+=3){i=fr(this,a,t,n,l,h,c,s,s+1,s+2),i&&(i.faceIndex=Math.floor(s/3),i.face.materialIndex=r.materialIndex,e.push(i))}}else{for(let r=Math.max(0,u.start),a=Math.min(o.count,u.start+u.count);r<a;r+=3){i=fr(this,s,t,n,l,h,c,r,r+1,r+2),i&&(i.faceIndex=Math.floor(r/3),e.push(i))}}}}function fr(t,e,n,i,r,s,a,o,l,h){t.getVertexPosition(o,lr),t.getVertexPosition(l,hr),t.getVertexPosition(h,cr);const c=function(t,e,n,i,r,s,a,o){let l;if(l=1===e.side?i.intersectTriangle(a,s,r,!0,o):i.intersectTriangle(r,s,a,0===e.side,o),null===l)return null;mr.copy(o),mr.applyMatrix4(t.matrixWorld);const h=n.ray.origin.distanceTo(mr);return h<n.near||h>n.far?null:{distance:h,point:mr.clone(),object:t}}(t,e,n,i,lr,hr,cr,dr);if(c){const t=new un;Ci.getBarycoord(dr,lr,hr,cr,t),r&&(c.uv=Ci.getInterpolatedAttribute(r,o,l,h,t,new ke)),s&&(c.uv1=Ci.getInterpolatedAttribute(s,o,l,h,t,new ke)),a&&(c.normal=Ci.getInterpolatedAttribute(a,o,l,h,t,new un),c.normal.dot(i.direction)>0&&c.normal.multiplyScalar(-1));const e={a:o,b:l,c:h,normal:new un,materialIndex:0};Ci.getNormal(lr,hr,cr,e.normal),c.face=e,c.barycoord=t}return c}class gr extends ir{constructor(t=1,e=1,n=1,i=1,r=1,s=1){super(),this.type="BoxGeometry",this.parameters={width:t,height:e,depth:n,widthSegments:i,heightSegments:r,depthSegments:s};const a=this;i=Math.floor(i),r=Math.floor(r),s=Math.floor(s);const o=[],l=[],h=[],c=[];let q=0,u=0;function d(t,e,n,i,r,s,d,m,p,f,g){const x=s/p,_=d/f,y=s/2,v=d/2,w=m/2,b=p+1,M=f+1;let S=0,T=0;const E=new un;for(let a=0;a<M;a++){const s=a*_-v;for(let o=0;o<b;o++){const q=o*x-y;E[t]=q*i,E[e]=s*r,E[n]=w,l.push(E.x,E.y,E.z),E[t]=0,E[e]=0,E[n]=m>0?1:-1,h.push(E.x,E.y,E.z),c.push(o/p),c.push(1-a/f),S+=1}}for(let a=0;a<f;a++)for(let t=0;t<p;t++){const e=q+t+b*a,n=q+t+b*(a+1),i=q+(t+1)+b*(a+1),r=q+(t+1)+b*a;o.push(e,n,r),o.push(n,i,r),T+=6}a.addGroup(u,T,g),u+=T,q+=S}d("z","y","x",-1,-1,n,e,t,s,r,0),d("z","y","x",1,-1,n,e,-t,s,r,1),d("x","z","y",1,1,t,n,e,i,s,2),d("x","z","y",1,-1,t,n,-e,i,s,3),d("x","y","z",1,-1,t,e,n,i,r,4),d("x","y","z",-1,-1,t,e,-n,i,r,5),this.setIndex(o),this.setAttribute("position",new Zi(l,3)),this.setAttribute("normal",new Zi(h,3)),this.setAttribute("uv",new Zi(c,2))}copy(t){return super.copy(t),this.parameters=Object.assign({},t.parameters),this}static fromJSON(t){return new gr(t.width,t.height,t.depth,t.widthSegments,t.heightSegments,t.depthSegments)}}function xr(t){const e={};for(const n in t){e[n]={};for(const i in t[n]){const r=t[n][i];r&&(r.isColor||r.isMatrix3||r.isMatrix4||r.isVector2||r.isVector3||r.isVector4||r.isTexture||r.isQuaternion)?r.isRenderTargetTexture?(console.warn("UniformsUtils: Textures of render targets cannot be cloned via cloneUniforms() or mergeUniforms()."),e[n][i]=null):e[n][i]=r.clone():Array.isArray(r)?e[n][i]=r.slice():e[n][i]=r}}return e}function _r(t){const e={};for(let n=0;n<t.length;n++){const i=xr(t[n]);for(const t in i)e[t]=i[t]}return e}function yr(t){const e=t.getRenderTarget();return null===e?t.outputColorSpace:!0===e.isXRRenderTarget?e.texture.colorSpace:Ze.workingColorSpace}const vr={clone:xr,merge:_r};class wr extends Di{constructor(t){super(),this.isShaderMaterial=!0,this.type="ShaderMaterial",this.defines={},this.uniforms={},this.uniformsGroups=[],this.vertexShader="void main() {\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n}",this.fragmentShader="void main() {\n\tgl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\n}",this.linewidth=1,this.wireframe=!1,this.wireframeLinewidth=1,this.fog=!1,this.lights=!1,this.clipping=!1,this.forceSinglePass=!0,this.extensions={clipCullDistance:!1,multiDraw:!1},this.defaultAttributeValues={color:[1,1,1],uv:[0,0],uv1:[0,0]},this.index0AttributeName=void 0,this.uniformsNeedUpdate=!1,this.glslVersion=null,void 0!==t&&this.setValues(t)}copy(t){return super.copy(t),this.fragmentShader=t.fragmentShader,this.vertexShader=t.vertexShader,this.uniforms=xr(t.uniforms),this.uniformsGroups=function(t){const e=[];for(let n=0;n<t.length;n++)e.push(t[n].clone());return e}(t.uniformsGroups),this.defines=Object.assign({},t.defines),this.wireframe=t.wireframe,this.wireframeLinewidth=t.wireframeLinewidth,this.fog=t.fog,this.lights=t.lights,this.clipping=t.clipping,this.extensions=Object.assign({},t.extensions),this.glslVersion=t.glslVersion,this}toJSON(t){const e=super.toJSON(t);e.glslVersion=this.glslVersion,e.uniforms={};for(const i in this.uniforms){const n=this.uniforms[i].value;n&&n.isTexture?e.uniforms[i]={type:"t",value:n.toJSON(t).uuid}:n&&n.isColor?e.uniforms[i]={type:"c",value:n.getHex()}:n&&n.isVector2?e.uniforms[i]={type:"v2",value:n.toArray()}:n&&n.isVector3?e.uniforms[i]={type:"v3",value:n.toArray()}:n&&n.isVector4?e.uniforms[i]={type:"v4",value:n.toArray()}:n&&n.isMatrix3?e.uniforms[i]={type:"m3",value:n.toArray()}:n&&n.isMatrix4?e.uniforms[i]={type:"m4",value:n.toArray()}:e.uniforms[i]={value:n}}Object.keys(this.defines).length>0&&(e.defines=this.defines),e.vertexShader=this.vertexShader,e.fragmentShader=this.fragmentShader,e.lights=this.lights,e.clipping=this.clipping;const n={};for(const i in this.extensions)!0===this.extensions[i]&&(n[i]=!0);return Object.keys(n).length>0&&(e.extensions=n),e}}class br extends pi{constructor(){super(),this.isCamera=!0,this.type="Camera",this.matrixWorldInverse=new Vn,this.projectionMatrix=new Vn,this.projectionMatrixInverse=new Vn,this.coordinateSystem=we}copy(t,e){return super.copy(t,e),this.matrixWorldInverse.copy(t.matrixWorldInverse),this.projectionMatrix.copy(t.projectionMatrix),this.projectionMatrixInverse.copy(t.projectionMatrixInverse),this.coordinateSystem=t.coordinateSystem,this}getWorldDirection(t){return super.getWorldDirection(t).negate()}updateMatrixWorld(t){super.updateMatrixWorld(t),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(t,e){super.updateWorldMatrix(t,e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}clone(){return(new this.constructor).copy(this)}}const Mr=new un,Sr=new ke,Tr=new ke;class Er extends br{constructor(t=50,e=1,n=.1,i=2e3){super(),this.isPerspectiveCamera=!0,this.type="PerspectiveCamera",this.fov=t,this.zoom=1,this.near=n,this.far=i,this.focus=10,this.aspect=e,this.view=null,this.filmGauge=35,this.filmOffset=0,this.updateProjectionMatrix()}copy(t,e){return super.copy(t,e),this.fov=t.fov,this.zoom=t.zoom,this.near=t.near,this.far=t.far,this.focus=t.focus,this.aspect=t.aspect,this.view=null===t.view?null:Object.assign({},t.view),this.filmGauge=t.filmGauge,this.filmOffset=t.filmOffset,this}setFocalLength(t){const e=.5*this.getFilmHeight()/t;this.fov=2*Ae*Math.atan(e),this.updateProjectionMatrix()}getFocalLength(){const t=Math.tan(.5*Ee*this.fov);return.5*this.getFilmHeight()/t}getEffectiveFOV(){return 2*Ae*Math.atan(Math.tan(.5*Ee*this.fov)/this.zoom)}getFilmWidth(){return this.filmGauge*Math.min(this.aspect,1)}getFilmHeight(){return this.filmGauge/Math.max(this.aspect,1)}getViewBounds(t,e,n){Mr.set(-1,-1,.5).applyMatrix4(this.projectionMatrixInverse),e.set(Mr.x,Mr.y).multiplyScalar(-t/Mr.z),Mr.set(1,1,.5).applyMatrix4(this.projectionMatrixInverse),n.set(Mr.x,Mr.y).multiplyScalar(-t/Mr.z)}getViewSize(t,e){return this.getViewBounds(t,Sr,Tr),e.subVectors(Tr,Sr)}setViewOffset(t,e,n,i,r,s){this.aspect=t/e,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=t,this.view.fullHeight=e,this.view.offsetX=n,this.view.offsetY=i,this.view.width=r,this.view.height=s,this.updateProjectionMatrix()}clearViewOffset(){null!==this.view&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const t=this.near;let e=t*Math.tan(.5*Ee*this.fov)/this.zoom,n=2*e,i=this.aspect*n,r=-.5*i;const s=this.view;if(null!==this.view&&this.view.enabled){const t=s.fullWidth,a=s.fullHeight;r+=s.offsetX*i/t,e-=s.offsetY*n/a,i*=s.width/t,n*=s.height/a}const a=this.filmOffset;0!==a&&(r+=t*a/this.getFilmWidth()),this.projectionMatrix.makePerspective(r,r+i,e,e-n,t,this.far,this.coordinateSystem),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(t){const e=super.toJSON(t);return e.object.fov=this.fov,e.object.zoom=this.zoom,e.object.near=this.near,e.object.far=this.far,e.object.focus=this.focus,e.object.aspect=this.aspect,null!==this.view&&(e.object.view=Object.assign({},this.view)),e.object.filmGauge=this.filmGauge,e.object.filmOffset=this.filmOffset,e}}const Ar=-90;class Cr extends pi{constructor(t,e,n){super(),this.type="CubeCamera",this.renderTarget=n,this.coordinateSystem=null,this.activeMipmapLevel=0;const i=new Er(Ar,1,t,e);i.layers=this.layers,this.add(i);const r=new Er(Ar,1,t,e);r.layers=this.layers,this.add(r);const s=new Er(Ar,1,t,e);s.layers=this.layers,this.add(s);const a=new Er(Ar,1,t,e);a.layers=this.layers,this.add(a);const o=new Er(Ar,1,t,e);o.layers=this.layers,this.add(o);const l=new Er(Ar,1,t,e);l.layers=this.layers,this.add(l)}updateCoordinateSystem(){const t=this.coordinateSystem,e=this.children.concat(),[n,i,r,s,a,o]=e;for(const l of e)this.remove(l);if(t===we)n.up.set(0,1,0),n.lookAt(1,0,0),i.up.set(0,1,0),i.lookAt(-1,0,0),r.up.set(0,0,-1),r.lookAt(0,1,0),s.up.set(0,0,1),s.lookAt(0,-1,0),a.up.set(0,1,0),a.lookAt(0,0,1),o.up.set(0,1,0),o.lookAt(0,0,-1);else{if(t!==be)throw new Error("THREE.CubeCamera.updateCoordinateSystem(): Invalid coordinate system: "+t);n.up.set(0,-1,0),n.lookAt(-1,0,0),i.up.set(0,-1,0),i.lookAt(1,0,0),r.up.set(0,0,1),r.lookAt(0,1,0),s.up.set(0,0,-1),s.lookAt(0,-1,0),a.up.set(0,-1,0),a.lookAt(0,0,1),o.up.set(0,-1,0),o.lookAt(0,0,-1)}for(const l of e)this.add(l),l.updateMatrixWorld()}update(t,e){null===this.parent&&this.updateMatrixWorld();const{renderTarget:n,activeMipmapLevel:i}=this;this.coordinateSystem!==t.coordinateSystem&&(this.coordinateSystem=t.coordinateSystem,this.updateCoordinateSystem());const[r,s,a,o,l,h]=this.children,c=t.getRenderTarget(),q=t.getActiveCubeFace(),u=t.getActiveMipmapLevel(),d=t.xr.enabled;t.xr.enabled=!1;const m=n.texture.generateMipmaps;n.texture.generateMipmaps=!1,t.setRenderTarget(n,0,i),t.render(e,r),t.setRenderTarget(n,1,i),t.render(e,s),t.setRenderTarget(n,2,i),t.render(e,a),t.setRenderTarget(n,3,i),t.render(e,o),t.setRenderTarget(n,4,i),t.render(e,l),n.texture.generateMipmaps=m,t.setRenderTarget(n,5,i),t.render(e,h),t.setRenderTarget(c,q,u),t.xr.enabled=d,n.texture.needsPMREMUpdate=!0}}class Rr extends sn{constructor(t,e,n,i,r,s,a,o,l,h){super(t=void 0!==t?t:[],e=void 0!==e?e:k,n,i,r,s,a,o,l,h),this.isCubeTexture=!0,this.flipY=!1}get images(){return this.image}set images(t){this.image=t}}class zr extends ln{constructor(t=1,e={}){super(t,t,e),this.isWebGLCubeRenderTarget=!0;const n={width:t,height:t,depth:1},i=[n,n,n,n,n,n];this.texture=new Rr(i,e.mapping,e.wrapS,e.wrapT,e.magFilter,e.minFilter,e.format,e.type,e.anisotropy,e.colorSpace),this.texture.isRenderTargetTexture=!0,this.texture.generateMipmaps=void 0!==e.generateMipmaps&&e.generateMipmaps,this.texture.minFilter=void 0!==e.minFilter?e.minFilter:X}fromEquirectangularTexture(t,e){this.texture.type=e.type,this.texture.colorSpace=e.colorSpace,this.texture.generateMipmaps=e.generateMipmaps,this.texture.minFilter=e.minFilter,this.texture.magFilter=e.magFilter;const n={uniforms:{tEquirect:{value:null}},vertexShader:"\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\tvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\n\t\t\t\t\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n\n\t\t\t\t}\n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvWorldDirection = transformDirection( position, modelMatrix );\n\n\t\t\t\t\t#include <begin_vertex>\n\t\t\t\t\t#include <project_vertex>\n\n\t\t\t\t}\n\t\t\t",fragmentShader:"\n\n\t\t\t\tuniform sampler2D tEquirect;\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\t#include <common>\n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvec3 direction = normalize( vWorldDirection );\n\n\t\t\t\t\tvec2 sampleUV = equirectUv( direction );\n\n\t\t\t\t\tgl_FragColor = texture2D( tEquirect, sampleUV );\n\n\t\t\t\t}\n\t\t\t"},i=new gr(5,5,5),r=new wr({name:"CubemapFromEquirect",uniforms:xr(n.uniforms),vertexShader:n.vertexShader,fragmentShader:n.fragmentShader,side:1,blending:0});r.uniforms.tEquirect.value=e;const s=new pr(i,r),a=e.minFilter;e.minFilter===Z&&(e.minFilter=X);return new Cr(1,10,this).update(t,s),e.minFilter=a,s.geometry.dispose(),s.material.dispose(),this}clear(t,e,n,i){const r=t.getRenderTarget();for(let s=0;s<6;s++)t.setRenderTarget(this,s),t.clear(e,n,i);t.setRenderTarget(r)}}class Ir{constructor(t,e=25e-5){this.isFogExp2=!0,this.name="",this.color=new Li(t),this.density=e}clone(){return new Ir(this.color,this.density)}toJSON(){return{type:"FogExp2",name:this.name,color:this.color.getHex(),density:this.density}}}class Pr{constructor(t,e=1,n=1e3){this.isFog=!0,this.name="",this.color=new Li(t),this.near=e,this.far=n}clone(){return new Pr(this.color,this.near,this.far)}toJSON(){return{type:"Fog",name:this.name,color:this.color.getHex(),near:this.near,far:this.far}}}class Lr extends pi{constructor(){super(),this.isScene=!0,this.type="Scene",this.background=null,this.environment=null,this.fog=null,this.backgroundBlurriness=0,this.backgroundIntensity=1,this.backgroundRotation=new Kn,this.environmentIntensity=1,this.environmentRotation=new Kn,this.overrideMaterial=null,"undefined"!=typeof __THREE_DEVTOOLS__&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}copy(t,e){return super.copy(t,e),null!==t.background&&(this.background=t.background.clone()),null!==t.environment&&(this.environment=t.environment.clone()),null!==t.fog&&(this.fog=t.fog.clone()),this.backgroundBlurriness=t.backgroundBlurriness,this.backgroundIntensity=t.backgroundIntensity,this.backgroundRotation.copy(t.backgroundRotation),this.environmentIntensity=t.environmentIntensity,this.environmentRotation.copy(t.environmentRotation),null!==t.overrideMaterial&&(this.overrideMaterial=t.overrideMaterial.clone()),this.matrixAutoUpdate=t.matrixAutoUpdate,this}toJSON(t){const e=super.toJSON(t);return null!==this.fog&&(e.object.fog=this.fog.toJSON()),this.backgroundBlurriness>0&&(e.object.backgroundBlurriness=this.backgroundBlurriness),1!==this.backgroundIntensity&&(e.object.backgroundIntensity=this.backgroundIntensity),e.object.backgroundRotation=this.backgroundRotation.toArray(),1!==this.environmentIntensity&&(e.object.environmentIntensity=this.environmentIntensity),e.object.environmentRotation=this.environmentRotation.toArray(),e}}let Nr=class{constructor(t,e){this.isInterleavedBuffer=!0,this.array=t,this.stride=e,this.count=void 0!==t?t.length/e:0,this.usage=ye,this.updateRanges=[],this.version=0,this.uuid=Ce()}onUploadCallback(){}set needsUpdate(t){!0===t&&this.version++}setUsage(t){return this.usage=t,this}addUpdateRange(t,e){this.updateRanges.push({start:t,count:e})}clearUpdateRanges(){this.updateRanges.length=0}copy(t){return this.array=new t.array.constructor(t.array),this.count=t.count,this.stride=t.stride,this.usage=t.usage,this}copyAt(t,e,n){t*=this.stride,n*=e.stride;for(let i=0,r=this.stride;i<r;i++)this.array[t+i]=e.array[n+i];return this}set(t,e=0){return this.array.set(t,e),this}clone(t){void 0===t.arrayBuffers&&(t.arrayBuffers={}),void 0===this.array.buffer._uuid&&(this.array.buffer._uuid=Ce()),void 0===t.arrayBuffers[this.array.buffer._uuid]&&(t.arrayBuffers[this.array.buffer._uuid]=this.array.slice(0).buffer);const e=new this.array.constructor(t.arrayBuffers[this.array.buffer._uuid]),n=new this.constructor(e,this.stride);return n.setUsage(this.usage),n}onUpload(t){return this.onUploadCallback=t,this}toJSON(t){return void 0===t.arrayBuffers&&(t.arrayBuffers={}),void 0===this.array.buffer._uuid&&(this.array.buffer._uuid=Ce()),void 0===t.arrayBuffers[this.array.buffer._uuid]&&(t.arrayBuffers[this.array.buffer._uuid]=Array.from(new Uint32Array(this.array.buffer))),{uuid:this.uuid,buffer:this.array.buffer._uuid,type:this.array.constructor.name,stride:this.stride}}};const kr=new un;let Dr,Ur=class t{constructor(t,e,n,i=!1){this.isInterleavedBufferAttribute=!0,this.name="",this.data=t,this.itemSize=e,this.offset=n,this.normalized=i}get count(){return this.data.count}get array(){return this.data.array}set needsUpdate(t){this.data.needsUpdate=t}applyMatrix4(t){for(let e=0,n=this.data.count;e<n;e++)kr.fromBufferAttribute(this,e),kr.applyMatrix4(t),this.setXYZ(e,kr.x,kr.y,kr.z);return this}applyNormalMatrix(t){for(let e=0,n=this.count;e<n;e++)kr.fromBufferAttribute(this,e),kr.applyNormalMatrix(t),this.setXYZ(e,kr.x,kr.y,kr.z);return this}transformDirection(t){for(let e=0,n=this.count;e<n;e++)kr.fromBufferAttribute(this,e),kr.transformDirection(t),this.setXYZ(e,kr.x,kr.y,kr.z);return this}getComponent(t,e){let n=this.array[t*this.data.stride+this.offset+e];return this.normalized&&(n=Pe(n,this.array)),n}setComponent(t,e,n){return this.normalized&&(n=Le(n,this.array)),this.data.array[t*this.data.stride+this.offset+e]=n,this}setX(t,e){return this.normalized&&(e=Le(e,this.array)),this.data.array[t*this.data.stride+this.offset]=e,this}setY(t,e){return this.normalized&&(e=Le(e,this.array)),this.data.array[t*this.data.stride+this.offset+1]=e,this}setZ(t,e){return this.normalized&&(e=Le(e,this.array)),this.data.array[t*this.data.stride+this.offset+2]=e,this}setW(t,e){return this.normalized&&(e=Le(e,this.array)),this.data.array[t*this.data.stride+this.offset+3]=e,this}getX(t){let e=this.data.array[t*this.data.stride+this.offset];return this.normalized&&(e=Pe(e,this.array)),e}getY(t){let e=this.data.array[t*this.data.stride+this.offset+1];return this.normalized&&(e=Pe(e,this.array)),e}getZ(t){let e=this.data.array[t*this.data.stride+this.offset+2];return this.normalized&&(e=Pe(e,this.array)),e}getW(t){let e=this.data.array[t*this.data.stride+this.offset+3];return this.normalized&&(e=Pe(e,this.array)),e}setXY(t,e,n){return t=t*this.data.stride+this.offset,this.normalized&&(e=Le(e,this.array),n=Le(n,this.array)),this.data.array[t+0]=e,this.data.array[t+1]=n,this}setXYZ(t,e,n,i){return t=t*this.data.stride+this.offset,this.normalized&&(e=Le(e,this.array),n=Le(n,this.array),i=Le(i,this.array)),this.data.array[t+0]=e,this.data.array[t+1]=n,this.data.array[t+2]=i,this}setXYZW(t,e,n,i,r){return t=t*this.data.stride+this.offset,this.normalized&&(e=Le(e,this.array),n=Le(n,this.array),i=Le(i,this.array),r=Le(r,this.array)),this.data.array[t+0]=e,this.data.array[t+1]=n,this.data.array[t+2]=i,this.data.array[t+3]=r,this}clone(e){if(void 0===e){console.log("THREE.InterleavedBufferAttribute.clone(): Cloning an interleaved buffer attribute will de-interleave buffer data.");const t=[];for(let e=0;e<this.count;e++){const n=e*this.data.stride+this.offset;for(let e=0;e<this.itemSize;e++)t.push(this.data.array[n+e])}return new ji(new this.array.constructor(t),this.itemSize,this.normalized)}return void 0===e.interleavedBuffers&&(e.interleavedBuffers={}),void 0===e.interleavedBuffers[this.data.uuid]&&(e.interleavedBuffers[this.data.uuid]=this.data.clone(e)),new t(e.interleavedBuffers[this.data.uuid],this.itemSize,this.offset,this.normalized)}toJSON(t){if(void 0===t){console.log("THREE.InterleavedBufferAttribute.toJSON(): Serializing an interleaved buffer attribute will de-interleave buffer data.");const t=[];for(let e=0;e<this.count;e++){const n=e*this.data.stride+this.offset;for(let e=0;e<this.itemSize;e++)t.push(this.data.array[n+e])}return{itemSize:this.itemSize,type:this.array.constructor.name,array:t,normalized:this.normalized}}return void 0===t.interleavedBuffers&&(t.interleavedBuffers={}),void 0===t.interleavedBuffers[this.data.uuid]&&(t.interleavedBuffers[this.data.uuid]=this.data.toJSON(t)),{isInterleavedBufferAttribute:!0,itemSize:this.itemSize,data:this.data.uuid,offset:this.offset,normalized:this.normalized}}};class Or extends Di{constructor(t){super(),this.isSpriteMaterial=!0,this.type="SpriteMaterial",this.color=new Li(16777215),this.map=null,this.alphaMap=null,this.rotation=0,this.sizeAttenuation=!0,this.transparent=!0,this.fog=!0,this.setValues(t)}copy(t){return super.copy(t),this.color.copy(t.color),this.map=t.map,this.alphaMap=t.alphaMap,this.rotation=t.rotation,this.sizeAttenuation=t.sizeAttenuation,this.fog=t.fog,this}}const Fr=new un,Br=new un,Vr=new un,Hr=new ke,Gr=new ke,Wr=new Vn,jr=new un,Xr=new un,Yr=new un,Zr=new ke,Jr=new ke,$r=new ke;class Kr extends pi{constructor(t=new Or){if(super(),this.isSprite=!0,this.type="Sprite",void 0===Dr){Dr=new ir;const t=new Float32Array([-.5,-.5,0,0,0,.5,-.5,0,1,0,.5,.5,0,1,1,-.5,.5,0,0,1]),e=new Nr(t,5);Dr.setIndex([0,1,2,0,2,3]),Dr.setAttribute("position",new Ur(e,3,0,!1)),Dr.setAttribute("uv",new Ur(e,2,3,!1))}this.geometry=Dr,this.material=t,this.center=new ke(.5,.5)}raycast(t,e){null===t.camera&&console.error('THREE.Sprite: "Raycaster.camera" needs to be set in order to raycast against sprites.'),Br.setFromMatrixScale(this.matrixWorld),Wr.copy(t.camera.matrixWorld),this.modelViewMatrix.multiplyMatrices(t.camera.matrixWorldInverse,this.matrixWorld),Vr.setFromMatrixPosition(this.modelViewMatrix),t.camera.isPerspectiveCamera&&!1===this.material.sizeAttenuation&&Br.multiplyScalar(-Vr.z);const n=this.material.rotation;let i,r;0!==n&&(r=Math.cos(n),i=Math.sin(n));const s=this.center;Qr(jr.set(-.5,-.5,0),Vr,s,Br,i,r),Qr(Xr.set(.5,-.5,0),Vr,s,Br,i,r),Qr(Yr.set(.5,.5,0),Vr,s,Br,i,r),Zr.set(0,0),Jr.set(1,0),$r.set(1,1);let a=t.ray.intersectTriangle(jr,Xr,Yr,!1,Fr);if(null===a&&(Qr(Xr.set(-.5,.5,0),Vr,s,Br,i,r),Jr.set(0,1),a=t.ray.intersectTriangle(jr,Yr,Xr,!1,Fr),null===a))return;const o=t.ray.origin.distanceTo(Fr);o<t.near||o>t.far||e.push({distance:o,point:Fr.clone(),uv:Ci.getInterpolation(Fr,jr,Xr,Yr,Zr,Jr,$r,new ke),face:null,object:this})}copy(t,e){return super.copy(t,e),void 0!==t.center&&this.center.copy(t.center),this.material=t.material,this}}function Qr(t,e,n,i,r,s){Hr.subVectors(t,n).addScalar(.5).multiply(i),void 0!==r?(Gr.x=s*Hr.x-r*Hr.y,Gr.y=r*Hr.x+s*Hr.y):Gr.copy(Hr),t.copy(e),t.x+=Gr.x,t.y+=Gr.y,t.applyMatrix4(Wr)}const ts=new un,es=new un;class ns extends pi{constructor(){super(),this._currentLevel=0,this.type="LOD",Object.defineProperties(this,{levels:{enumerable:!0,value:[]},isLOD:{value:!0}}),this.autoUpdate=!0}copy(t){super.copy(t,!1);const e=t.levels;for(let n=0,i=e.length;n<i;n++){const t=e[n];this.addLevel(t.object.clone(),t.distance,t.hysteresis)}return this.autoUpdate=t.autoUpdate,this}addLevel(t,e=0,n=0){e=Math.abs(e);const i=this.levels;let r;for(r=0;r<i.length&&!(e<i[r].distance);r++);return i.splice(r,0,{distance:e,hysteresis:n,object:t}),this.add(t),this}removeLevel(t){const e=this.levels;for(let n=0;n<e.length;n++)if(e[n].distance===t){const t=e.splice(n,1);return this.remove(t[0].object),!0}return!1}getCurrentLevel(){return this._currentLevel}getObjectForDistance(t){const e=this.levels;if(e.length>0){let n,i;for(n=1,i=e.length;n<i;n++){let i=e[n].distance;if(e[n].object.visible&&(i-=i*e[n].hysteresis),t<i)break}return e[n-1].object}return null}raycast(t,e){if(this.levels.length>0){ts.setFromMatrixPosition(this.matrixWorld);const n=t.ray.origin.distanceTo(ts);this.getObjectForDistance(n).raycast(t,e)}}update(t){const e=this.levels;if(e.length>1){ts.setFromMatrixPosition(t.matrixWorld),es.setFromMatrixPosition(this.matrixWorld);const n=ts.distanceTo(es)/t.zoom;let i,r;for(e[0].object.visible=!0,i=1,r=e.length;i<r;i++){let t=e[i].distance;if(e[i].object.visible&&(t-=t*e[i].hysteresis),!(n>=t))break;e[i-1].object.visible=!1,e[i].object.visible=!0}for(this._currentLevel=i-1;i<r;i++)e[i].object.visible=!1}}toJSON(t){const e=super.toJSON(t);!1===this.autoUpdate&&(e.object.autoUpdate=!1),e.object.levels=[];const n=this.levels;for(let i=0,r=n.length;i<r;i++){const t=n[i];e.object.levels.push({object:t.object.uuid,distance:t.distance,hysteresis:t.hysteresis})}return e}}const is=new un,rs=new an,ss=new an,as=new un,os=new Vn,ls=new un,hs=new Pn,cs=new Vn,qs=new Bn;class us extends pr{constructor(t,e){super(t,e),this.isSkinnedMesh=!0,this.type="SkinnedMesh",this.bindMode=P,this.bindMatrix=new Vn,this.bindMatrixInverse=new Vn,this.boundingBox=null,this.boundingSphere=null}computeBoundingBox(){const t=this.geometry;null===this.boundingBox&&(this.boundingBox=new pn),this.boundingBox.makeEmpty();const e=t.getAttribute("position");for(let n=0;n<e.count;n++)this.getVertexPosition(n,ls),this.boundingBox.expandByPoint(ls)}computeBoundingSphere(){const t=this.geometry;null===this.boundingSphere&&(this.boundingSphere=new Pn),this.boundingSphere.makeEmpty();const e=t.getAttribute("position");for(let n=0;n<e.count;n++)this.getVertexPosition(n,ls),this.boundingSphere.expandByPoint(ls)}copy(t,e){return super.copy(t,e),this.bindMode=t.bindMode,this.bindMatrix.copy(t.bindMatrix),this.bindMatrixInverse.copy(t.bindMatrixInverse),this.skeleton=t.skeleton,null!==t.boundingBox&&(this.boundingBox=t.boundingBox.clone()),null!==t.boundingSphere&&(this.boundingSphere=t.boundingSphere.clone()),this}raycast(t,e){const n=this.material,i=this.matrixWorld;void 0!==n&&(null===this.boundingSphere&&this.computeBoundingSphere(),hs.copy(this.boundingSphere),hs.applyMatrix4(i),!1!==t.ray.intersectsSphere(hs)&&(cs.copy(i).invert(),qs.copy(t.ray).applyMatrix4(cs),null!==this.boundingBox&&!1===qs.intersectsBox(this.boundingBox)||this._computeIntersections(t,e,qs)))}getVertexPosition(t,e){return super.getVertexPosition(t,e),this.applyBoneTransform(t,e),e}bind(t,e){this.skeleton=t,void 0===e&&(this.updateMatrixWorld(!0),this.skeleton.calculateInverses(),e=this.matrixWorld),this.bindMatrix.copy(e),this.bindMatrixInverse.copy(e).invert()}pose(){this.skeleton.pose()}normalizeSkinWeights(){const t=new an,e=this.geometry.attributes.skinWeight;for(let n=0,i=e.count;n<i;n++){t.fromBufferAttribute(e,n);const i=1/t.manhattanLength();i!==1/0?t.multiplyScalar(i):t.set(1,0,0,0),e.setXYZW(n,t.x,t.y,t.z,t.w)}}updateMatrixWorld(t){super.updateMatrixWorld(t),this.bindMode===P?this.bindMatrixInverse.copy(this.matrixWorld).invert():this.bindMode===L?this.bindMatrixInverse.copy(this.bindMatrix).invert():console.warn("THREE.SkinnedMesh: Unrecognized bindMode: "+this.bindMode)}applyBoneTransform(t,e){const n=this.skeleton,i=this.geometry;rs.fromBufferAttribute(i.attributes.skinIndex,t),ss.fromBufferAttribute(i.attributes.skinWeight,t),is.copy(e).applyMatrix4(this.bindMatrix),e.set(0,0,0);for(let r=0;r<4;r++){const t=ss.getComponent(r);if(0!==t){const i=rs.getComponent(r);os.multiplyMatrices(n.bones[i].matrixWorld,n.boneInverses[i]),e.addScaledVector(as.copy(is).applyMatrix4(os),t)}}return e.applyMatrix4(this.bindMatrixInverse)}}class ds extends pi{constructor(){super(),this.isBone=!0,this.type="Bone"}}class ms extends sn{constructor(t=null,e=1,n=1,i,r,s,a,o,l=1003,h=1003,c,q){super(null,s,a,o,l,h,i,r,c,q),this.isDataTexture=!0,this.image={data:t,width:e,height:n},this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}}const ps=new Vn,fs=new Vn;class gs{constructor(t=[],e=[]){this.uuid=Ce(),this.bones=t.slice(0),this.boneInverses=e,this.boneMatrices=null,this.boneTexture=null,this.init()}init(){const t=this.bones,e=this.boneInverses;if(this.boneMatrices=new Float32Array(16*t.length),0===e.length)this.calculateInverses();else if(t.length!==e.length){console.warn("THREE.Skeleton: Number of inverse bone matrices does not match amount of bones."),this.boneInverses=[];for(let t=0,e=this.bones.length;t<e;t++)this.boneInverses.push(new Vn)}}calculateInverses(){this.boneInverses.length=0;for(let t=0,e=this.bones.length;t<e;t++){const e=new Vn;this.bones[t]&&e.copy(this.bones[t].matrixWorld).invert(),this.boneInverses.push(e)}}pose(){for(let t=0,e=this.bones.length;t<e;t++){const e=this.bones[t];e&&e.matrixWorld.copy(this.boneInverses[t]).invert()}for(let t=0,e=this.bones.length;t<e;t++){const e=this.bones[t];e&&(e.parent&&e.parent.isBone?(e.matrix.copy(e.parent.matrixWorld).invert(),e.matrix.multiply(e.matrixWorld)):e.matrix.copy(e.matrixWorld),e.matrix.decompose(e.position,e.quaternion,e.scale))}}update(){const t=this.bones,e=this.boneInverses,n=this.boneMatrices,i=this.boneTexture;for(let r=0,s=t.length;r<s;r++){const i=t[r]?t[r].matrixWorld:fs;ps.multiplyMatrices(i,e[r]),ps.toArray(n,16*r)}null!==i&&(i.needsUpdate=!0)}clone(){return new gs(this.bones,this.boneInverses)}computeBoneTexture(){let t=Math.sqrt(4*this.bones.length);t=4*Math.ceil(t/4),t=Math.max(t,4);const e=new Float32Array(t*t*4);e.set(this.boneMatrices);const n=new ms(e,t,t,ct,nt);return n.needsUpdate=!0,this.boneMatrices=e,this.boneTexture=n,this}getBoneByName(t){for(let e=0,n=this.bones.length;e<n;e++){const n=this.bones[e];if(n.name===t)return n}}dispose(){null!==this.boneTexture&&(this.boneTexture.dispose(),this.boneTexture=null)}fromJSON(t,e){this.uuid=t.uuid;for(let n=0,i=t.bones.length;n<i;n++){const i=t.bones[n];let r=e[i];void 0===r&&(console.warn("THREE.Skeleton: No bone found with UUID:",i),r=new ds),this.bones.push(r),this.boneInverses.push((new Vn).fromArray(t.boneInverses[n]))}return this.init(),this}toJSON(){const t={metadata:{version:4.6,type:"Skeleton",generator:"Skeleton.toJSON"},bones:[],boneInverses:[]};t.uuid=this.uuid;const e=this.bones,n=this.boneInverses;for(let i=0,r=e.length;i<r;i++){const r=e[i];t.bones.push(r.uuid);const s=n[i];t.boneInverses.push(s.toArray())}return t}}class xs extends ji{constructor(t,e,n,i=1){super(t,e,n),this.isInstancedBufferAttribute=!0,this.meshPerAttribute=i}copy(t){return super.copy(t),this.meshPerAttribute=t.meshPerAttribute,this}toJSON(){const t=super.toJSON();return t.meshPerAttribute=this.meshPerAttribute,t.isInstancedBufferAttribute=!0,t}}const _s=new Vn,ys=new Vn,vs=[],ws=new pn,bs=new Vn,Ms=new pr,Ss=new Pn;class Ts extends pr{constructor(t,e,n){super(t,e),this.isInstancedMesh=!0,this.instanceMatrix=new xs(new Float32Array(16*n),16),this.instanceColor=null,this.morphTexture=null,this.count=n,this.boundingBox=null,this.boundingSphere=null;for(let i=0;i<n;i++)this.setMatrixAt(i,bs)}computeBoundingBox(){const t=this.geometry,e=this.count;null===this.boundingBox&&(this.boundingBox=new pn),null===t.boundingBox&&t.computeBoundingBox(),this.boundingBox.makeEmpty();for(let n=0;n<e;n++)this.getMatrixAt(n,_s),ws.copy(t.boundingBox).applyMatrix4(_s),this.boundingBox.union(ws)}computeBoundingSphere(){const t=this.geometry,e=this.count;null===this.boundingSphere&&(this.boundingSphere=new Pn),null===t.boundingSphere&&t.computeBoundingSphere(),this.boundingSphere.makeEmpty();for(let n=0;n<e;n++)this.getMatrixAt(n,_s),Ss.copy(t.boundingSphere).applyMatrix4(_s),this.boundingSphere.union(Ss)}copy(t,e){return super.copy(t,e),this.instanceMatrix.copy(t.instanceMatrix),null!==t.morphTexture&&(this.morphTexture=t.morphTexture.clone()),null!==t.instanceColor&&(this.instanceColor=t.instanceColor.clone()),this.count=t.count,null!==t.boundingBox&&(this.boundingBox=t.boundingBox.clone()),null!==t.boundingSphere&&(this.boundingSphere=t.boundingSphere.clone()),this}getColorAt(t,e){e.fromArray(this.instanceColor.array,3*t)}getMatrixAt(t,e){e.fromArray(this.instanceMatrix.array,16*t)}getMorphAt(t,e){const n=e.morphTargetInfluences,i=this.morphTexture.source.data.data,r=t*(n.length+1)+1;for(let s=0;s<n.length;s++)n[s]=i[r+s]}raycast(t,e){const n=this.matrixWorld,i=this.count;if(Ms.geometry=this.geometry,Ms.material=this.material,void 0!==Ms.material&&(null===this.boundingSphere&&this.computeBoundingSphere(),Ss.copy(this.boundingSphere),Ss.applyMatrix4(n),!1!==t.ray.intersectsSphere(Ss)))for(let r=0;r<i;r++){this.getMatrixAt(r,_s),ys.multiplyMatrices(n,_s),Ms.matrixWorld=ys,Ms.raycast(t,vs);for(let t=0,n=vs.length;t<n;t++){const n=vs[t];n.instanceId=r,n.object=this,e.push(n)}vs.length=0}}setColorAt(t,e){null===this.instanceColor&&(this.instanceColor=new xs(new Float32Array(3*this.instanceMatrix.count).fill(1),3)),e.toArray(this.instanceColor.array,3*t)}setMatrixAt(t,e){e.toArray(this.instanceMatrix.array,16*t)}setMorphAt(t,e){const n=e.morphTargetInfluences,i=n.length+1;null===this.morphTexture&&(this.morphTexture=new ms(new Float32Array(i*this.count),i,this.count,pt,nt));const r=this.morphTexture.source.data.data;let s=0;for(let l=0;l<n.length;l++)s+=n[l];const a=this.geometry.morphTargetsRelative?1:1-s,o=i*t;r[o]=a,r.set(n,o+1)}updateMorphTargets(){}dispose(){return this.dispatchEvent({type:"dispose"}),null!==this.morphTexture&&(this.morphTexture.dispose(),this.morphTexture=null),this}}const Es=new un,As=new un,Cs=new De;class Rs{constructor(t=new un(1,0,0),e=0){this.isPlane=!0,this.normal=t,this.constant=e}set(t,e){return this.normal.copy(t),this.constant=e,this}setComponents(t,e,n,i){return this.normal.set(t,e,n),this.constant=i,this}setFromNormalAndCoplanarPoint(t,e){return this.normal.copy(t),this.constant=-e.dot(this.normal),this}setFromCoplanarPoints(t,e,n){const i=Es.subVectors(n,e).cross(As.subVectors(t,e)).normalize();return this.setFromNormalAndCoplanarPoint(i,t),this}copy(t){return this.normal.copy(t.normal),this.constant=t.constant,this}normalize(){const t=1/this.normal.length();return this.normal.multiplyScalar(t),this.constant*=t,this}negate(){return this.constant*=-1,this.normal.negate(),this}distanceToPoint(t){return this.normal.dot(t)+this.constant}distanceToSphere(t){return this.distanceToPoint(t.center)-t.radius}projectPoint(t,e){return e.copy(t).addScaledVector(this.normal,-this.distanceToPoint(t))}intersectLine(t,e){const n=t.delta(Es),i=this.normal.dot(n);if(0===i)return 0===this.distanceToPoint(t.start)?e.copy(t.start):null;const r=-(t.start.dot(this.normal)+this.constant)/i;return r<0||r>1?null:e.copy(t.start).addScaledVector(n,r)}intersectsLine(t){const e=this.distanceToPoint(t.start),n=this.distanceToPoint(t.end);return e<0&&n>0||n<0&&e>0}intersectsBox(t){return t.intersectsPlane(this)}intersectsSphere(t){return t.intersectsPlane(this)}coplanarPoint(t){return t.copy(this.normal).multiplyScalar(-this.constant)}applyMatrix4(t,e){const n=e||Cs.getNormalMatrix(t),i=this.coplanarPoint(Es).applyMatrix4(t),r=this.normal.applyMatrix3(n).normalize();return this.constant=-i.dot(r),this}translate(t){return this.constant-=t.dot(this.normal),this}equals(t){return t.normal.equals(this.normal)&&t.constant===this.constant}clone(){return(new this.constructor).copy(this)}}const zs=new Pn,Is=new un;class Ps{constructor(t=new Rs,e=new Rs,n=new Rs,i=new Rs,r=new Rs,s=new Rs){this.planes=[t,e,n,i,r,s]}set(t,e,n,i,r,s){const a=this.planes;return a[0].copy(t),a[1].copy(e),a[2].copy(n),a[3].copy(i),a[4].copy(r),a[5].copy(s),this}copy(t){const e=this.planes;for(let n=0;n<6;n++)e[n].copy(t.planes[n]);return this}setFromProjectionMatrix(t,e=2e3){const n=this.planes,i=t.elements,r=i[0],s=i[1],a=i[2],o=i[3],l=i[4],h=i[5],c=i[6],q=i[7],u=i[8],d=i[9],m=i[10],p=i[11],f=i[12],g=i[13],x=i[14],_=i[15];if(n[0].setComponents(o-r,q-l,p-u,_-f).normalize(),n[1].setComponents(o+r,q+l,p+u,_+f).normalize(),n[2].setComponents(o+s,q+h,p+d,_+g).normalize(),n[3].setComponents(o-s,q-h,p-d,_-g).normalize(),n[4].setComponents(o-a,q-c,p-m,_-x).normalize(),e===we)n[5].setComponents(o+a,q+c,p+m,_+x).normalize();else{if(e!==be)throw new Error("THREE.Frustum.setFromProjectionMatrix(): Invalid coordinate system: "+e);n[5].setComponents(a,c,m,x).normalize()}return this}intersectsObject(t){if(void 0!==t.boundingSphere)null===t.boundingSphere&&t.computeBoundingSphere(),zs.copy(t.boundingSphere).applyMatrix4(t.matrixWorld);else{const e=t.geometry;null===e.boundingSphere&&e.computeBoundingSphere(),zs.copy(e.boundingSphere).applyMatrix4(t.matrixWorld)}return this.intersectsSphere(zs)}intersectsSprite(t){return zs.center.set(0,0,0),zs.radius=.7071067811865476,zs.applyMatrix4(t.matrixWorld),this.intersectsSphere(zs)}intersectsSphere(t){const e=this.planes,n=t.center,i=-t.radius;for(let r=0;r<6;r++){if(e[r].distanceToPoint(n)<i)return!1}return!0}intersectsBox(t){const e=this.planes;for(let n=0;n<6;n++){const i=e[n];if(Is.x=i.normal.x>0?t.max.x:t.min.x,Is.y=i.normal.y>0?t.max.y:t.min.y,Is.z=i.normal.z>0?t.max.z:t.min.z,i.distanceToPoint(Is)<0)return!1}return!0}containsPoint(t){const e=this.planes;for(let n=0;n<6;n++)if(e[n].distanceToPoint(t)<0)return!1;return!0}clone(){return(new this.constructor).copy(this)}}function Ls(t,e){return t-e}function Ns(t,e){return t.z-e.z}function ks(t,e){return e.z-t.z}class Ds{constructor(){this.index=0,this.pool=[],this.list=[]}push(t,e,n,i){const r=this.pool,s=this.list;this.index>=r.length&&r.push({start:-1,count:-1,z:-1,index:-1});const a=r[this.index];s.push(a),this.index++,a.start=t,a.count=e,a.z=n,a.index=i}reset(){this.list.length=0,this.index=0}}const Us=new Vn,Os=new Li(1,1,1),Fs=new Ps,Bs=new pn,Vs=new Pn,Hs=new un,Gs=new un,Ws=new un,js=new Ds,Xs=new pr,Ys=[];function Zs(t,e,n=0){const i=e.itemSize;if(t.isInterleavedBufferAttribute||t.array.constructor!==e.array.constructor){const r=t.count;for(let s=0;s<r;s++)for(let r=0;r<i;r++)e.setComponent(s+n,r,t.getComponent(s,r))}else e.array.set(t.array,n*i);e.needsUpdate=!0}function Js(t,e){if(t.constructor!==e.constructor){const n=Math.min(t.length,e.length);for(let i=0;i<n;i++)e[i]=t[i]}else{const n=Math.min(t.length,e.length);e.set(new t.constructor(t.buffer,0,n))}}class $s extends pr{get maxInstanceCount(){return this._maxInstanceCount}get instanceCount(){return this._instanceInfo.length-this._availableInstanceIds.length}get unusedVertexCount(){return this._maxVertexCount-this._nextVertexStart}get unusedIndexCount(){return this._maxIndexCount-this._nextIndexStart}constructor(t,e,n=2*e,i){super(new ir,i),this.isBatchedMesh=!0,this.perObjectFrustumCulled=!0,this.sortObjects=!0,this.boundingBox=null,this.boundingSphere=null,this.customSort=null,this._instanceInfo=[],this._geometryInfo=[],this._availableInstanceIds=[],this._availableGeometryIds=[],this._nextIndexStart=0,this._nextVertexStart=0,this._geometryCount=0,this._visibilityChanged=!0,this._geometryInitialized=!1,this._maxInstanceCount=t,this._maxVertexCount=e,this._maxIndexCount=n,this._multiDrawCounts=new Int32Array(t),this._multiDrawStarts=new Int32Array(t),this._multiDrawCount=0,this._multiDrawInstances=null,this._matricesTexture=null,this._indirectTexture=null,this._colorsTexture=null,this._initMatricesTexture(),this._initIndirectTexture()}_initMatricesTexture(){let t=Math.sqrt(4*this._maxInstanceCount);t=4*Math.ceil(t/4),t=Math.max(t,4);const e=new Float32Array(t*t*4),n=new ms(e,t,t,ct,nt);this._matricesTexture=n}_initIndirectTexture(){let t=Math.sqrt(this._maxInstanceCount);t=Math.ceil(t);const e=new Uint32Array(t*t),n=new ms(e,t,t,ft,et);this._indirectTexture=n}_initColorsTexture(){let t=Math.sqrt(this._maxInstanceCount);t=Math.ceil(t);const e=new Float32Array(t*t*4).fill(1),n=new ms(e,t,t,ct,nt);n.colorSpace=Ze.workingColorSpace,this._colorsTexture=n}_initializeGeometry(t){const e=this.geometry,n=this._maxVertexCount,i=this._maxIndexCount;if(!1===this._geometryInitialized){for(const i in t.attributes){const r=t.getAttribute(i),{array:s,itemSize:a,normalized:o}=r,l=new s.constructor(n*a),h=new ji(l,a,o);e.setAttribute(i,h)}if(null!==t.getIndex()){const t=n>65535?new Uint32Array(i):new Uint16Array(i);e.setIndex(new ji(t,1))}this._geometryInitialized=!0}}_validateGeometry(t){const e=this.geometry;if(Boolean(t.getIndex())!==Boolean(e.getIndex()))throw new Error('THREE.BatchedMesh: All geometries must consistently have "index".');for(const n in e.attributes){if(!t.hasAttribute(n))throw new Error(`THREE.BatchedMesh: Added geometry missing "${n}". All geometries must have consistent attributes.`);const i=t.getAttribute(n),r=e.getAttribute(n);if(i.itemSize!==r.itemSize||i.normalized!==r.normalized)throw new Error("THREE.BatchedMesh: All attributes must have a consistent itemSize and normalized value.")}}validateInstanceId(t){const e=this._instanceInfo;if(t<0||t>=e.length||!1===e[t].active)throw new Error(`THREE.BatchedMesh: Invalid instanceId ${t}. Instance is either out of range or has been deleted.`)}validateGeometryId(t){const e=this._geometryInfo;if(t<0||t>=e.length||!1===e[t].active)throw new Error(`THREE.BatchedMesh: Invalid geometryId ${t}. Geometry is either out of range or has been deleted.`)}setCustomSort(t){return this.customSort=t,this}computeBoundingBox(){null===this.boundingBox&&(this.boundingBox=new pn);const t=this.boundingBox,e=this._instanceInfo;t.makeEmpty();for(let n=0,i=e.length;n<i;n++){if(!1===e[n].active)continue;const i=e[n].geometryIndex;this.getMatrixAt(n,Us),this.getBoundingBoxAt(i,Bs).applyMatrix4(Us),t.union(Bs)}}computeBoundingSphere(){null===this.boundingSphere&&(this.boundingSphere=new Pn);const t=this.boundingSphere,e=this._instanceInfo;t.makeEmpty();for(let n=0,i=e.length;n<i;n++){if(!1===e[n].active)continue;const i=e[n].geometryIndex;this.getMatrixAt(n,Us),this.getBoundingSphereAt(i,Vs).applyMatrix4(Us),t.union(Vs)}}addInstance(t){if(this._instanceInfo.length>=this.maxInstanceCount&&0===this._availableInstanceIds.length)throw new Error("THREE.BatchedMesh: Maximum item count reached.");const e={visible:!0,active:!0,geometryIndex:t};let n=null;this._availableInstanceIds.length>0?(this._availableInstanceIds.sort(Ls),n=this._availableInstanceIds.shift(),this._instanceInfo[n]=e):(n=this._instanceInfo.length,this._instanceInfo.push(e));const i=this._matricesTexture;Us.identity().toArray(i.image.data,16*n),i.needsUpdate=!0;const r=this._colorsTexture;return r&&(Os.toArray(r.image.data,4*n),r.needsUpdate=!0),this._visibilityChanged=!0,n}addGeometry(t,e=-1,n=-1){this._initializeGeometry(t),this._validateGeometry(t);const i={vertexStart:-1,vertexCount:-1,reservedVertexCount:-1,indexStart:-1,indexCount:-1,reservedIndexCount:-1,start:-1,count:-1,boundingBox:null,boundingSphere:null,active:!0},r=this._geometryInfo;i.vertexStart=this._nextVertexStart,i.reservedVertexCount=-1===e?t.getAttribute("position").count:e;const s=t.getIndex();if(null!==s&&(i.indexStart=this._nextIndexStart,i.reservedIndexCount=-1===n?s.count:n),-1!==i.indexStart&&i.indexStart+i.reservedIndexCount>this._maxIndexCount||i.vertexStart+i.reservedVertexCount>this._maxVertexCount)throw new Error("THREE.BatchedMesh: Reserved space request exceeds the maximum buffer size.");let a;return this._availableGeometryIds.length>0?(this._availableGeometryIds.sort(Ls),a=this._availableGeometryIds.shift(),r[a]=i):(a=this._geometryCount,this._geometryCount++,r.push(i)),this.setGeometryAt(a,t),this._nextIndexStart=i.indexStart+i.reservedIndexCount,this._nextVertexStart=i.vertexStart+i.reservedVertexCount,a}setGeometryAt(t,e){if(t>=this._geometryCount)throw new Error("THREE.BatchedMesh: Maximum geometry count reached.");this._validateGeometry(e);const n=this.geometry,i=null!==n.getIndex(),r=n.getIndex(),s=e.getIndex(),a=this._geometryInfo[t];if(i&&s.count>a.reservedIndexCount||e.attributes.position.count>a.reservedVertexCount)throw new Error("THREE.BatchedMesh: Reserved space not large enough for provided geometry.");const o=a.vertexStart,l=a.reservedVertexCount;a.vertexCount=e.getAttribute("position").count;for(const h in n.attributes){const t=e.getAttribute(h),i=n.getAttribute(h);Zs(t,i,o);const r=t.itemSize;for(let e=t.count,n=l;e<n;e++){const t=o+e;for(let e=0;e<r;e++)i.setComponent(t,e,0)}i.needsUpdate=!0,i.addUpdateRange(o*r,l*r)}if(i){const t=a.indexStart,n=a.reservedIndexCount;a.indexCount=e.getIndex().count;for(let e=0;e<s.count;e++)r.setX(t+e,o+s.getX(e));for(let e=s.count,i=n;e<i;e++)r.setX(t+e,o);r.needsUpdate=!0,r.addUpdateRange(t,a.reservedIndexCount)}return a.start=i?a.indexStart:a.vertexStart,a.count=i?a.indexCount:a.vertexCount,a.boundingBox=null,null!==e.boundingBox&&(a.boundingBox=e.boundingBox.clone()),a.boundingSphere=null,null!==e.boundingSphere&&(a.boundingSphere=e.boundingSphere.clone()),this._visibilityChanged=!0,t}deleteGeometry(t){const e=this._geometryInfo;if(t>=e.length||!1===e[t].active)return this;const n=this._instanceInfo;for(let i=0,r=n.length;i<r;i++)n[i].geometryIndex===t&&this.deleteInstance(i);return e[t].active=!1,this._availableGeometryIds.push(t),this._visibilityChanged=!0,this}deleteInstance(t){return this.validateInstanceId(t),this._instanceInfo[t].active=!1,this._availableInstanceIds.push(t),this._visibilityChanged=!0,this}optimize(){let t=0,e=0;const n=this._geometryInfo,i=n.map(((t,e)=>e)).sort(((t,e)=>n[t].vertexStart-n[e].vertexStart)),r=this.geometry;for(let s=0,a=n.length;s<a;s++){const a=i[s],o=n[a];if(!1!==o.active){if(null!==r.index){if(o.indexStart!==e){const{indexStart:n,vertexStart:i,reservedIndexCount:s}=o,a=r.index,l=a.array,h=t-i;for(let t=n;t<n+s;t++)l[t]=l[t]+h;a.array.copyWithin(e,n,n+s),a.addUpdateRange(e,s),o.indexStart=e}e+=o.reservedIndexCount}if(o.vertexStart!==t){const{vertexStart:e,reservedVertexCount:n}=o,i=r.attributes;for(const r in i){const s=i[r],{array:a,itemSize:o}=s;a.copyWithin(t*o,e*o,(e+n)*o),s.addUpdateRange(t*o,n*o)}o.vertexStart=t}t+=o.reservedVertexCount,o.start=r.index?o.indexStart:o.vertexStart,this._nextIndexStart=r.index?o.indexStart+o.reservedIndexCount:0,this._nextVertexStart=o.vertexStart+o.reservedVertexCount}}return this}getBoundingBoxAt(t,e){if(t>=this._geometryCount)return null;const n=this.geometry,i=this._geometryInfo[t];if(null===i.boundingBox){const t=new pn,e=n.index,r=n.attributes.position;for(let n=i.start,s=i.start+i.count;n<s;n++){let i=n;e&&(i=e.getX(i)),t.expandByPoint(Hs.fromBufferAttribute(r,i))}i.boundingBox=t}return e.copy(i.boundingBox),e}getBoundingSphereAt(t,e){if(t>=this._geometryCount)return null;const n=this.geometry,i=this._geometryInfo[t];if(null===i.boundingSphere){const e=new Pn;this.getBoundingBoxAt(t,Bs),Bs.getCenter(e.center);const r=n.index,s=n.attributes.position;let a=0;for(let t=i.start,n=i.start+i.count;t<n;t++){let n=t;r&&(n=r.getX(n)),Hs.fromBufferAttribute(s,n),a=Math.max(a,e.center.distanceToSquared(Hs))}e.radius=Math.sqrt(a),i.boundingSphere=e}return e.copy(i.boundingSphere),e}setMatrixAt(t,e){this.validateInstanceId(t);const n=this._matricesTexture,i=this._matricesTexture.image.data;return e.toArray(i,16*t),n.needsUpdate=!0,this}getMatrixAt(t,e){return this.validateInstanceId(t),e.fromArray(this._matricesTexture.image.data,16*t)}setColorAt(t,e){return this.validateInstanceId(t),null===this._colorsTexture&&this._initColorsTexture(),e.toArray(this._colorsTexture.image.data,4*t),this._colorsTexture.needsUpdate=!0,this}getColorAt(t,e){return this.validateInstanceId(t),e.fromArray(this._colorsTexture.image.data,4*t)}setVisibleAt(t,e){return this.validateInstanceId(t),this._instanceInfo[t].visible===e||(this._instanceInfo[t].visible=e,this._visibilityChanged=!0),this}getVisibleAt(t){return this.validateInstanceId(t),this._instanceInfo[t].visible}setGeometryIdAt(t,e){return this.validateInstanceId(t),this.validateGeometryId(e),this._instanceInfo[t].geometryIndex=e,this}getGeometryIdAt(t){return this.validateInstanceId(t),this._instanceInfo[t].geometryIndex}getGeometryRangeAt(t,e={}){this.validateGeometryId(t);const n=this._geometryInfo[t];return e.vertexStart=n.vertexStart,e.vertexCount=n.vertexCount,e.reservedVertexCount=n.reservedVertexCount,e.indexStart=n.indexStart,e.indexCount=n.indexCount,e.reservedIndexCount=n.reservedIndexCount,e.start=n.start,e.count=n.count,e}setInstanceCount(t){const e=this._availableInstanceIds,n=this._instanceInfo;for(e.sort(Ls);e[e.length-1]===n.length;)n.pop(),e.pop();if(t<n.length)throw new Error(`BatchedMesh: Instance ids outside the range ${t} are being used. Cannot shrink instance count.`);const i=new Int32Array(t),r=new Int32Array(t);Js(this._multiDrawCounts,i),Js(this._multiDrawStarts,r),this._multiDrawCounts=i,this._multiDrawStarts=r,this._maxInstanceCount=t;const s=this._indirectTexture,a=this._matricesTexture,o=this._colorsTexture;s.dispose(),this._initIndirectTexture(),Js(s.image.data,this._indirectTexture.image.data),a.dispose(),this._initMatricesTexture(),Js(a.image.data,this._matricesTexture.image.data),o&&(o.dispose(),this._initColorsTexture(),Js(o.image.data,this._colorsTexture.image.data))}setGeometrySize(t,e){const n=[...this._geometryInfo].filter((t=>t.active));if(Math.max(...n.map((t=>t.vertexStart+t.reservedVertexCount)))>t)throw new Error(`BatchedMesh: Geometry vertex values are being used outside the range ${e}. Cannot shrink further.`);if(this.geometry.index){if(Math.max(...n.map((t=>t.indexStart+t.reservedIndexCount)))>e)throw new Error(`BatchedMesh: Geometry index values are being used outside the range ${e}. Cannot shrink further.`)}const i=this.geometry;i.dispose(),this._maxVertexCount=t,this._maxIndexCount=e,this._geometryInitialized&&(this._geometryInitialized=!1,this.geometry=new ir,this._initializeGeometry(i));const r=this.geometry;i.index&&Js(i.index.array,r.index.array);for(const s in i.attributes)Js(i.attributes[s].array,r.attributes[s].array)}raycast(t,e){const n=this._instanceInfo,i=this._geometryInfo,r=this.matrixWorld,s=this.geometry;Xs.material=this.material,Xs.geometry.index=s.index,Xs.geometry.attributes=s.attributes,null===Xs.geometry.boundingBox&&(Xs.geometry.boundingBox=new pn),null===Xs.geometry.boundingSphere&&(Xs.geometry.boundingSphere=new Pn);for(let a=0,o=n.length;a<o;a++){if(!n[a].visible||!n[a].active)continue;const s=n[a].geometryIndex,o=i[s];Xs.geometry.setDrawRange(o.start,o.count),this.getMatrixAt(a,Xs.matrixWorld).premultiply(r),this.getBoundingBoxAt(s,Xs.geometry.boundingBox),this.getBoundingSphereAt(s,Xs.geometry.boundingSphere),Xs.raycast(t,Ys);for(let t=0,n=Ys.length;t<n;t++){const n=Ys[t];n.object=this,n.batchId=a,e.push(n)}Ys.length=0}Xs.material=null,Xs.geometry.index=null,Xs.geometry.attributes={},Xs.geometry.setDrawRange(0,1/0)}copy(t){return super.copy(t),this.geometry=t.geometry.clone(),this.perObjectFrustumCulled=t.perObjectFrustumCulled,this.sortObjects=t.sortObjects,this.boundingBox=null!==t.boundingBox?t.boundingBox.clone():null,this.boundingSphere=null!==t.boundingSphere?t.boundingSphere.clone():null,this._geometryInfo=t._geometryInfo.map((t=>({...t,boundingBox:null!==t.boundingBox?t.boundingBox.clone():null,boundingSphere:null!==t.boundingSphere?t.boundingSphere.clone():null}))),this._instanceInfo=t._instanceInfo.map((t=>({...t}))),this._maxInstanceCount=t._maxInstanceCount,this._maxVertexCount=t._maxVertexCount,this._maxIndexCount=t._maxIndexCount,this._geometryInitialized=t._geometryInitialized,this._geometryCount=t._geometryCount,this._multiDrawCounts=t._multiDrawCounts.slice(),this._multiDrawStarts=t._multiDrawStarts.slice(),this._matricesTexture=t._matricesTexture.clone(),this._matricesTexture.image.data=this._matricesTexture.image.data.slice(),null!==this._colorsTexture&&(this._colorsTexture=t._colorsTexture.clone(),this._colorsTexture.image.data=this._colorsTexture.image.data.slice()),this}dispose(){return this.geometry.dispose(),this._matricesTexture.dispose(),this._matricesTexture=null,this._indirectTexture.dispose(),this._indirectTexture=null,null!==this._colorsTexture&&(this._colorsTexture.dispose(),this._colorsTexture=null),this}onBeforeRender(t,e,n,i,r){if(!this._visibilityChanged&&!this.perObjectFrustumCulled&&!this.sortObjects)return;const s=i.getIndex(),a=null===s?1:s.array.BYTES_PER_ELEMENT,o=this._instanceInfo,l=this._multiDrawStarts,h=this._multiDrawCounts,c=this._geometryInfo,q=this.perObjectFrustumCulled,u=this._indirectTexture,d=u.image.data;q&&(Us.multiplyMatrices(n.projectionMatrix,n.matrixWorldInverse).multiply(this.matrixWorld),Fs.setFromProjectionMatrix(Us,t.coordinateSystem));let m=0;if(this.sortObjects){Us.copy(this.matrixWorld).invert(),Hs.setFromMatrixPosition(n.matrixWorld).applyMatrix4(Us),Gs.set(0,0,-1).transformDirection(n.matrixWorld).transformDirection(Us);for(let n=0,i=o.length;n<i;n++)if(o[n].visible&&o[n].active){const t=o[n].geometryIndex;this.getMatrixAt(n,Us),this.getBoundingSphereAt(t,Vs).applyMatrix4(Us);let e=!1;if(q&&(e=!Fs.intersectsSphere(Vs)),!e){const e=c[t],i=Ws.subVectors(Vs.center,Hs).dot(Gs);js.push(e.start,e.count,i,n)}}const t=js.list,e=this.customSort;null===e?t.sort(r.transparent?ks:Ns):e.call(this,t,n);for(let n=0,i=t.length;n<i;n++){const e=t[n];l[m]=e.start*a,h[m]=e.count,d[m]=e.index,m++}js.reset()}else for(let p=0,f=o.length;p<f;p++)if(o[p].visible&&o[p].active){const t=o[p].geometryIndex;let e=!1;if(q&&(this.getMatrixAt(p,Us),this.getBoundingSphereAt(t,Vs).applyMatrix4(Us),e=!Fs.intersectsSphere(Vs)),!e){const e=c[t];l[m]=e.start*a,h[m]=e.count,d[m]=p,m++}}u.needsUpdate=!0,this._multiDrawCount=m,this._visibilityChanged=!1}onBeforeShadow(t,e,n,i,r,s){this.onBeforeRender(t,null,i,r,s)}}class Ks extends Di{constructor(t){super(),this.isLineBasicMaterial=!0,this.type="LineBasicMaterial",this.color=new Li(16777215),this.map=null,this.linewidth=1,this.linecap="round",this.linejoin="round",this.fog=!0,this.setValues(t)}copy(t){return super.copy(t),this.color.copy(t.color),this.map=t.map,this.linewidth=t.linewidth,this.linecap=t.linecap,this.linejoin=t.linejoin,this.fog=t.fog,this}}const Qs=new un,ta=new un,ea=new Vn,na=new Bn,ia=new Pn,ra=new un,sa=new un;class aa extends pi{constructor(t=new ir,e=new Ks){super(),this.isLine=!0,this.type="Line",this.geometry=t,this.material=e,this.updateMorphTargets()}copy(t,e){return super.copy(t,e),this.material=Array.isArray(t.material)?t.material.slice():t.material,this.geometry=t.geometry,this}computeLineDistances(){const t=this.geometry;if(null===t.index){const e=t.attributes.position,n=[0];for(let t=1,i=e.count;t<i;t++)Qs.fromBufferAttribute(e,t-1),ta.fromBufferAttribute(e,t),n[t]=n[t-1],n[t]+=Qs.distanceTo(ta);t.setAttribute("lineDistance",new Zi(n,1))}else console.warn("THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.");return this}raycast(t,e){const n=this.geometry,i=this.matrixWorld,r=t.params.Line.threshold,s=n.drawRange;if(null===n.boundingSphere&&n.computeBoundingSphere(),ia.copy(n.boundingSphere),ia.applyMatrix4(i),ia.radius+=r,!1===t.ray.intersectsSphere(ia))return;ea.copy(i).invert(),na.copy(t.ray).applyMatrix4(ea);const a=r/((this.scale.x+this.scale.y+this.scale.z)/3),o=a*a,l=this.isLineSegments?2:1,h=n.index,c=n.attributes.position;if(null!==h){const n=Math.max(0,s.start),i=Math.min(h.count,s.start+s.count);for(let r=n,s=i-1;r<s;r+=l){const n=h.getX(r),i=h.getX(r+1),s=oa(this,t,na,o,n,i);s&&e.push(s)}if(this.isLineLoop){const r=h.getX(i-1),s=h.getX(n),a=oa(this,t,na,o,r,s);a&&e.push(a)}}else{const n=Math.max(0,s.start),i=Math.min(c.count,s.start+s.count);for(let r=n,s=i-1;r<s;r+=l){const n=oa(this,t,na,o,r,r+1);n&&e.push(n)}if(this.isLineLoop){const r=oa(this,t,na,o,i-1,n);r&&e.push(r)}}}updateMorphTargets(){const t=this.geometry.morphAttributes,e=Object.keys(t);if(e.length>0){const n=t[e[0]];if(void 0!==n){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let t=0,e=n.length;t<e;t++){const e=n[t].name||String(t);this.morphTargetInfluences.push(0),this.morphTargetDictionary[e]=t}}}}}function oa(t,e,n,i,r,s){const a=t.geometry.attributes.position;Qs.fromBufferAttribute(a,r),ta.fromBufferAttribute(a,s);if(n.distanceSqToSegment(Qs,ta,ra,sa)>i)return;ra.applyMatrix4(t.matrixWorld);const o=e.ray.origin.distanceTo(ra);return o<e.near||o>e.far?void 0:{distance:o,point:sa.clone().applyMatrix4(t.matrixWorld),index:r,face:null,faceIndex:null,barycoord:null,object:t}}const la=new un,ha=new un;class ca extends aa{constructor(t,e){super(t,e),this.isLineSegments=!0,this.type="LineSegments"}computeLineDistances(){const t=this.geometry;if(null===t.index){const e=t.attributes.position,n=[];for(let t=0,i=e.count;t<i;t+=2)la.fromBufferAttribute(e,t),ha.fromBufferAttribute(e,t+1),n[t]=0===t?0:n[t-1],n[t+1]=n[t]+la.distanceTo(ha);t.setAttribute("lineDistance",new Zi(n,1))}else console.warn("THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.");return this}}class qa extends aa{constructor(t,e){super(t,e),this.isLineLoop=!0,this.type="LineLoop"}}class ua extends Di{constructor(t){super(),this.isPointsMaterial=!0,this.type="PointsMaterial",this.color=new Li(16777215),this.map=null,this.alphaMap=null,this.size=1,this.sizeAttenuation=!0,this.fog=!0,this.setValues(t)}copy(t){return super.copy(t),this.color.copy(t.color),this.map=t.map,this.alphaMap=t.alphaMap,this.size=t.size,this.sizeAttenuation=t.sizeAttenuation,this.fog=t.fog,this}}const da=new Vn,ma=new Bn,pa=new Pn,fa=new un;class ga extends pi{constructor(t=new ir,e=new ua){super(),this.isPoints=!0,this.type="Points",this.geometry=t,this.material=e,this.updateMorphTargets()}copy(t,e){return super.copy(t,e),this.material=Array.isArray(t.material)?t.material.slice():t.material,this.geometry=t.geometry,this}raycast(t,e){const n=this.geometry,i=this.matrixWorld,r=t.params.Points.threshold,s=n.drawRange;if(null===n.boundingSphere&&n.computeBoundingSphere(),pa.copy(n.boundingSphere),pa.applyMatrix4(i),pa.radius+=r,!1===t.ray.intersectsSphere(pa))return;da.copy(i).invert(),ma.copy(t.ray).applyMatrix4(da);const a=r/((this.scale.x+this.scale.y+this.scale.z)/3),o=a*a,l=n.index,h=n.attributes.position;if(null!==l){for(let n=Math.max(0,s.start),r=Math.min(l.count,s.start+s.count);n<r;n++){const r=l.getX(n);fa.fromBufferAttribute(h,r),xa(fa,r,o,i,t,e,this)}}else{for(let n=Math.max(0,s.start),r=Math.min(h.count,s.start+s.count);n<r;n++)fa.fromBufferAttribute(h,n),xa(fa,n,o,i,t,e,this)}}updateMorphTargets(){const t=this.geometry.morphAttributes,e=Object.keys(t);if(e.length>0){const n=t[e[0]];if(void 0!==n){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let t=0,e=n.length;t<e;t++){const e=n[t].name||String(t);this.morphTargetInfluences.push(0),this.morphTargetDictionary[e]=t}}}}}function xa(t,e,n,i,r,s,a){const o=ma.distanceSqToPoint(t);if(o<n){const n=new un;ma.closestPointToPoint(t,n),n.applyMatrix4(i);const l=r.ray.origin.distanceTo(n);if(l<r.near||l>r.far)return;s.push({distance:l,distanceToRay:Math.sqrt(o),point:n,index:e,face:null,faceIndex:null,barycoord:null,object:a})}}let _a=class extends pi{constructor(){super(),this.isGroup=!0,this.type="Group"}};class ya extends sn{constructor(t,e,n,i,r,s,a,o,l,h,c,q){super(null,s,a,o,l,h,i,r,c,q),this.isCompressedTexture=!0,this.image={width:e,height:n},this.mipmaps=t,this.flipY=!1,this.generateMipmaps=!1}}class va extends sn{constructor(t,e,n,i,r,s,a,o,l,h=1026){if(h!==dt&&h!==mt)throw new Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat");void 0===n&&h===dt&&(n=et),void 0===n&&h===mt&&(n=at),super(null,i,r,s,a,o,h,n,l),this.isDepthTexture=!0,this.image={width:t,height:e},this.magFilter=void 0!==a?a:G,this.minFilter=void 0!==o?o:G,this.flipY=!1,this.generateMipmaps=!1,this.compareFunction=null}copy(t){return super.copy(t),this.compareFunction=t.compareFunction,this}toJSON(t){const e=super.toJSON(t);return null!==this.compareFunction&&(e.compareFunction=this.compareFunction),e}}class wa{constructor(){this.type="Curve",this.arcLengthDivisions=200}getPoint(){return console.warn("THREE.Curve: .getPoint() not implemented."),null}getPointAt(t,e){const n=this.getUtoTmapping(t);return this.getPoint(n,e)}getPoints(t=5){const e=[];for(let n=0;n<=t;n++)e.push(this.getPoint(n/t));return e}getSpacedPoints(t=5){const e=[];for(let n=0;n<=t;n++)e.push(this.getPointAt(n/t));return e}getLength(){const t=this.getLengths();return t[t.length-1]}getLengths(t=this.arcLengthDivisions){if(this.cacheArcLengths&&this.cacheArcLengths.length===t+1&&!this.needsUpdate)return this.cacheArcLengths;this.needsUpdate=!1;const e=[];let n,i=this.getPoint(0),r=0;e.push(0);for(let s=1;s<=t;s++)n=this.getPoint(s/t),r+=n.distanceTo(i),e.push(r),i=n;return this.cacheArcLengths=e,e}updateArcLengths(){this.needsUpdate=!0,this.getLengths()}getUtoTmapping(t,e){const n=this.getLengths();let i=0;const r=n.length;let s;s=e||t*n[r-1];let a,o=0,l=r-1;for(;o<=l;)if(i=Math.floor(o+(l-o)/2),a=n[i]-s,a<0)o=i+1;else{if(!(a>0)){l=i;break}l=i-1}if(i=l,n[i]===s)return i/(r-1);const h=n[i];return(i+(s-h)/(n[i+1]-h))/(r-1)}getTangent(t,e){const n=1e-4;let i=t-n,r=t+n;i<0&&(i=0),r>1&&(r=1);const s=this.getPoint(i),a=this.getPoint(r),o=e||(s.isVector2?new ke:new un);return o.copy(a).sub(s).normalize(),o}getTangentAt(t,e){const n=this.getUtoTmapping(t);return this.getTangent(n,e)}computeFrenetFrames(t,e){const n=new un,i=[],r=[],s=[],a=new un,o=new Vn;for(let u=0;u<=t;u++){const e=u/t;i[u]=this.getTangentAt(e,new un)}r[0]=new un,s[0]=new un;let l=Number.MAX_VALUE;const h=Math.abs(i[0].x),c=Math.abs(i[0].y),q=Math.abs(i[0].z);h<=l&&(l=h,n.set(1,0,0)),c<=l&&(l=c,n.set(0,1,0)),q<=l&&n.set(0,0,1),a.crossVectors(i[0],n).normalize(),r[0].crossVectors(i[0],a),s[0].crossVectors(i[0],r[0]);for(let u=1;u<=t;u++){if(r[u]=r[u-1].clone(),s[u]=s[u-1].clone(),a.crossVectors(i[u-1],i[u]),a.length()>Number.EPSILON){a.normalize();const t=Math.acos(Re(i[u-1].dot(i[u]),-1,1));r[u].applyMatrix4(o.makeRotationAxis(a,t))}s[u].crossVectors(i[u],r[u])}if(!0===e){let e=Math.acos(Re(r[0].dot(r[t]),-1,1));e/=t,i[0].dot(a.crossVectors(r[0],r[t]))>0&&(e=-e);for(let n=1;n<=t;n++)r[n].applyMatrix4(o.makeRotationAxis(i[n],e*n)),s[n].crossVectors(i[n],r[n])}return{tangents:i,normals:r,binormals:s}}clone(){return(new this.constructor).copy(this)}copy(t){return this.arcLengthDivisions=t.arcLengthDivisions,this}toJSON(){const t={metadata:{version:4.6,type:"Curve",generator:"Curve.toJSON"}};return t.arcLengthDivisions=this.arcLengthDivisions,t.type=this.type,t}fromJSON(t){return this.arcLengthDivisions=t.arcLengthDivisions,this}}class ba extends wa{constructor(t=0,e=0,n=1,i=1,r=0,s=2*Math.PI,a=!1,o=0){super(),this.isEllipseCurve=!0,this.type="EllipseCurve",this.aX=t,this.aY=e,this.xRadius=n,this.yRadius=i,this.aStartAngle=r,this.aEndAngle=s,this.aClockwise=a,this.aRotation=o}getPoint(t,e=new ke){const n=e,i=2*Math.PI;let r=this.aEndAngle-this.aStartAngle;const s=Math.abs(r)<Number.EPSILON;for(;r<0;)r+=i;for(;r>i;)r-=i;r<Number.EPSILON&&(r=s?0:i),!0!==this.aClockwise||s||(r===i?r=-i:r-=i);const a=this.aStartAngle+t*r;let o=this.aX+this.xRadius*Math.cos(a),l=this.aY+this.yRadius*Math.sin(a);if(0!==this.aRotation){const t=Math.cos(this.aRotation),e=Math.sin(this.aRotation),n=o-this.aX,i=l-this.aY;o=n*t-i*e+this.aX,l=n*e+i*t+this.aY}return n.set(o,l)}copy(t){return super.copy(t),this.aX=t.aX,this.aY=t.aY,this.xRadius=t.xRadius,this.yRadius=t.yRadius,this.aStartAngle=t.aStartAngle,this.aEndAngle=t.aEndAngle,this.aClockwise=t.aClockwise,this.aRotation=t.aRotation,this}toJSON(){const t=super.toJSON();return t.aX=this.aX,t.aY=this.aY,t.xRadius=this.xRadius,t.yRadius=this.yRadius,t.aStartAngle=this.aStartAngle,t.aEndAngle=this.aEndAngle,t.aClockwise=this.aClockwise,t.aRotation=this.aRotation,t}fromJSON(t){return super.fromJSON(t),this.aX=t.aX,this.aY=t.aY,this.xRadius=t.xRadius,this.yRadius=t.yRadius,this.aStartAngle=t.aStartAngle,this.aEndAngle=t.aEndAngle,this.aClockwise=t.aClockwise,this.aRotation=t.aRotation,this}}class Ma extends ba{constructor(t,e,n,i,r,s){super(t,e,n,n,i,r,s),this.isArcCurve=!0,this.type="ArcCurve"}}function Sa(){let t=0,e=0,n=0,i=0;function r(r,s,a,o){t=r,e=a,n=-3*r+3*s-2*a-o,i=2*r-2*s+a+o}return{initCatmullRom:function(t,e,n,i,s){r(e,n,s*(n-t),s*(i-e))},initNonuniformCatmullRom:function(t,e,n,i,s,a,o){let l=(e-t)/s-(n-t)/(s+a)+(n-e)/a,h=(n-e)/a-(i-e)/(a+o)+(i-n)/o;l*=a,h*=a,r(e,n,l,h)},calc:function(r){const s=r*r;return t+e*r+n*s+i*(s*r)}}}const Ta=new un,Ea=new Sa,Aa=new Sa,Ca=new Sa;class Ra extends wa{constructor(t=[],e=!1,n="centripetal",i=.5){super(),this.isCatmullRomCurve3=!0,this.type="CatmullRomCurve3",this.points=t,this.closed=e,this.curveType=n,this.tension=i}getPoint(t,e=new un){const n=e,i=this.points,r=i.length,s=(r-(this.closed?0:1))*t;let a,o,l=Math.floor(s),h=s-l;this.closed?l+=l>0?0:(Math.floor(Math.abs(l)/r)+1)*r:0===h&&l===r-1&&(l=r-2,h=1),this.closed||l>0?a=i[(l-1)%r]:(Ta.subVectors(i[0],i[1]).add(i[0]),a=Ta);const c=i[l%r],q=i[(l+1)%r];if(this.closed||l+2<r?o=i[(l+2)%r]:(Ta.subVectors(i[r-1],i[r-2]).add(i[r-1]),o=Ta),"centripetal"===this.curveType||"chordal"===this.curveType){const t="chordal"===this.curveType?.5:.25;let e=Math.pow(a.distanceToSquared(c),t),n=Math.pow(c.distanceToSquared(q),t),i=Math.pow(q.distanceToSquared(o),t);n<1e-4&&(n=1),e<1e-4&&(e=n),i<1e-4&&(i=n),Ea.initNonuniformCatmullRom(a.x,c.x,q.x,o.x,e,n,i),Aa.initNonuniformCatmullRom(a.y,c.y,q.y,o.y,e,n,i),Ca.initNonuniformCatmullRom(a.z,c.z,q.z,o.z,e,n,i)}else"catmullrom"===this.curveType&&(Ea.initCatmullRom(a.x,c.x,q.x,o.x,this.tension),Aa.initCatmullRom(a.y,c.y,q.y,o.y,this.tension),Ca.initCatmullRom(a.z,c.z,q.z,o.z,this.tension));return n.set(Ea.calc(h),Aa.calc(h),Ca.calc(h)),n}copy(t){super.copy(t),this.points=[];for(let e=0,n=t.points.length;e<n;e++){const n=t.points[e];this.points.push(n.clone())}return this.closed=t.closed,this.curveType=t.curveType,this.tension=t.tension,this}toJSON(){const t=super.toJSON();t.points=[];for(let e=0,n=this.points.length;e<n;e++){const n=this.points[e];t.points.push(n.toArray())}return t.closed=this.closed,t.curveType=this.curveType,t.tension=this.tension,t}fromJSON(t){super.fromJSON(t),this.points=[];for(let e=0,n=t.points.length;e<n;e++){const n=t.points[e];this.points.push((new un).fromArray(n))}return this.closed=t.closed,this.curveType=t.curveType,this.tension=t.tension,this}}function za(t,e,n,i,r){const s=.5*(i-e),a=.5*(r-n),o=t*t;return(2*n-2*i+s+a)*(t*o)+(-3*n+3*i-2*s-a)*o+s*t+n}function Ia(t,e,n,i){return function(t,e){const n=1-t;return n*n*e}(t,e)+function(t,e){return 2*(1-t)*t*e}(t,n)+function(t,e){return t*t*e}(t,i)}function Pa(t,e,n,i,r){return function(t,e){const n=1-t;return n*n*n*e}(t,e)+function(t,e){const n=1-t;return 3*n*n*t*e}(t,n)+function(t,e){return 3*(1-t)*t*t*e}(t,i)+function(t,e){return t*t*t*e}(t,r)}class La extends wa{constructor(t=new ke,e=new ke,n=new ke,i=new ke){super(),this.isCubicBezierCurve=!0,this.type="CubicBezierCurve",this.v0=t,this.v1=e,this.v2=n,this.v3=i}getPoint(t,e=new ke){const n=e,i=this.v0,r=this.v1,s=this.v2,a=this.v3;return n.set(Pa(t,i.x,r.x,s.x,a.x),Pa(t,i.y,r.y,s.y,a.y)),n}copy(t){return super.copy(t),this.v0.copy(t.v0),this.v1.copy(t.v1),this.v2.copy(t.v2),this.v3.copy(t.v3),this}toJSON(){const t=super.toJSON();return t.v0=this.v0.toArray(),t.v1=this.v1.toArray(),t.v2=this.v2.toArray(),t.v3=this.v3.toArray(),t}fromJSON(t){return super.fromJSON(t),this.v0.fromArray(t.v0),this.v1.fromArray(t.v1),this.v2.fromArray(t.v2),this.v3.fromArray(t.v3),this}}class Na extends wa{constructor(t=new un,e=new un,n=new un,i=new un){super(),this.isCubicBezierCurve3=!0,this.type="CubicBezierCurve3",this.v0=t,this.v1=e,this.v2=n,this.v3=i}getPoint(t,e=new un){const n=e,i=this.v0,r=this.v1,s=this.v2,a=this.v3;return n.set(Pa(t,i.x,r.x,s.x,a.x),Pa(t,i.y,r.y,s.y,a.y),Pa(t,i.z,r.z,s.z,a.z)),n}copy(t){return super.copy(t),this.v0.copy(t.v0),this.v1.copy(t.v1),this.v2.copy(t.v2),this.v3.copy(t.v3),this}toJSON(){const t=super.toJSON();return t.v0=this.v0.toArray(),t.v1=this.v1.toArray(),t.v2=this.v2.toArray(),t.v3=this.v3.toArray(),t}fromJSON(t){return super.fromJSON(t),this.v0.fromArray(t.v0),this.v1.fromArray(t.v1),this.v2.fromArray(t.v2),this.v3.fromArray(t.v3),this}}class ka extends wa{constructor(t=new ke,e=new ke){super(),this.isLineCurve=!0,this.type="LineCurve",this.v1=t,this.v2=e}getPoint(t,e=new ke){const n=e;return 1===t?n.copy(this.v2):(n.copy(this.v2).sub(this.v1),n.multiplyScalar(t).add(this.v1)),n}getPointAt(t,e){return this.getPoint(t,e)}getTangent(t,e=new ke){return e.subVectors(this.v2,this.v1).normalize()}getTangentAt(t,e){return this.getTangent(t,e)}copy(t){return super.copy(t),this.v1.copy(t.v1),this.v2.copy(t.v2),this}toJSON(){const t=super.toJSON();return t.v1=this.v1.toArray(),t.v2=this.v2.toArray(),t}fromJSON(t){return super.fromJSON(t),this.v1.fromArray(t.v1),this.v2.fromArray(t.v2),this}}class Da extends wa{constructor(t=new un,e=new un){super(),this.isLineCurve3=!0,this.type="LineCurve3",this.v1=t,this.v2=e}getPoint(t,e=new un){const n=e;return 1===t?n.copy(this.v2):(n.copy(this.v2).sub(this.v1),n.multiplyScalar(t).add(this.v1)),n}getPointAt(t,e){return this.getPoint(t,e)}getTangent(t,e=new un){return e.subVectors(this.v2,this.v1).normalize()}getTangentAt(t,e){return this.getTangent(t,e)}copy(t){return super.copy(t),this.v1.copy(t.v1),this.v2.copy(t.v2),this}toJSON(){const t=super.toJSON();return t.v1=this.v1.toArray(),t.v2=this.v2.toArray(),t}fromJSON(t){return super.fromJSON(t),this.v1.fromArray(t.v1),this.v2.fromArray(t.v2),this}}class Ua extends wa{constructor(t=new ke,e=new ke,n=new ke){super(),this.isQuadraticBezierCurve=!0,this.type="QuadraticBezierCurve",this.v0=t,this.v1=e,this.v2=n}getPoint(t,e=new ke){const n=e,i=this.v0,r=this.v1,s=this.v2;return n.set(Ia(t,i.x,r.x,s.x),Ia(t,i.y,r.y,s.y)),n}copy(t){return super.copy(t),this.v0.copy(t.v0),this.v1.copy(t.v1),this.v2.copy(t.v2),this}toJSON(){const t=super.toJSON();return t.v0=this.v0.toArray(),t.v1=this.v1.toArray(),t.v2=this.v2.toArray(),t}fromJSON(t){return super.fromJSON(t),this.v0.fromArray(t.v0),this.v1.fromArray(t.v1),this.v2.fromArray(t.v2),this}}class Oa extends wa{constructor(t=new un,e=new un,n=new un){super(),this.isQuadraticBezierCurve3=!0,this.type="QuadraticBezierCurve3",this.v0=t,this.v1=e,this.v2=n}getPoint(t,e=new un){const n=e,i=this.v0,r=this.v1,s=this.v2;return n.set(Ia(t,i.x,r.x,s.x),Ia(t,i.y,r.y,s.y),Ia(t,i.z,r.z,s.z)),n}copy(t){return super.copy(t),this.v0.copy(t.v0),this.v1.copy(t.v1),this.v2.copy(t.v2),this}toJSON(){const t=super.toJSON();return t.v0=this.v0.toArray(),t.v1=this.v1.toArray(),t.v2=this.v2.toArray(),t}fromJSON(t){return super.fromJSON(t),this.v0.fromArray(t.v0),this.v1.fromArray(t.v1),this.v2.fromArray(t.v2),this}}class Fa extends wa{constructor(t=[]){super(),this.isSplineCurve=!0,this.type="SplineCurve",this.points=t}getPoint(t,e=new ke){const n=e,i=this.points,r=(i.length-1)*t,s=Math.floor(r),a=r-s,o=i[0===s?s:s-1],l=i[s],h=i[s>i.length-2?i.length-1:s+1],c=i[s>i.length-3?i.length-1:s+2];return n.set(za(a,o.x,l.x,h.x,c.x),za(a,o.y,l.y,h.y,c.y)),n}copy(t){super.copy(t),this.points=[];for(let e=0,n=t.points.length;e<n;e++){const n=t.points[e];this.points.push(n.clone())}return this}toJSON(){const t=super.toJSON();t.points=[];for(let e=0,n=this.points.length;e<n;e++){const n=this.points[e];t.points.push(n.toArray())}return t}fromJSON(t){super.fromJSON(t),this.points=[];for(let e=0,n=t.points.length;e<n;e++){const n=t.points[e];this.points.push((new ke).fromArray(n))}return this}}var Ba=Object.freeze({__proto__:null,ArcCurve:Ma,CatmullRomCurve3:Ra,CubicBezierCurve:La,CubicBezierCurve3:Na,EllipseCurve:ba,LineCurve:ka,LineCurve3:Da,QuadraticBezierCurve:Ua,QuadraticBezierCurve3:Oa,SplineCurve:Fa});class Va extends wa{constructor(){super(),this.type="CurvePath",this.curves=[],this.autoClose=!1}add(t){this.curves.push(t)}closePath(){const t=this.curves[0].getPoint(0),e=this.curves[this.curves.length-1].getPoint(1);if(!t.equals(e)){const n=!0===t.isVector2?"LineCurve":"LineCurve3";this.curves.push(new Ba[n](e,t))}return this}getPoint(t,e){const n=t*this.getLength(),i=this.getCurveLengths();let r=0;for(;r<i.length;){if(i[r]>=n){const t=i[r]-n,s=this.curves[r],a=s.getLength(),o=0===a?0:1-t/a;return s.getPointAt(o,e)}r++}return null}getLength(){const t=this.getCurveLengths();return t[t.length-1]}updateArcLengths(){this.needsUpdate=!0,this.cacheLengths=null,this.getCurveLengths()}getCurveLengths(){if(this.cacheLengths&&this.cacheLengths.length===this.curves.length)return this.cacheLengths;const t=[];let e=0;for(let n=0,i=this.curves.length;n<i;n++)e+=this.curves[n].getLength(),t.push(e);return this.cacheLengths=t,t}getSpacedPoints(t=40){const e=[];for(let n=0;n<=t;n++)e.push(this.getPoint(n/t));return this.autoClose&&e.push(e[0]),e}getPoints(t=12){const e=[];let n;for(let i=0,r=this.curves;i<r.length;i++){const s=r[i],a=s.isEllipseCurve?2*t:s.isLineCurve||s.isLineCurve3?1:s.isSplineCurve?t*s.points.length:t,o=s.getPoints(a);for(let t=0;t<o.length;t++){const i=o[t];n&&n.equals(i)||(e.push(i),n=i)}}return this.autoClose&&e.length>1&&!e[e.length-1].equals(e[0])&&e.push(e[0]),e}copy(t){super.copy(t),this.curves=[];for(let e=0,n=t.curves.length;e<n;e++){const n=t.curves[e];this.curves.push(n.clone())}return this.autoClose=t.autoClose,this}toJSON(){const t=super.toJSON();t.autoClose=this.autoClose,t.curves=[];for(let e=0,n=this.curves.length;e<n;e++){const n=this.curves[e];t.curves.push(n.toJSON())}return t}fromJSON(t){super.fromJSON(t),this.autoClose=t.autoClose,this.curves=[];for(let e=0,n=t.curves.length;e<n;e++){const n=t.curves[e];this.curves.push((new Ba[n.type]).fromJSON(n))}return this}}class Ha extends Va{constructor(t){super(),this.type="Path",this.currentPoint=new ke,t&&this.setFromPoints(t)}setFromPoints(t){this.moveTo(t[0].x,t[0].y);for(let e=1,n=t.length;e<n;e++)this.lineTo(t[e].x,t[e].y);return this}moveTo(t,e){return this.currentPoint.set(t,e),this}lineTo(t,e){const n=new ka(this.currentPoint.clone(),new ke(t,e));return this.curves.push(n),this.currentPoint.set(t,e),this}quadraticCurveTo(t,e,n,i){const r=new Ua(this.currentPoint.clone(),new ke(t,e),new ke(n,i));return this.curves.push(r),this.currentPoint.set(n,i),this}bezierCurveTo(t,e,n,i,r,s){const a=new La(this.currentPoint.clone(),new ke(t,e),new ke(n,i),new ke(r,s));return this.curves.push(a),this.currentPoint.set(r,s),this}splineThru(t){const e=[this.currentPoint.clone()].concat(t),n=new Fa(e);return this.curves.push(n),this.currentPoint.copy(t[t.length-1]),this}arc(t,e,n,i,r,s){const a=this.currentPoint.x,o=this.currentPoint.y;return this.absarc(t+a,e+o,n,i,r,s),this}absarc(t,e,n,i,r,s){return this.absellipse(t,e,n,n,i,r,s),this}ellipse(t,e,n,i,r,s,a,o){const l=this.currentPoint.x,h=this.currentPoint.y;return this.absellipse(t+l,e+h,n,i,r,s,a,o),this}absellipse(t,e,n,i,r,s,a,o){const l=new ba(t,e,n,i,r,s,a,o);if(this.curves.length>0){const t=l.getPoint(0);t.equals(this.currentPoint)||this.lineTo(t.x,t.y)}this.curves.push(l);const h=l.getPoint(1);return this.currentPoint.copy(h),this}copy(t){return super.copy(t),this.currentPoint.copy(t.currentPoint),this}toJSON(){const t=super.toJSON();return t.currentPoint=this.currentPoint.toArray(),t}fromJSON(t){return super.fromJSON(t),this.currentPoint.fromArray(t.currentPoint),this}}class Ga extends ir{constructor(t=[new ke(0,-.5),new ke(.5,0),new ke(0,.5)],e=12,n=0,i=2*Math.PI){super(),this.type="LatheGeometry",this.parameters={points:t,segments:e,phiStart:n,phiLength:i},e=Math.floor(e),i=Re(i,0,2*Math.PI);const r=[],s=[],a=[],o=[],l=[],h=1/e,c=new un,q=new ke,u=new un,d=new un,m=new un;let p=0,f=0;for(let g=0;g<=t.length-1;g++)switch(g){case 0:p=t[g+1].x-t[g].x,f=t[g+1].y-t[g].y,u.x=1*f,u.y=-p,u.z=0*f,m.copy(u),u.normalize(),o.push(u.x,u.y,u.z);break;case t.length-1:o.push(m.x,m.y,m.z);break;default:p=t[g+1].x-t[g].x,f=t[g+1].y-t[g].y,u.x=1*f,u.y=-p,u.z=0*f,d.copy(u),u.x+=m.x,u.y+=m.y,u.z+=m.z,u.normalize(),o.push(u.x,u.y,u.z),m.copy(d)}for(let g=0;g<=e;g++){const r=n+g*h*i,u=Math.sin(r),d=Math.cos(r);for(let n=0;n<=t.length-1;n++){c.x=t[n].x*u,c.y=t[n].y,c.z=t[n].x*d,s.push(c.x,c.y,c.z),q.x=g/e,q.y=n/(t.length-1),a.push(q.x,q.y);const i=o[3*n+0]*u,r=o[3*n+1],h=o[3*n+0]*d;l.push(i,r,h)}}for(let g=0;g<e;g++)for(let e=0;e<t.length-1;e++){const n=e+g*t.length,i=n,s=n+t.length,a=n+t.length+1,o=n+1;r.push(i,s,o),r.push(a,o,s)}this.setIndex(r),this.setAttribute("position",new Zi(s,3)),this.setAttribute("uv",new Zi(a,2)),this.setAttribute("normal",new Zi(l,3))}copy(t){return super.copy(t),this.parameters=Object.assign({},t.parameters),this}static fromJSON(t){return new Ga(t.points,t.segments,t.phiStart,t.phiLength)}}class Wa extends Ga{constructor(t=1,e=1,n=4,i=8){const r=new Ha;r.absarc(0,-e/2,t,1.5*Math.PI,0),r.absarc(0,e/2,t,0,.5*Math.PI),super(r.getPoints(n),i),this.type="CapsuleGeometry",this.parameters={radius:t,length:e,capSegments:n,radialSegments:i}}static fromJSON(t){return new Wa(t.radius,t.length,t.capSegments,t.radialSegments)}}class ja extends ir{constructor(t=1,e=32,n=0,i=2*Math.PI){super(),this.type="CircleGeometry",this.parameters={radius:t,segments:e,thetaStart:n,thetaLength:i},e=Math.max(3,e);const r=[],s=[],a=[],o=[],l=new un,h=new ke;s.push(0,0,0),a.push(0,0,1),o.push(.5,.5);for(let c=0,q=3;c<=e;c++,q+=3){const r=n+c/e*i;l.x=t*Math.cos(r),l.y=t*Math.sin(r),s.push(l.x,l.y,l.z),a.push(0,0,1),h.x=(s[q]/t+1)/2,h.y=(s[q+1]/t+1)/2,o.push(h.x,h.y)}for(let c=1;c<=e;c++)r.push(c,c+1,0);this.setIndex(r),this.setAttribute("position",new Zi(s,3)),this.setAttribute("normal",new Zi(a,3)),this.setAttribute("uv",new Zi(o,2))}copy(t){return super.copy(t),this.parameters=Object.assign({},t.parameters),this}static fromJSON(t){return new ja(t.radius,t.segments,t.thetaStart,t.thetaLength)}}class Xa extends ir{constructor(t=1,e=1,n=1,i=32,r=1,s=!1,a=0,o=2*Math.PI){super(),this.type="CylinderGeometry",this.parameters={radiusTop:t,radiusBottom:e,height:n,radialSegments:i,heightSegments:r,openEnded:s,thetaStart:a,thetaLength:o};const l=this;i=Math.floor(i),r=Math.floor(r);const h=[],c=[],q=[],u=[];let d=0;const m=[],p=n/2;let f=0;function g(n){const r=d,s=new ke,m=new un;let g=0;const x=!0===n?t:e,_=!0===n?1:-1;for(let t=1;t<=i;t++)c.push(0,p*_,0),q.push(0,_,0),u.push(.5,.5),d++;const y=d;for(let t=0;t<=i;t++){const e=t/i*o+a,n=Math.cos(e),r=Math.sin(e);m.x=x*r,m.y=p*_,m.z=x*n,c.push(m.x,m.y,m.z),q.push(0,_,0),s.x=.5*n+.5,s.y=.5*r*_+.5,u.push(s.x,s.y),d++}for(let t=0;t<i;t++){const e=r+t,i=y+t;!0===n?h.push(i,i+1,e):h.push(i+1,i,e),g+=3}l.addGroup(f,g,!0===n?1:2),f+=g}!function(){const s=new un,g=new un;let x=0;const _=(e-t)/n;for(let l=0;l<=r;l++){const h=[],f=l/r,x=f*(e-t)+t;for(let t=0;t<=i;t++){const e=t/i,r=e*o+a,l=Math.sin(r),m=Math.cos(r);g.x=x*l,g.y=-f*n+p,g.z=x*m,c.push(g.x,g.y,g.z),s.set(l,_,m).normalize(),q.push(s.x,s.y,s.z),u.push(e,1-f),h.push(d++)}m.push(h)}for(let n=0;n<i;n++)for(let i=0;i<r;i++){const s=m[i][n],a=m[i+1][n],o=m[i+1][n+1],l=m[i][n+1];(t>0||0!==i)&&(h.push(s,a,l),x+=3),(e>0||i!==r-1)&&(h.push(a,o,l),x+=3)}l.addGroup(f,x,0),f+=x}(),!1===s&&(t>0&&g(!0),e>0&&g(!1)),this.setIndex(h),this.setAttribute("position",new Zi(c,3)),this.setAttribute("normal",new Zi(q,3)),this.setAttribute("uv",new Zi(u,2))}copy(t){return super.copy(t),this.parameters=Object.assign({},t.parameters),this}static fromJSON(t){return new Xa(t.radiusTop,t.radiusBottom,t.height,t.radialSegments,t.heightSegments,t.openEnded,t.thetaStart,t.thetaLength)}}class Ya extends Xa{constructor(t=1,e=1,n=32,i=1,r=!1,s=0,a=2*Math.PI){super(0,t,e,n,i,r,s,a),this.type="ConeGeometry",this.parameters={radius:t,height:e,radialSegments:n,heightSegments:i,openEnded:r,thetaStart:s,thetaLength:a}}static fromJSON(t){return new Ya(t.radius,t.height,t.radialSegments,t.heightSegments,t.openEnded,t.thetaStart,t.thetaLength)}}class Za extends ir{constructor(t=[],e=[],n=1,i=0){super(),this.type="PolyhedronGeometry",this.parameters={vertices:t,indices:e,radius:n,detail:i};const r=[],s=[];function a(t,e,n,i){const r=i+1,s=[];for(let a=0;a<=r;a++){s[a]=[];const i=t.clone().lerp(n,a/r),o=e.clone().lerp(n,a/r),l=r-a;for(let t=0;t<=l;t++)s[a][t]=0===t&&a===r?i:i.clone().lerp(o,t/l)}for(let a=0;a<r;a++)for(let t=0;t<2*(r-a)-1;t++){const e=Math.floor(t/2);t%2==0?(o(s[a][e+1]),o(s[a+1][e]),o(s[a][e])):(o(s[a][e+1]),o(s[a+1][e+1]),o(s[a+1][e]))}}function o(t){r.push(t.x,t.y,t.z)}function l(e,n){const i=3*e;n.x=t[i+0],n.y=t[i+1],n.z=t[i+2]}function h(t,e,n,i){i<0&&1===t.x&&(s[e]=t.x-1),0===n.x&&0===n.z&&(s[e]=i/2/Math.PI+.5)}function c(t){return Math.atan2(t.z,-t.x)}!function(t){const n=new un,i=new un,r=new un;for(let s=0;s<e.length;s+=3)l(e[s+0],n),l(e[s+1],i),l(e[s+2],r),a(n,i,r,t)}(i),function(t){const e=new un;for(let n=0;n<r.length;n+=3)e.x=r[n+0],e.y=r[n+1],e.z=r[n+2],e.normalize().multiplyScalar(t),r[n+0]=e.x,r[n+1]=e.y,r[n+2]=e.z}(n),function(){const t=new un;for(let n=0;n<r.length;n+=3){t.x=r[n+0],t.y=r[n+1],t.z=r[n+2];const i=c(t)/2/Math.PI+.5,a=(e=t,Math.atan2(-e.y,Math.sqrt(e.x*e.x+e.z*e.z))/Math.PI+.5);s.push(i,1-a)}var e;(function(){const t=new un,e=new un,n=new un,i=new un,a=new ke,o=new ke,l=new ke;for(let q=0,u=0;q<r.length;q+=9,u+=6){t.set(r[q+0],r[q+1],r[q+2]),e.set(r[q+3],r[q+4],r[q+5]),n.set(r[q+6],r[q+7],r[q+8]),a.set(s[u+0],s[u+1]),o.set(s[u+2],s[u+3]),l.set(s[u+4],s[u+5]),i.copy(t).add(e).add(n).divideScalar(3);const d=c(i);h(a,u+0,t,d),h(o,u+2,e,d),h(l,u+4,n,d)}})(),function(){for(let t=0;t<s.length;t+=6){const e=s[t+0],n=s[t+2],i=s[t+4],r=Math.max(e,n,i),a=Math.min(e,n,i);r>.9&&a<.1&&(e<.2&&(s[t+0]+=1),n<.2&&(s[t+2]+=1),i<.2&&(s[t+4]+=1))}}()}(),this.setAttribute("position",new Zi(r,3)),this.setAttribute("normal",new Zi(r.slice(),3)),this.setAttribute("uv",new Zi(s,2)),0===i?this.computeVertexNormals():this.normalizeNormals()}copy(t){return super.copy(t),this.parameters=Object.assign({},t.parameters),this}static fromJSON(t){return new Za(t.vertices,t.indices,t.radius,t.details)}}class Ja extends Za{constructor(t=1,e=0){const n=(1+Math.sqrt(5))/2,i=1/n;super([-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],[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],t,e),this.type="DodecahedronGeometry",this.parameters={radius:t,detail:e}}static fromJSON(t){return new Ja(t.radius,t.detail)}}const $a=new un,Ka=new un,Qa=new un,to=new Ci;class eo extends ir{constructor(t=null,e=1){if(super(),this.type="EdgesGeometry",this.parameters={geometry:t,thresholdAngle:e},null!==t){const n=4,i=Math.pow(10,n),r=Math.cos(Ee*e),s=t.getIndex(),a=t.getAttribute("position"),o=s?s.count:a.count,l=[0,0,0],h=["a","b","c"],c=new Array(3),q={},u=[];for(let t=0;t<o;t+=3){s?(l[0]=s.getX(t),l[1]=s.getX(t+1),l[2]=s.getX(t+2)):(l[0]=t,l[1]=t+1,l[2]=t+2);const{a:e,b:n,c:o}=to;if(e.fromBufferAttribute(a,l[0]),n.fromBufferAttribute(a,l[1]),o.fromBufferAttribute(a,l[2]),to.getNormal(Qa),c[0]=`${Math.round(e.x*i)},${Math.round(e.y*i)},${Math.round(e.z*i)}`,c[1]=`${Math.round(n.x*i)},${Math.round(n.y*i)},${Math.round(n.z*i)}`,c[2]=`${Math.round(o.x*i)},${Math.round(o.y*i)},${Math.round(o.z*i)}`,c[0]!==c[1]&&c[1]!==c[2]&&c[2]!==c[0])for(let t=0;t<3;t++){const e=(t+1)%3,n=c[t],i=c[e],s=to[h[t]],a=to[h[e]],o=`${n}_${i}`,d=`${i}_${n}`;d in q&&q[d]?(Qa.dot(q[d].normal)<=r&&(u.push(s.x,s.y,s.z),u.push(a.x,a.y,a.z)),q[d]=null):o in q||(q[o]={index0:l[t],index1:l[e],normal:Qa.clone()})}}for(const t in q)if(q[t]){const{index0:e,index1:n}=q[t];$a.fromBufferAttribute(a,e),Ka.fromBufferAttribute(a,n),u.push($a.x,$a.y,$a.z),u.push(Ka.x,Ka.y,Ka.z)}this.setAttribute("position",new Zi(u,3))}}copy(t){return super.copy(t),this.parameters=Object.assign({},t.parameters),this}}let no=class extends Ha{constructor(t){super(t),this.uuid=Ce(),this.type="Shape",this.holes=[]}getPointsHoles(t){const e=[];for(let n=0,i=this.holes.length;n<i;n++)e[n]=this.holes[n].getPoints(t);return e}extractPoints(t){return{shape:this.getPoints(t),holes:this.getPointsHoles(t)}}copy(t){super.copy(t),this.holes=[];for(let e=0,n=t.holes.length;e<n;e++){const n=t.holes[e];this.holes.push(n.clone())}return this}toJSON(){const t=super.toJSON();t.uuid=this.uuid,t.holes=[];for(let e=0,n=this.holes.length;e<n;e++){const n=this.holes[e];t.holes.push(n.toJSON())}return t}fromJSON(t){super.fromJSON(t),this.uuid=t.uuid,this.holes=[];for(let e=0,n=t.holes.length;e<n;e++){const n=t.holes[e];this.holes.push((new Ha).fromJSON(n))}return this}};const io=function(t,e,n=2){const i=e&&e.length,r=i?e[0]*n:t.length;let s=ro(t,0,r,n,!0);const a=[];if(!s||s.next===s.prev)return a;let o,l,h,c,q,u,d;if(i&&(s=function(t,e,n,i){const r=[];let s,a,o,l,h;for(s=0,a=e.length;s<a;s++)o=e[s]*i,l=s<a-1?e[s+1]*i:t.length,h=ro(t,o,l,i,!1),h===h.next&&(h.steiner=!0),r.push(fo(h));for(r.sort(qo),s=0;s<r.length;s++)n=uo(r[s],n);return n}(t,e,s,n)),t.length>80*n){o=h=t[0],l=c=t[1];for(let e=n;e<r;e+=n)q=t[e],u=t[e+1],q<o&&(o=q),u<l&&(l=u),q>h&&(h=q),u>c&&(c=u);d=Math.max(h-o,c-l),d=0!==d?32767/d:0}return ao(s,a,n,o,l,d,0),a};function ro(t,e,n,i,r){let s,a;if(r===function(t,e,n,i){let r=0;for(let s=e,a=n-i;s<n;s+=i)r+=(t[a]-t[s])*(t[s+1]+t[a+1]),a=s;return r}(t,e,n,i)>0)for(s=e;s<n;s+=i)a=To(s,t[s],t[s+1],a);else for(s=n-i;s>=e;s-=i)a=To(s,t[s],t[s+1],a);return a&&yo(a,a.next)&&(Eo(a),a=a.next),a}function so(t,e){if(!t)return t;e||(e=t);let n,i=t;do{if(n=!1,i.steiner||!yo(i,i.next)&&0!==_o(i.prev,i,i.next))i=i.next;else{if(Eo(i),i=e=i.prev,i===i.next)break;n=!0}}while(n||i!==e);return e}function ao(t,e,n,i,r,s,a){if(!t)return;!a&&s&&function(t,e,n,i){let r=t;do{0===r.z&&(r.z=po(r.x,r.y,e,n,i)),r.prevZ=r.prev,r.nextZ=r.next,r=r.next}while(r!==t);r.prevZ.nextZ=null,r.prevZ=null,function(t){let e,n,i,r,s,a,o,l,h=1;do{for(n=t,t=null,s=null,a=0;n;){for(a++,i=n,o=0,e=0;e<h&&(o++,i=i.nextZ,i);e++);for(l=h;o>0||l>0&&i;)0!==o&&(0===l||!i||n.z<=i.z)?(r=n,n=n.nextZ,o--):(r=i,i=i.nextZ,l--),s?s.nextZ=r:t=r,r.prevZ=s,s=r;n=i}s.nextZ=null,h*=2}while(a>1)}(r)}(t,i,r,s);let o,l,h=t;for(;t.prev!==t.next;)if(o=t.prev,l=t.next,s?lo(t,i,r,s):oo(t))e.push(o.i/n|0),e.push(t.i/n|0),e.push(l.i/n|0),Eo(t),t=l.next,h=l.next;else if((t=l)===h){a?1===a?ao(t=ho(so(t),e,n),e,n,i,r,s,2):2===a&&co(t,e,n,i,r,s):ao(so(t),e,n,i,r,s,1);break}}function oo(t){const e=t.prev,n=t,i=t.next;if(_o(e,n,i)>=0)return!1;const r=e.x,s=n.x,a=i.x,o=e.y,l=n.y,h=i.y,c=r<s?r<a?r:a:s<a?s:a,q=o<l?o<h?o:h:l<h?l:h,u=r>s?r>a?r:a:s>a?s:a,d=o>l?o>h?o:h:l>h?l:h;let m=i.next;for(;m!==e;){if(m.x>=c&&m.x<=u&&m.y>=q&&m.y<=d&&go(r,o,s,l,a,h,m.x,m.y)&&_o(m.prev,m,m.next)>=0)return!1;m=m.next}return!0}function lo(t,e,n,i){const r=t.prev,s=t,a=t.next;if(_o(r,s,a)>=0)return!1;const o=r.x,l=s.x,h=a.x,c=r.y,q=s.y,u=a.y,d=o<l?o<h?o:h:l<h?l:h,m=c<q?c<u?c:u:q<u?q:u,p=o>l?o>h?o:h:l>h?l:h,f=c>q?c>u?c:u:q>u?q:u,g=po(d,m,e,n,i),x=po(p,f,e,n,i);let _=t.prevZ,y=t.nextZ;for(;_&&_.z>=g&&y&&y.z<=x;){if(_.x>=d&&_.x<=p&&_.y>=m&&_.y<=f&&_!==r&&_!==a&&go(o,c,l,q,h,u,_.x,_.y)&&_o(_.prev,_,_.next)>=0)return!1;if(_=_.prevZ,y.x>=d&&y.x<=p&&y.y>=m&&y.y<=f&&y!==r&&y!==a&&go(o,c,l,q,h,u,y.x,y.y)&&_o(y.prev,y,y.next)>=0)return!1;y=y.nextZ}for(;_&&_.z>=g;){if(_.x>=d&&_.x<=p&&_.y>=m&&_.y<=f&&_!==r&&_!==a&&go(o,c,l,q,h,u,_.x,_.y)&&_o(_.prev,_,_.next)>=0)return!1;_=_.prevZ}for(;y&&y.z<=x;){if(y.x>=d&&y.x<=p&&y.y>=m&&y.y<=f&&y!==r&&y!==a&&go(o,c,l,q,h,u,y.x,y.y)&&_o(y.prev,y,y.next)>=0)return!1;y=y.nextZ}return!0}function ho(t,e,n){let i=t;do{const r=i.prev,s=i.next.next;!yo(r,s)&&vo(r,i,i.next,s)&&Mo(r,s)&&Mo(s,r)&&(e.push(r.i/n|0),e.push(i.i/n|0),e.push(s.i/n|0),Eo(i),Eo(i.next),i=t=s),i=i.next}while(i!==t);return so(i)}function co(t,e,n,i,r,s){let a=t;do{let t=a.next.next;for(;t!==a.prev;){if(a.i!==t.i&&xo(a,t)){let o=So(a,t);return a=so(a,a.next),o=so(o,o.next),ao(a,e,n,i,r,s,0),void ao(o,e,n,i,r,s,0)}t=t.next}a=a.next}while(a!==t)}function qo(t,e){return t.x-e.x}function uo(t,e){const n=function(t,e){let n,i=e,r=-1/0;const s=t.x,a=t.y;do{if(a<=i.y&&a>=i.next.y&&i.next.y!==i.y){const t=i.x+(a-i.y)*(i.next.x-i.x)/(i.next.y-i.y);if(t<=s&&t>r&&(r=t,n=i.x<i.next.x?i:i.next,t===s))return n}i=i.next}while(i!==e);if(!n)return null;const o=n,l=n.x,h=n.y;let c,q=1/0;i=n;do{s>=i.x&&i.x>=l&&s!==i.x&&go(a<h?s:r,a,l,h,a<h?r:s,a,i.x,i.y)&&(c=Math.abs(a-i.y)/(s-i.x),Mo(i,t)&&(c<q||c===q&&(i.x>n.x||i.x===n.x&&mo(n,i)))&&(n=i,q=c)),i=i.next}while(i!==o);return n}(t,e);if(!n)return e;const i=So(n,t);return so(i,i.next),so(n,n.next)}function mo(t,e){return _o(t.prev,t,e.prev)<0&&_o(e.next,t,t.next)<0}function po(t,e,n,i,r){return(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=(t-n)*r|0)|t<<8))|t<<4))|t<<2))|t<<1))|(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=(e-i)*r|0)|e<<8))|e<<4))|e<<2))|e<<1))<<1}function fo(t){let e=t,n=t;do{(e.x<n.x||e.x===n.x&&e.y<n.y)&&(n=e),e=e.next}while(e!==t);return n}function go(t,e,n,i,r,s,a,o){return(r-a)*(e-o)>=(t-a)*(s-o)&&(t-a)*(i-o)>=(n-a)*(e-o)&&(n-a)*(s-o)>=(r-a)*(i-o)}function xo(t,e){return t.next.i!==e.i&&t.prev.i!==e.i&&!function(t,e){let n=t;do{if(n.i!==t.i&&n.next.i!==t.i&&n.i!==e.i&&n.next.i!==e.i&&vo(n,n.next,t,e))return!0;n=n.next}while(n!==t);return!1}(t,e)&&(Mo(t,e)&&Mo(e,t)&&function(t,e){let n=t,i=!1;const r=(t.x+e.x)/2,s=(t.y+e.y)/2;do{n.y>s!=n.next.y>s&&n.next.y!==n.y&&r<(n.next.x-n.x)*(s-n.y)/(n.next.y-n.y)+n.x&&(i=!i),n=n.next}while(n!==t);return i}(t,e)&&(_o(t.prev,t,e.prev)||_o(t,e.prev,e))||yo(t,e)&&_o(t.prev,t,t.next)>0&&_o(e.prev,e,e.next)>0)}function _o(t,e,n){return(e.y-t.y)*(n.x-e.x)-(e.x-t.x)*(n.y-e.y)}function yo(t,e){return t.x===e.x&&t.y===e.y}function vo(t,e,n,i){const r=bo(_o(t,e,n)),s=bo(_o(t,e,i)),a=bo(_o(n,i,t)),o=bo(_o(n,i,e));return r!==s&&a!==o||(!(0!==r||!wo(t,n,e))||(!(0!==s||!wo(t,i,e))||(!(0!==a||!wo(n,t,i))||!(0!==o||!wo(n,e,i)))))}function wo(t,e,n){return e.x<=Math.max(t.x,n.x)&&e.x>=Math.min(t.x,n.x)&&e.y<=Math.max(t.y,n.y)&&e.y>=Math.min(t.y,n.y)}function bo(t){return t>0?1:t<0?-1:0}function Mo(t,e){return _o(t.prev,t,t.next)<0?_o(t,e,t.next)>=0&&_o(t,t.prev,e)>=0:_o(t,e,t.prev)<0||_o(t,t.next,e)<0}function So(t,e){const n=new Ao(t.i,t.x,t.y),i=new Ao(e.i,e.x,e.y),r=t.next,s=e.prev;return t.next=e,e.prev=t,n.next=r,r.prev=n,i.next=n,n.prev=i,s.next=i,i.prev=s,i}function To(t,e,n,i){const r=new Ao(t,e,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 Eo(t){t.next.prev=t.prev,t.prev.next=t.next,t.prevZ&&(t.prevZ.nextZ=t.nextZ),t.nextZ&&(t.nextZ.prevZ=t.prevZ)}function Ao(t,e,n){this.i=t,this.x=e,this.y=n,this.prev=null,this.next=null,this.z=0,this.prevZ=null,this.nextZ=null,this.steiner=!1}class Co{static area(t){const e=t.length;let n=0;for(let i=e-1,r=0;r<e;i=r++)n+=t[i].x*t[r].y-t[r].x*t[i].y;return.5*n}static isClockWise(t){return Co.area(t)<0}static triangulateShape(t,e){const n=[],i=[],r=[];Ro(t),zo(n,t);let s=t.length;e.forEach(Ro);for(let o=0;o<e.length;o++)i.push(s),s+=e[o].length,zo(n,e[o]);const a=io(n,i);for(let o=0;o<a.length;o+=3)r.push(a.slice(o,o+3));return r}}function Ro(t){const e=t.length;e>2&&t[e-1].equals(t[0])&&t.pop()}function zo(t,e){for(let n=0;n<e.length;n++)t.push(e[n].x),t.push(e[n].y)}class Io extends ir{constructor(t=new no([new ke(.5,.5),new ke(-.5,.5),new ke(-.5,-.5),new ke(.5,-.5)]),e={}){super(),this.type="ExtrudeGeometry",this.parameters={shapes:t,options:e},t=Array.isArray(t)?t:[t];const n=this,i=[],r=[];for(let a=0,o=t.length;a<o;a++){s(t[a])}function s(t){const s=[],a=void 0!==e.curveSegments?e.curveSegments:12,o=void 0!==e.steps?e.steps:1,l=void 0!==e.depth?e.depth:1;let h=void 0===e.bevelEnabled||e.bevelEnabled,c=void 0!==e.bevelThickness?e.bevelThickness:.2,q=void 0!==e.bevelSize?e.bevelSize:c-.1,u=void 0!==e.bevelOffset?e.bevelOffset:0,d=void 0!==e.bevelSegments?e.bevelSegments:3;const m=e.extrudePath,p=void 0!==e.UVGenerator?e.UVGenerator:Po;let f,g,x,_,y,v=!1;m&&(f=m.getSpacedPoints(o),v=!0,h=!1,g=m.computeFrenetFrames(o,!1),x=new un,_=new un,y=new un),h||(d=0,c=0,q=0,u=0);const w=t.extractPoints(a);let b=w.shape;const M=w.holes;if(!Co.isClockWise(b)){b=b.reverse();for(let t=0,e=M.length;t<e;t++){const e=M[t];Co.isClockWise(e)&&(M[t]=e.reverse())}}const S=Co.triangulateShape(b,M),T=b;for(let e=0,n=M.length;e<n;e++){const t=M[e];b=b.concat(t)}function E(t,e,n){return e||console.error("THREE.ExtrudeGeometry: vec does not exist"),t.clone().addScaledVector(e,n)}const A=b.length,C=S.length;function R(t,e,n){let i,r,s;const a=t.x-e.x,o=t.y-e.y,l=n.x-t.x,h=n.y-t.y,c=a*a+o*o,q=a*h-o*l;if(Math.abs(q)>Number.EPSILON){const q=Math.sqrt(c),u=Math.sqrt(l*l+h*h),d=e.x-o/q,m=e.y+a/q,p=((n.x-h/u-d)*h-(n.y+l/u-m)*l)/(a*h-o*l);i=d+a*p-t.x,r=m+o*p-t.y;const f=i*i+r*r;if(f<=2)return new ke(i,r);s=Math.sqrt(f/2)}else{let t=!1;a>Number.EPSILON?l>Number.EPSILON&&(t=!0):a<-Number.EPSILON?l<-Number.EPSILON&&(t=!0):Math.sign(o)===Math.sign(h)&&(t=!0),t?(i=-o,r=a,s=Math.sqrt(c)):(i=a,r=o,s=Math.sqrt(c/2))}return new ke(i/s,r/s)}const z=[];for(let e=0,n=T.length,i=n-1,r=e+1;e<n;e++,i++,r++)i===n&&(i=0),r===n&&(r=0),z[e]=R(T[e],T[i],T[r]);const I=[];let P,L=z.concat();for(let e=0,n=M.length;e<n;e++){const t=M[e];P=[];for(let e=0,n=t.length,i=n-1,r=e+1;e<n;e++,i++,r++)i===n&&(i=0),r===n&&(r=0),P[e]=R(t[e],t[i],t[r]);I.push(P),L=L.concat(P)}for(let e=0;e<d;e++){const t=e/d,n=c*Math.cos(t*Math.PI/2),i=q*Math.sin(t*Math.PI/2)+u;for(let e=0,r=T.length;e<r;e++){const t=E(T[e],z[e],i);D(t.x,t.y,-n)}for(let e=0,r=M.length;e<r;e++){const t=M[e];P=I[e];for(let e=0,r=t.length;e<r;e++){const r=E(t[e],P[e],i);D(r.x,r.y,-n)}}}const N=q+u;for(let e=0;e<A;e++){const t=h?E(b[e],L[e],N):b[e];v?(_.copy(g.normals[0]).multiplyScalar(t.x),x.copy(g.binormals[0]).multiplyScalar(t.y),y.copy(f[0]).add(_).add(x),D(y.x,y.y,y.z)):D(t.x,t.y,0)}for(let e=1;e<=o;e++)for(let t=0;t<A;t++){const n=h?E(b[t],L[t],N):b[t];v?(_.copy(g.normals[e]).multiplyScalar(n.x),x.copy(g.binormals[e]).multiplyScalar(n.y),y.copy(f[e]).add(_).add(x),D(y.x,y.y,y.z)):D(n.x,n.y,l/o*e)}for(let e=d-1;e>=0;e--){const t=e/d,n=c*Math.cos(t*Math.PI/2),i=q*Math.sin(t*Math.PI/2)+u;for(let e=0,r=T.length;e<r;e++){const t=E(T[e],z[e],i);D(t.x,t.y,l+n)}for(let e=0,r=M.length;e<r;e++){const t=M[e];P=I[e];for(let e=0,r=t.length;e<r;e++){const r=E(t[e],P[e],i);v?D(r.x,r.y+f[o-1].y,f[o-1].x+n):D(r.x,r.y,l+n)}}}function k(t,e){let n=t.length;for(;--n>=0;){const i=n;let r=n-1;r<0&&(r=t.length-1);for(let t=0,n=o+2*d;t<n;t++){const n=A*t,s=A*(t+1);O(e+i+n,e+r+n,e+r+s,e+i+s)}}}function D(t,e,n){s.push(t),s.push(e),s.push(n)}function U(t,e,r){F(t),F(e),F(r);const s=i.length/3,a=p.generateTopUV(n,i,s-3,s-2,s-1);B(a[0]),B(a[1]),B(a[2])}function O(t,e,r,s){F(t),F(e),F(s),F(e),F(r),F(s);const a=i.length/3,o=p.generateSideWallUV(n,i,a-6,a-3,a-2,a-1);B(o[0]),B(o[1]),B(o[3]),B(o[1]),B(o[2]),B(o[3])}function F(t){i.push(s[3*t+0]),i.push(s[3*t+1]),i.push(s[3*t+2])}function B(t){r.push(t.x),r.push(t.y)}!function(){const t=i.length/3;if(h){let t=0,e=A*t;for(let n=0;n<C;n++){const t=S[n];U(t[2]+e,t[1]+e,t[0]+e)}t=o+2*d,e=A*t;for(let n=0;n<C;n++){const t=S[n];U(t[0]+e,t[1]+e,t[2]+e)}}else{for(let t=0;t<C;t++){const e=S[t];U(e[2],e[1],e[0])}for(let t=0;t<C;t++){const e=S[t];U(e[0]+A*o,e[1]+A*o,e[2]+A*o)}}n.addGroup(t,i.length/3-t,0)}(),function(){const t=i.length/3;let e=0;k(T,e),e+=T.length;for(let n=0,i=M.length;n<i;n++){const t=M[n];k(t,e),e+=t.length}n.addGroup(t,i.length/3-t,1)}()}this.setAttribute("position",new Zi(i,3)),this.setAttribute("uv",new Zi(r,2)),this.computeVertexNormals()}copy(t){return super.copy(t),this.parameters=Object.assign({},t.parameters),this}toJSON(){const t=super.toJSON();return function(t,e,n){if(n.shapes=[],Array.isArray(t))for(let i=0,r=t.length;i<r;i++){const e=t[i];n.shapes.push(e.uuid)}else n.shapes.push(t.uuid);n.options=Object.assign({},e),void 0!==e.extrudePath&&(n.options.extrudePath=e.extrudePath.toJSON());return n}(this.parameters.shapes,this.parameters.options,t)}static fromJSON(t,e){const n=[];for(let r=0,s=t.shapes.length;r<s;r++){const i=e[t.shapes[r]];n.push(i)}const i=t.options.extrudePath;return void 0!==i&&(t.options.extrudePath=(new Ba[i.type]).fromJSON(i)),new Io(n,t.options)}}const Po={generateTopUV:function(t,e,n,i,r){const s=e[3*n],a=e[3*n+1],o=e[3*i],l=e[3*i+1],h=e[3*r],c=e[3*r+1];return[new ke(s,a),new ke(o,l),new ke(h,c)]},generateSideWallUV:function(t,e,n,i,r,s){const a=e[3*n],o=e[3*n+1],l=e[3*n+2],h=e[3*i],c=e[3*i+1],q=e[3*i+2],u=e[3*r],d=e[3*r+1],m=e[3*r+2],p=e[3*s],f=e[3*s+1],g=e[3*s+2];return Math.abs(o-c)<Math.abs(a-h)?[new ke(a,1-l),new ke(h,1-q),new ke(u,1-m),new ke(p,1-g)]:[new ke(o,1-l),new ke(c,1-q),new ke(d,1-m),new ke(f,1-g)]}};class Lo extends Za{constructor(t=1,e=0){const n=(1+Math.sqrt(5))/2;super([-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],[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],t,e),this.type="IcosahedronGeometry",this.parameters={radius:t,detail:e}}static fromJSON(t){return new Lo(t.radius,t.detail)}}class No extends Za{constructor(t=1,e=0){super([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],t,e),this.type="OctahedronGeometry",this.parameters={radius:t,detail:e}}static fromJSON(t){return new No(t.radius,t.detail)}}class ko extends ir{constructor(t=1,e=1,n=1,i=1){super(),this.type="PlaneGeometry",this.parameters={width:t,height:e,widthSegments:n,heightSegments:i};const r=t/2,s=e/2,a=Math.floor(n),o=Math.floor(i),l=a+1,h=o+1,c=t/a,q=e/o,u=[],d=[],m=[],p=[];for(let f=0;f<h;f++){const t=f*q-s;for(let e=0;e<l;e++){const n=e*c-r;d.push(n,-t,0),m.push(0,0,1),p.push(e/a),p.push(1-f/o)}}for(let f=0;f<o;f++)for(let t=0;t<a;t++){const e=t+l*f,n=t+l*(f+1),i=t+1+l*(f+1),r=t+1+l*f;u.push(e,n,r),u.push(n,i,r)}this.setIndex(u),this.setAttribute("position",new Zi(d,3)),this.setAttribute("normal",new Zi(m,3)),this.setAttribute("uv",new Zi(p,2))}copy(t){return super.copy(t),this.parameters=Object.assign({},t.parameters),this}static fromJSON(t){return new ko(t.width,t.height,t.widthSegments,t.heightSegments)}}class Do extends ir{constructor(t=.5,e=1,n=32,i=1,r=0,s=2*Math.PI){super(),this.type="RingGeometry",this.parameters={innerRadius:t,outerRadius:e,thetaSegments:n,phiSegments:i,thetaStart:r,thetaLength:s},n=Math.max(3,n);const a=[],o=[],l=[],h=[];let c=t;const q=(e-t)/(i=Math.max(1,i)),u=new un,d=new ke;for(let m=0;m<=i;m++){for(let t=0;t<=n;t++){const i=r+t/n*s;u.x=c*Math.cos(i),u.y=c*Math.sin(i),o.push(u.x,u.y,u.z),l.push(0,0,1),d.x=(u.x/e+1)/2,d.y=(u.y/e+1)/2,h.push(d.x,d.y)}c+=q}for(let m=0;m<i;m++){const t=m*(n+1);for(let e=0;e<n;e++){const i=e+t,r=i,s=i+n+1,o=i+n+2,l=i+1;a.push(r,s,l),a.push(s,o,l)}}this.setIndex(a),this.setAttribute("position",new Zi(o,3)),this.setAttribute("normal",new Zi(l,3)),this.setAttribute("uv",new Zi(h,2))}copy(t){return super.copy(t),this.parameters=Object.assign({},t.parameters),this}static fromJSON(t){return new Do(t.innerRadius,t.outerRadius,t.thetaSegments,t.phiSegments,t.thetaStart,t.thetaLength)}}class Uo extends ir{constructor(t=new no([new ke(0,.5),new ke(-.5,-.5),new ke(.5,-.5)]),e=12){super(),this.type="ShapeGeometry",this.parameters={shapes:t,curveSegments:e};const n=[],i=[],r=[],s=[];let a=0,o=0;if(!1===Array.isArray(t))l(t);else for(let h=0;h<t.length;h++)l(t[h]),this.addGroup(a,o,h),a+=o,o=0;function l(t){const a=i.length/3,l=t.extractPoints(e);let h=l.shape;const c=l.holes;!1===Co.isClockWise(h)&&(h=h.reverse());for(let e=0,n=c.length;e<n;e++){const t=c[e];!0===Co.isClockWise(t)&&(c[e]=t.reverse())}const q=Co.triangulateShape(h,c);for(let e=0,n=c.length;e<n;e++){const t=c[e];h=h.concat(t)}for(let e=0,n=h.length;e<n;e++){const t=h[e];i.push(t.x,t.y,0),r.push(0,0,1),s.push(t.x,t.y)}for(let e=0,i=q.length;e<i;e++){const t=q[e],i=t[0]+a,r=t[1]+a,s=t[2]+a;n.push(i,r,s),o+=3}}this.setIndex(n),this.setAttribute("position",new Zi(i,3)),this.setAttribute("normal",new Zi(r,3)),this.setAttribute("uv",new Zi(s,2))}copy(t){return super.copy(t),this.parameters=Object.assign({},t.parameters),this}toJSON(){const t=super.toJSON();return function(t,e){if(e.shapes=[],Array.isArray(t))for(let n=0,i=t.length;n<i;n++){const i=t[n];e.shapes.push(i.uuid)}else e.shapes.push(t.uuid);return e}(this.parameters.shapes,t)}static fromJSON(t,e){const n=[];for(let i=0,r=t.shapes.length;i<r;i++){const r=e[t.shapes[i]];n.push(r)}return new Uo(n,t.curveSegments)}}class Oo extends ir{constructor(t=1,e=32,n=16,i=0,r=2*Math.PI,s=0,a=Math.PI){super(),this.type="SphereGeometry",this.parameters={radius:t,widthSegments:e,heightSegments:n,phiStart:i,phiLength:r,thetaStart:s,thetaLength:a},e=Math.max(3,Math.floor(e)),n=Math.max(2,Math.floor(n));const o=Math.min(s+a,Math.PI);let l=0;const h=[],c=new un,q=new un,u=[],d=[],m=[],p=[];for(let f=0;f<=n;f++){const u=[],g=f/n;let x=0;0===f&&0===s?x=.5/e:f===n&&o===Math.PI&&(x=-.5/e);for(let n=0;n<=e;n++){const o=n/e;c.x=-t*Math.cos(i+o*r)*Math.sin(s+g*a),c.y=t*Math.cos(s+g*a),c.z=t*Math.sin(i+o*r)*Math.sin(s+g*a),d.push(c.x,c.y,c.z),q.copy(c).normalize(),m.push(q.x,q.y,q.z),p.push(o+x,1-g),u.push(l++)}h.push(u)}for(let f=0;f<n;f++)for(let t=0;t<e;t++){const e=h[f][t+1],i=h[f][t],r=h[f+1][t],a=h[f+1][t+1];(0!==f||s>0)&&u.push(e,i,a),(f!==n-1||o<Math.PI)&&u.push(i,r,a)}this.setIndex(u),this.setAttribute("position",new Zi(d,3)),this.setAttribute("normal",new Zi(m,3)),this.setAttribute("uv",new Zi(p,2))}copy(t){return super.copy(t),this.parameters=Object.assign({},t.parameters),this}static fromJSON(t){return new Oo(t.radius,t.widthSegments,t.heightSegments,t.phiStart,t.phiLength,t.thetaStart,t.thetaLength)}}class Fo extends Za{constructor(t=1,e=0){super([1,1,1,-1,-1,1,-1,1,-1,1,-1,-1],[2,1,0,0,3,2,1,3,0,2,3,1],t,e),this.type="TetrahedronGeometry",this.parameters={radius:t,detail:e}}static fromJSON(t){return new Fo(t.radius,t.detail)}}class Bo extends ir{constructor(t=1,e=.4,n=12,i=48,r=2*Math.PI){super(),this.type="TorusGeometry",this.parameters={radius:t,tube:e,radialSegments:n,tubularSegments:i,arc:r},n=Math.floor(n),i=Math.floor(i);const s=[],a=[],o=[],l=[],h=new un,c=new un,q=new un;for(let u=0;u<=n;u++)for(let s=0;s<=i;s++){const d=s/i*r,m=u/n*Math.PI*2;c.x=(t+e*Math.cos(m))*Math.cos(d),c.y=(t+e*Math.cos(m))*Math.sin(d),c.z=e*Math.sin(m),a.push(c.x,c.y,c.z),h.x=t*Math.cos(d),h.y=t*Math.sin(d),q.subVectors(c,h).normalize(),o.push(q.x,q.y,q.z),l.push(s/i),l.push(u/n)}for(let u=1;u<=n;u++)for(let t=1;t<=i;t++){const e=(i+1)*u+t-1,n=(i+1)*(u-1)+t-1,r=(i+1)*(u-1)+t,a=(i+1)*u+t;s.push(e,n,a),s.push(n,r,a)}this.setIndex(s),this.setAttribute("position",new Zi(a,3)),this.setAttribute("normal",new Zi(o,3)),this.setAttribute("uv",new Zi(l,2))}copy(t){return super.copy(t),this.parameters=Object.assign({},t.parameters),this}static fromJSON(t){return new Bo(t.radius,t.tube,t.radialSegments,t.tubularSegments,t.arc)}}class Vo extends ir{constructor(t=1,e=.4,n=64,i=8,r=2,s=3){super(),this.type="TorusKnotGeometry",this.parameters={radius:t,tube:e,tubularSegments:n,radialSegments:i,p:r,q:s},n=Math.floor(n),i=Math.floor(i);const a=[],o=[],l=[],h=[],c=new un,q=new un,u=new un,d=new un,m=new un,p=new un,f=new un;for(let x=0;x<=n;++x){const a=x/n*r*Math.PI*2;g(a,r,s,t,u),g(a+.01,r,s,t,d),p.subVectors(d,u),f.addVectors(d,u),m.crossVectors(p,f),f.crossVectors(m,p),m.normalize(),f.normalize();for(let t=0;t<=i;++t){const r=t/i*Math.PI*2,s=-e*Math.cos(r),a=e*Math.sin(r);c.x=u.x+(s*f.x+a*m.x),c.y=u.y+(s*f.y+a*m.y),c.z=u.z+(s*f.z+a*m.z),o.push(c.x,c.y,c.z),q.subVectors(c,u).normalize(),l.push(q.x,q.y,q.z),h.push(x/n),h.push(t/i)}}for(let x=1;x<=n;x++)for(let t=1;t<=i;t++){const e=(i+1)*(x-1)+(t-1),n=(i+1)*x+(t-1),r=(i+1)*x+t,s=(i+1)*(x-1)+t;a.push(e,n,s),a.push(n,r,s)}function g(t,e,n,i,r){const s=Math.cos(t),a=Math.sin(t),o=n/e*t,l=Math.cos(o);r.x=i*(2+l)*.5*s,r.y=i*(2+l)*a*.5,r.z=i*Math.sin(o)*.5}this.setIndex(a),this.setAttribute("position",new Zi(o,3)),this.setAttribute("normal",new Zi(l,3)),this.setAttribute("uv",new Zi(h,2))}copy(t){return super.copy(t),this.parameters=Object.assign({},t.parameters),this}static fromJSON(t){return new Vo(t.radius,t.tube,t.tubularSegments,t.radialSegments,t.p,t.q)}}class Ho extends ir{constructor(t=new Oa(new un(-1,-1,0),new un(-1,1,0),new un(1,1,0)),e=64,n=1,i=8,r=!1){super(),this.type="TubeGeometry",this.parameters={path:t,tubularSegments:e,radius:n,radialSegments:i,closed:r};const s=t.computeFrenetFrames(e,r);this.tangents=s.tangents,this.normals=s.normals,this.binormals=s.binormals;const a=new un,o=new un,l=new ke;let h=new un;const c=[],q=[],u=[],d=[];function m(r){h=t.getPointAt(r/e,h);const l=s.normals[r],u=s.binormals[r];for(let t=0;t<=i;t++){const e=t/i*Math.PI*2,r=Math.sin(e),s=-Math.cos(e);o.x=s*l.x+r*u.x,o.y=s*l.y+r*u.y,o.z=s*l.z+r*u.z,o.normalize(),q.push(o.x,o.y,o.z),a.x=h.x+n*o.x,a.y=h.y+n*o.y,a.z=h.z+n*o.z,c.push(a.x,a.y,a.z)}}!function(){for(let t=0;t<e;t++)m(t);m(!1===r?e:0),function(){for(let t=0;t<=e;t++)for(let n=0;n<=i;n++)l.x=t/e,l.y=n/i,u.push(l.x,l.y)}(),function(){for(let t=1;t<=e;t++)for(let e=1;e<=i;e++){const n=(i+1)*(t-1)+(e-1),r=(i+1)*t+(e-1),s=(i+1)*t+e,a=(i+1)*(t-1)+e;d.push(n,r,a),d.push(r,s,a)}}()}(),this.setIndex(d),this.setAttribute("position",new Zi(c,3)),this.setAttribute("normal",new Zi(q,3)),this.setAttribute("uv",new Zi(u,2))}copy(t){return super.copy(t),this.parameters=Object.assign({},t.parameters),this}toJSON(){const t=super.toJSON();return t.path=this.parameters.path.toJSON(),t}static fromJSON(t){return new Ho((new Ba[t.path.type]).fromJSON(t.path),t.tubularSegments,t.radius,t.radialSegments,t.closed)}}class Go extends ir{constructor(t=null){if(super(),this.type="WireframeGeometry",this.parameters={geometry:t},null!==t){const e=[],n=new Set,i=new un,r=new un;if(null!==t.index){const s=t.attributes.position,a=t.index;let o=t.groups;0===o.length&&(o=[{start:0,count:a.count,materialIndex:0}]);for(let t=0,l=o.length;t<l;++t){const l=o[t],h=l.start;for(let t=h,o=h+l.count;t<o;t+=3)for(let l=0;l<3;l++){const o=a.getX(t+l),h=a.getX(t+(l+1)%3);i.fromBufferAttribute(s,o),r.fromBufferAttribute(s,h),!0===Wo(i,r,n)&&(e.push(i.x,i.y,i.z),e.push(r.x,r.y,r.z))}}}else{const s=t.attributes.position;for(let t=0,a=s.count/3;t<a;t++)for(let o=0;o<3;o++){const a=3*t+o,l=3*t+(o+1)%3;i.fromBufferAttribute(s,a),r.fromBufferAttribute(s,l),!0===Wo(i,r,n)&&(e.push(i.x,i.y,i.z),e.push(r.x,r.y,r.z))}}this.setAttribute("position",new Zi(e,3))}}copy(t){return super.copy(t),this.parameters=Object.assign({},t.parameters),this}}function Wo(t,e,n){const i=`${t.x},${t.y},${t.z}-${e.x},${e.y},${e.z}`,r=`${e.x},${e.y},${e.z}-${t.x},${t.y},${t.z}`;return!0!==n.has(i)&&!0!==n.has(r)&&(n.add(i),n.add(r),!0)}var jo=Object.freeze({__proto__:null,BoxGeometry:gr,CapsuleGeometry:Wa,CircleGeometry:ja,ConeGeometry:Ya,CylinderGeometry:Xa,DodecahedronGeometry:Ja,EdgesGeometry:eo,ExtrudeGeometry:Io,IcosahedronGeometry:Lo,LatheGeometry:Ga,OctahedronGeometry:No,PlaneGeometry:ko,PolyhedronGeometry:Za,RingGeometry:Do,ShapeGeometry:Uo,SphereGeometry:Oo,TetrahedronGeometry:Fo,TorusGeometry:Bo,TorusKnotGeometry:Vo,TubeGeometry:Ho,WireframeGeometry:Go});class Xo extends Di{constructor(t){super(),this.isShadowMaterial=!0,this.type="ShadowMaterial",this.color=new Li(0),this.transparent=!0,this.fog=!0,this.setValues(t)}copy(t){return super.copy(t),this.color.copy(t.color),this.fog=t.fog,this}}class Yo extends wr{constructor(t){super(t),this.isRawShaderMaterial=!0,this.type="RawShaderMaterial"}}class Zo extends Di{constructor(t){super(),this.isMeshStandardMaterial=!0,this.type="MeshStandardMaterial",this.defines={STANDARD:""},this.color=new Li(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 Li(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=0,this.normalScale=new ke(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.roughnessMap=null,this.metalnessMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new Kn,this.envMapIntensity=1,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(t)}copy(t){return super.copy(t),this.defines={STANDARD:""},this.color.copy(t.color),this.roughness=t.roughness,this.metalness=t.metalness,this.map=t.map,this.lightMap=t.lightMap,this.lightMapIntensity=t.lightMapIntensity,this.aoMap=t.aoMap,this.aoMapIntensity=t.aoMapIntensity,this.emissive.copy(t.emissive),this.emissiveMap=t.emissiveMap,this.emissiveIntensity=t.emissiveIntensity,this.bumpMap=t.bumpMap,this.bumpScale=t.bumpScale,this.normalMap=t.normalMap,this.normalMapType=t.normalMapType,this.normalScale.copy(t.normalScale),this.displacementMap=t.displacementMap,this.displacementScale=t.displacementScale,this.displacementBias=t.displacementBias,this.roughnessMap=t.roughnessMap,this.metalnessMap=t.metalnessMap,this.alphaMap=t.alphaMap,this.envMap=t.envMap,this.envMapRotation.copy(t.envMapRotation),this.envMapIntensity=t.envMapIntensity,this.wireframe=t.wireframe,this.wireframeLinewidth=t.wireframeLinewidth,this.wireframeLinecap=t.wireframeLinecap,this.wireframeLinejoin=t.wireframeLinejoin,this.flatShading=t.flatShading,this.fog=t.fog,this}}class Jo extends Zo{constructor(t){super(),this.isMeshPhysicalMaterial=!0,this.defines={STANDARD:"",PHYSICAL:""},this.type="MeshPhysicalMaterial",this.anisotropyRotation=0,this.anisotropyMap=null,this.clearcoatMap=null,this.clearcoatRoughness=0,this.clearcoatRoughnessMap=null,this.clearcoatNormalScale=new ke(1,1),this.clearcoatNormalMap=null,this.ior=1.5,Object.defineProperty(this,"reflectivity",{get:function(){return Re(2.5*(this.ior-1)/(this.ior+1),0,1)},set:function(t){this.ior=(1+.4*t)/(1-.4*t)}}),this.iridescenceMap=null,this.iridescenceIOR=1.3,this.iridescenceThicknessRange=[100,400],this.iridescenceThicknessMap=null,this.sheenColor=new Li(0),this.sheenColorMap=null,this.sheenRoughness=1,this.sheenRoughnessMap=null,this.transmissionMap=null,this.thickness=0,this.thicknessMap=null,this.attenuationDistance=1/0,this.attenuationColor=new Li(1,1,1),this.specularIntensity=1,this.specularIntensityMap=null,this.specularColor=new Li(1,1,1),this.specularColorMap=null,this._anisotropy=0,this._clearcoat=0,this._dispersion=0,this._iridescence=0,this._sheen=0,this._transmission=0,this.setValues(t)}get anisotropy(){return this._anisotropy}set anisotropy(t){this._anisotropy>0!=t>0&&this.version++,this._anisotropy=t}get clearcoat(){return this._clearcoat}set clearcoat(t){this._clearcoat>0!=t>0&&this.version++,this._clearcoat=t}get iridescence(){return this._iridescence}set iridescence(t){this._iridescence>0!=t>0&&this.version++,this._iridescence=t}get dispersion(){return this._dispersion}set dispersion(t){this._dispersion>0!=t>0&&this.version++,this._dispersion=t}get sheen(){return this._sheen}set sheen(t){this._sheen>0!=t>0&&this.version++,this._sheen=t}get transmission(){return this._transmission}set transmission(t){this._transmission>0!=t>0&&this.version++,this._transmission=t}copy(t){return super.copy(t),this.defines={STANDARD:"",PHYSICAL:""},this.anisotropy=t.anisotropy,this.anisotropyRotation=t.anisotropyRotation,this.anisotropyMap=t.anisotropyMap,this.clearcoat=t.clearcoat,this.clearcoatMap=t.clearcoatMap,this.clearcoatRoughness=t.clearcoatRoughness,this.clearcoatRoughnessMap=t.clearcoatRoughnessMap,this.clearcoatNormalMap=t.clearcoatNormalMap,this.clearcoatNormalScale.copy(t.clearcoatNormalScale),this.dispersion=t.dispersion,this.ior=t.ior,this.iridescence=t.iridescence,this.iridescenceMap=t.iridescenceMap,this.iridescenceIOR=t.iridescenceIOR,this.iridescenceThicknessRange=[...t.iridescenceThicknessRange],this.iridescenceThicknessMap=t.iridescenceThicknessMap,this.sheen=t.sheen,this.sheenColor.copy(t.sheenColor),this.sheenColorMap=t.sheenColorMap,this.sheenRoughness=t.sheenRoughness,this.sheenRoughnessMap=t.sheenRoughnessMap,this.transmission=t.transmission,this.transmissionMap=t.transmissionMap,this.thickness=t.thickness,this.thicknessMap=t.thicknessMap,this.attenuationDistance=t.attenuationDistance,this.attenuationColor.copy(t.attenuationColor),this.specularIntensity=t.specularIntensity,this.specularIntensityMap=t.specularIntensityMap,this.specularColor.copy(t.specularColor),this.specularColorMap=t.specularColorMap,this}}class $o extends Di{constructor(t){super(),this.isMeshPhongMaterial=!0,this.type="MeshPhongMaterial",this.color=new Li(16777215),this.specular=new Li(1118481),this.shininess=30,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new Li(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=0,this.normalScale=new ke(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new Kn,this.combine=0,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(t)}copy(t){return super.copy(t),this.color.copy(t.color),this.specular.copy(t.specular),this.shininess=t.shininess,this.map=t.map,this.lightMap=t.lightMap,this.lightMapIntensity=t.lightMapIntensity,this.aoMap=t.aoMap,this.aoMapIntensity=t.aoMapIntensity,this.emissive.copy(t.emissive),this.emissiveMap=t.emissiveMap,this.emissiveIntensity=t.emissiveIntensity,this.bumpMap=t.bumpMap,this.bumpScale=t.bumpScale,this.normalMap=t.normalMap,this.normalMapType=t.normalMapType,this.normalScale.copy(t.normalScale),this.displacementMap=t.displacementMap,this.displacementScale=t.displacementScale,this.displacementBias=t.displacementBias,this.specularMap=t.specularMap,this.alphaMap=t.alphaMap,this.envMap=t.envMap,this.envMapRotation.copy(t.envMapRotation),this.combine=t.combine,this.reflectivity=t.reflectivity,this.refractionRatio=t.refractionRatio,this.wireframe=t.wireframe,this.wireframeLinewidth=t.wireframeLinewidth,this.wireframeLinecap=t.wireframeLinecap,this.wireframeLinejoin=t.wireframeLinejoin,this.flatShading=t.flatShading,this.fog=t.fog,this}}class Ko extends Di{constructor(t){super(),this.isMeshToonMaterial=!0,this.defines={TOON:""},this.type="MeshToonMaterial",this.color=new Li(16777215),this.map=null,this.gradientMap=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new Li(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=0,this.normalScale=new ke(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.alphaMap=null,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(t)}copy(t){return super.copy(t),this.color.copy(t.color),this.map=t.map,this.gradientMap=t.gradientMap,this.lightMap=t.lightMap,this.lightMapIntensity=t.lightMapIntensity,this.aoMap=t.aoMap,this.aoMapIntensity=t.aoMapIntensity,this.emissive.copy(t.emissive),this.emissiveMap=t.emissiveMap,this.emissiveIntensity=t.emissiveIntensity,this.bumpMap=t.bumpMap,this.bumpScale=t.bumpScale,this.normalMap=t.normalMap,this.normalMapType=t.normalMapType,this.normalScale.copy(t.normalScale),this.displacementMap=t.displacementMap,this.displacementScale=t.displacementScale,this.displacementBias=t.displacementBias,this.alphaMap=t.alphaMap,this.wireframe=t.wireframe,this.wireframeLinewidth=t.wireframeLinewidth,this.wireframeLinecap=t.wireframeLinecap,this.wireframeLinejoin=t.wireframeLinejoin,this.fog=t.fog,this}}class Qo extends Di{constructor(t){super(),this.isMeshNormalMaterial=!0,this.type="MeshNormalMaterial",this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=0,this.normalScale=new ke(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.flatShading=!1,this.setValues(t)}copy(t){return super.copy(t),this.bumpMap=t.bumpMap,this.bumpScale=t.bumpScale,this.normalMap=t.normalMap,this.normalMapType=t.normalMapType,this.normalScale.copy(t.normalScale),this.displacementMap=t.displacementMap,this.displacementScale=t.displacementScale,this.displacementBias=t.displacementBias,this.wireframe=t.wireframe,this.wireframeLinewidth=t.wireframeLinewidth,this.flatShading=t.flatShading,this}}class tl extends Di{constructor(t){super(),this.isMeshLambertMaterial=!0,this.type="MeshLambertMaterial",this.color=new Li(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new Li(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=0,this.normalScale=new ke(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new Kn,this.combine=0,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(t)}copy(t){return super.copy(t),this.color.copy(t.color),this.map=t.map,this.lightMap=t.lightMap,this.lightMapIntensity=t.lightMapIntensity,this.aoMap=t.aoMap,this.aoMapIntensity=t.aoMapIntensity,this.emissive.copy(t.emissive),this.emissiveMap=t.emissiveMap,this.emissiveIntensity=t.emissiveIntensity,this.bumpMap=t.bumpMap,this.bumpScale=t.bumpScale,this.normalMap=t.normalMap,this.normalMapType=t.normalMapType,this.normalScale.copy(t.normalScale),this.displacementMap=t.displacementMap,this.displacementScale=t.displacementScale,this.displacementBias=t.displacementBias,this.specularMap=t.specularMap,this.alphaMap=t.alphaMap,this.envMap=t.envMap,this.envMapRotation.copy(t.envMapRotation),this.combine=t.combine,this.reflectivity=t.reflectivity,this.refractionRatio=t.refractionRatio,this.wireframe=t.wireframe,this.wireframeLinewidth=t.wireframeLinewidth,this.wireframeLinecap=t.wireframeLinecap,this.wireframeLinejoin=t.wireframeLinejoin,this.flatShading=t.flatShading,this.fog=t.fog,this}}class el extends Di{constructor(t){super(),this.isMeshDepthMaterial=!0,this.type="MeshDepthMaterial",this.depthPacking=3200,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.setValues(t)}copy(t){return super.copy(t),this.depthPacking=t.depthPacking,this.map=t.map,this.alphaMap=t.alphaMap,this.displacementMap=t.displacementMap,this.displacementScale=t.displacementScale,this.displacementBias=t.displacementBias,this.wireframe=t.wireframe,this.wireframeLinewidth=t.wireframeLinewidth,this}}class nl extends Di{constructor(t){super(),this.isMeshDistanceMaterial=!0,this.type="MeshDistanceMaterial",this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.setValues(t)}copy(t){return super.copy(t),this.map=t.map,this.alphaMap=t.alphaMap,this.displacementMap=t.displacementMap,this.displacementScale=t.displacementScale,this.displacementBias=t.displacementBias,this}}class il extends Di{constructor(t){super(),this.isMeshMatcapMaterial=!0,this.defines={MATCAP:""},this.type="MeshMatcapMaterial",this.color=new Li(16777215),this.matcap=null,this.map=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=0,this.normalScale=new ke(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.alphaMap=null,this.flatShading=!1,this.fog=!0,this.setValues(t)}copy(t){return super.copy(t),this.defines={MATCAP:""},this.color.copy(t.color),this.matcap=t.matcap,this.map=t.map,this.bumpMap=t.bumpMap,this.bumpScale=t.bumpScale,this.normalMap=t.normalMap,this.normalMapType=t.normalMapType,this.normalScale.copy(t.normalScale),this.displacementMap=t.displacementMap,this.displacementScale=t.displacementScale,this.displacementBias=t.displacementBias,this.alphaMap=t.alphaMap,this.flatShading=t.flatShading,this.fog=t.fog,this}}class rl extends Ks{constructor(t){super(),this.isLineDashedMaterial=!0,this.type="LineDashedMaterial",this.scale=1,this.dashSize=3,this.gapSize=1,this.setValues(t)}copy(t){return super.copy(t),this.scale=t.scale,this.dashSize=t.dashSize,this.gapSize=t.gapSize,this}}function sl(t,e,n){return!t||!n&&t.constructor===e?t:"number"==typeof e.BYTES_PER_ELEMENT?new e(t):Array.prototype.slice.call(t)}function al(t){return ArrayBuffer.isView(t)&&!(t instanceof DataView)}function ol(t){const e=t.length,n=new Array(e);for(let i=0;i!==e;++i)n[i]=i;return n.sort((function(e,n){return t[e]-t[n]})),n}function ll(t,e,n){const i=t.length,r=new t.constructor(i);for(let s=0,a=0;a!==i;++s){const i=n[s]*e;for(let n=0;n!==e;++n)r[a++]=t[i+n]}return r}function hl(t,e,n,i){let r=1,s=t[0];for(;void 0!==s&&void 0===s[i];)s=t[r++];if(void 0===s)return;let a=s[i];if(void 0!==a)if(Array.isArray(a))do{a=s[i],void 0!==a&&(e.push(s.time),n.push.apply(n,a)),s=t[r++]}while(void 0!==s);else if(void 0!==a.toArray)do{a=s[i],void 0!==a&&(e.push(s.time),a.toArray(n,n.length)),s=t[r++]}while(void 0!==s);else do{a=s[i],void 0!==a&&(e.push(s.time),n.push(a)),s=t[r++]}while(void 0!==s)}const cl={convertArray:sl,isTypedArray:al,getKeyframeOrder:ol,sortedArray:ll,flattenJSON:hl,subclip:function(t,e,n,i,r=30){const s=t.clone();s.name=e;const a=[];for(let l=0;l<s.tracks.length;++l){const t=s.tracks[l],e=t.getValueSize(),o=[],h=[];for(let s=0;s<t.times.length;++s){const a=t.times[s]*r;if(!(a<n||a>=i)){o.push(t.times[s]);for(let n=0;n<e;++n)h.push(t.values[s*e+n])}}0!==o.length&&(t.times=sl(o,t.times.constructor),t.values=sl(h,t.values.constructor),a.push(t))}s.tracks=a;let o=1/0;for(let l=0;l<s.tracks.length;++l)o>s.tracks[l].times[0]&&(o=s.tracks[l].times[0]);for(let l=0;l<s.tracks.length;++l)s.tracks[l].shift(-1*o);return s.resetDuration(),s},makeClipAdditive:function(t,e=0,n=t,i=30){i<=0&&(i=30);const r=n.tracks.length,s=e/i;for(let a=0;a<r;++a){const e=n.tracks[a],i=e.ValueTypeName;if("bool"===i||"string"===i)continue;const r=t.tracks.find((function(t){return t.name===e.name&&t.ValueTypeName===i}));if(void 0===r)continue;let o=0;const l=e.getValueSize();e.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline&&(o=l/3);let h=0;const c=r.getValueSize();r.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline&&(h=c/3);const q=e.times.length-1;let u;if(s<=e.times[0]){const t=o,n=l-o;u=e.values.slice(t,n)}else if(s>=e.times[q]){const t=q*l+o,n=t+l-o;u=e.values.slice(t,n)}else{const t=e.createInterpolant(),n=o,i=l-o;t.evaluate(s),u=t.resultBuffer.slice(n,i)}if("quaternion"===i){(new qn).fromArray(u).normalize().conjugate().toArray(u)}const d=r.times.length;for(let t=0;t<d;++t){const e=t*c+h;if("quaternion"===i)qn.multiplyQuaternionsFlat(r.values,e,u,0,r.values,e);else{const t=c-2*h;for(let n=0;n<t;++n)r.values[e+n]-=u[n]}}}return t.blendMode=se,t}};class ql{constructor(t,e,n,i){this.parameterPositions=t,this._cachedIndex=0,this.resultBuffer=void 0!==i?i:new e.constructor(n),this.sampleValues=e,this.valueSize=n,this.settings=null,this.DefaultSettings_={}}evaluate(t){const e=this.parameterPositions;let n=this._cachedIndex,i=e[n],r=e[n-1];t:{e:{let s;n:{i:if(!(t<i)){for(let s=n+2;;){if(void 0===i){if(t<r)break i;return n=e.length,this._cachedIndex=n,this.copySampleValue_(n-1)}if(n===s)break;if(r=i,i=e[++n],t<i)break e}s=e.length;break n}if(t>=r)break t;{const a=e[1];t<a&&(n=2,r=a);for(let s=n-2;;){if(void 0===r)return this._cachedIndex=0,this.copySampleValue_(0);if(n===s)break;if(i=r,r=e[--n-1],t>=r)break e}s=n,n=0}}for(;n<s;){const i=n+s>>>1;t<e[i]?s=i:n=i+1}if(i=e[n],r=e[n-1],void 0===r)return this._cachedIndex=0,this.copySampleValue_(0);if(void 0===i)return n=e.length,this._cachedIndex=n,this.copySampleValue_(n-1)}this._cachedIndex=n,this.intervalChanged_(n,r,i)}return this.interpolate_(n,r,t,i)}getSettings_(){return this.settings||this.DefaultSettings_}copySampleValue_(t){const e=this.resultBuffer,n=this.sampleValues,i=this.valueSize,r=t*i;for(let s=0;s!==i;++s)e[s]=n[r+s];return e}interpolate_(){throw new Error("call to abstract method")}intervalChanged_(){}}class ul extends ql{constructor(t,e,n,i){super(t,e,n,i),this._weightPrev=-0,this._offsetPrev=-0,this._weightNext=-0,this._offsetNext=-0,this.DefaultSettings_={endingStart:ee,endingEnd:ee}}intervalChanged_(t,e,n){const i=this.parameterPositions;let r=t-2,s=t+1,a=i[r],o=i[s];if(void 0===a)switch(this.getSettings_().endingStart){case ne:r=t,a=2*e-n;break;case ie:r=i.length-2,a=e+i[r]-i[r+1];break;default:r=t,a=n}if(void 0===o)switch(this.getSettings_().endingEnd){case ne:s=t,o=2*n-e;break;case ie:s=1,o=n+i[1]-i[0];break;default:s=t-1,o=e}const l=.5*(n-e),h=this.valueSize;this._weightPrev=l/(e-a),this._weightNext=l/(o-n),this._offsetPrev=r*h,this._offsetNext=s*h}interpolate_(t,e,n,i){const r=this.resultBuffer,s=this.sampleValues,a=this.valueSize,o=t*a,l=o-a,h=this._offsetPrev,c=this._offsetNext,q=this._weightPrev,u=this._weightNext,d=(n-e)/(i-e),m=d*d,p=m*d,f=-q*p+2*q*m-q*d,g=(1+q)*p+(-1.5-2*q)*m+(-.5+q)*d+1,x=(-1-u)*p+(1.5+u)*m+.5*d,_=u*p-u*m;for(let y=0;y!==a;++y)r[y]=f*s[h+y]+g*s[l+y]+x*s[o+y]+_*s[c+y];return r}}class dl extends ql{constructor(t,e,n,i){super(t,e,n,i)}interpolate_(t,e,n,i){const r=this.resultBuffer,s=this.sampleValues,a=this.valueSize,o=t*a,l=o-a,h=(n-e)/(i-e),c=1-h;for(let q=0;q!==a;++q)r[q]=s[l+q]*c+s[o+q]*h;return r}}class ml extends ql{constructor(t,e,n,i){super(t,e,n,i)}interpolate_(t){return this.copySampleValue_(t-1)}}class pl{constructor(t,e,n,i){if(void 0===t)throw new Error("THREE.KeyframeTrack: track name is undefined");if(void 0===e||0===e.length)throw new Error("THREE.KeyframeTrack: no keyframes in track named "+t);this.name=t,this.times=sl(e,this.TimeBufferType),this.values=sl(n,this.ValueBufferType),this.setInterpolation(i||this.DefaultInterpolation)}static toJSON(t){const e=t.constructor;let n;if(e.toJSON!==this.toJSON)n=e.toJSON(t);else{n={name:t.name,times:sl(t.times,Array),values:sl(t.values,Array)};const e=t.getInterpolation();e!==t.DefaultInterpolation&&(n.interpolation=e)}return n.type=t.ValueTypeName,n}InterpolantFactoryMethodDiscrete(t){return new ml(this.times,this.values,this.getValueSize(),t)}InterpolantFactoryMethodLinear(t){return new dl(this.times,this.values,this.getValueSize(),t)}InterpolantFactoryMethodSmooth(t){return new ul(this.times,this.values,this.getValueSize(),t)}setInterpolation(t){let e;switch(t){case Kt:e=this.InterpolantFactoryMethodDiscrete;break;case Qt:e=this.InterpolantFactoryMethodLinear;break;case te:e=this.InterpolantFactoryMethodSmooth}if(void 0===e){const e="unsupported interpolation for "+this.ValueTypeName+" keyframe track named "+this.name;if(void 0===this.createInterpolant){if(t===this.DefaultInterpolation)throw new Error(e);this.setInterpolation(this.DefaultInterpolation)}return console.warn("THREE.KeyframeTrack:",e),this}return this.createInterpolant=e,this}getInterpolation(){switch(this.createInterpolant){case this.InterpolantFactoryMethodDiscrete:return Kt;case this.InterpolantFactoryMethodLinear:return Qt;case this.InterpolantFactoryMethodSmooth:return te}}getValueSize(){return this.values.length/this.times.length}shift(t){if(0!==t){const e=this.times;for(let n=0,i=e.length;n!==i;++n)e[n]+=t}return this}scale(t){if(1!==t){const e=this.times;for(let n=0,i=e.length;n!==i;++n)e[n]*=t}return this}trim(t,e){const n=this.times,i=n.length;let r=0,s=i-1;for(;r!==i&&n[r]<t;)++r;for(;-1!==s&&n[s]>e;)--s;if(++s,0!==r||s!==i){r>=s&&(s=Math.max(s,1),r=s-1);const t=this.getValueSize();this.times=n.slice(r,s),this.values=this.values.slice(r*t,s*t)}return this}validate(){let t=!0;const e=this.getValueSize();e-Math.floor(e)!=0&&(console.error("THREE.KeyframeTrack: Invalid value size in track.",this),t=!1);const n=this.times,i=this.values,r=n.length;0===r&&(console.error("THREE.KeyframeTrack: Track is empty.",this),t=!1);let s=null;for(let a=0;a!==r;a++){const e=n[a];if("number"==typeof e&&isNaN(e)){console.error("THREE.KeyframeTrack: Time is not a valid number.",this,a,e),t=!1;break}if(null!==s&&s>e){console.error("THREE.KeyframeTrack: Out of order keys.",this,a,e,s),t=!1;break}s=e}if(void 0!==i&&al(i))for(let a=0,o=i.length;a!==o;++a){const e=i[a];if(isNaN(e)){console.error("THREE.KeyframeTrack: Value is not a valid number.",this,a,e),t=!1;break}}return t}optimize(){const t=this.times.slice(),e=this.values.slice(),n=this.getValueSize(),i=this.getInterpolation()===te,r=t.length-1;let s=1;for(let a=1;a<r;++a){let r=!1;const o=t[a];if(o!==t[a+1]&&(1!==a||o!==t[0]))if(i)r=!0;else{const t=a*n,i=t-n,s=t+n;for(let a=0;a!==n;++a){const n=e[t+a];if(n!==e[i+a]||n!==e[s+a]){r=!0;break}}}if(r){if(a!==s){t[s]=t[a];const i=a*n,r=s*n;for(let t=0;t!==n;++t)e[r+t]=e[i+t]}++s}}if(r>0){t[s]=t[r];for(let t=r*n,i=s*n,a=0;a!==n;++a)e[i+a]=e[t+a];++s}return s!==t.length?(this.times=t.slice(0,s),this.values=e.slice(0,s*n)):(this.times=t,this.values=e),this}clone(){const t=this.times.slice(),e=this.values.slice(),n=new(0,this.constructor)(this.name,t,e);return n.createInterpolant=this.createInterpolant,n}}pl.prototype.TimeBufferType=Float32Array,pl.prototype.ValueBufferType=Float32Array,pl.prototype.DefaultInterpolation=Qt;class fl extends pl{constructor(t,e,n){super(t,e,n)}}fl.prototype.ValueTypeName="bool",fl.prototype.ValueBufferType=Array,fl.prototype.DefaultInterpolation=Kt,fl.prototype.InterpolantFactoryMethodLinear=void 0,fl.prototype.InterpolantFactoryMethodSmooth=void 0;class gl extends pl{}gl.prototype.ValueTypeName="color";class xl extends pl{}xl.prototype.ValueTypeName="number";class _l extends ql{constructor(t,e,n,i){super(t,e,n,i)}interpolate_(t,e,n,i){const r=this.resultBuffer,s=this.sampleValues,a=this.valueSize,o=(n-e)/(i-e);let l=t*a;for(let h=l+a;l!==h;l+=4)qn.slerpFlat(r,0,s,l-a,s,l,o);return r}}class yl extends pl{InterpolantFactoryMethodLinear(t){return new _l(this.times,this.values,this.getValueSize(),t)}}yl.prototype.ValueTypeName="quaternion",yl.prototype.InterpolantFactoryMethodSmooth=void 0;class vl extends pl{constructor(t,e,n){super(t,e,n)}}vl.prototype.ValueTypeName="string",vl.prototype.ValueBufferType=Array,vl.prototype.DefaultInterpolation=Kt,vl.prototype.InterpolantFactoryMethodLinear=void 0,vl.prototype.InterpolantFactoryMethodSmooth=void 0;class wl extends pl{}wl.prototype.ValueTypeName="vector";class bl{constructor(t="",e=-1,n=[],i=2500){this.name=t,this.tracks=n,this.duration=e,this.blendMode=i,this.uuid=Ce(),this.duration<0&&this.resetDuration()}static parse(t){const e=[],n=t.tracks,i=1/(t.fps||1);for(let s=0,a=n.length;s!==a;++s)e.push(Ml(n[s]).scale(i));const r=new this(t.name,t.duration,e,t.blendMode);return r.uuid=t.uuid,r}static toJSON(t){const e=[],n=t.tracks,i={name:t.name,duration:t.duration,tracks:e,uuid:t.uuid,blendMode:t.blendMode};for(let r=0,s=n.length;r!==s;++r)e.push(pl.toJSON(n[r]));return i}static CreateFromMorphTargetSequence(t,e,n,i){const r=e.length,s=[];for(let a=0;a<r;a++){let t=[],o=[];t.push((a+r-1)%r,a,(a+1)%r),o.push(0,1,0);const l=ol(t);t=ll(t,1,l),o=ll(o,1,l),i||0!==t[0]||(t.push(r),o.push(o[0])),s.push(new xl(".morphTargetInfluences["+e[a].name+"]",t,o).scale(1/n))}return new this(t,-1,s)}static findByName(t,e){let n=t;if(!Array.isArray(t)){const e=t;n=e.geometry&&e.geometry.animations||e.animations}for(let i=0;i<n.length;i++)if(n[i].name===e)return n[i];return null}static CreateClipsFromMorphTargetSequences(t,e,n){const i={},r=/^([\w-]*?)([\d]+)$/;for(let a=0,o=t.length;a<o;a++){const e=t[a],n=e.name.match(r);if(n&&n.length>1){const t=n[1];let r=i[t];r||(i[t]=r=[]),r.push(e)}}const s=[];for(const a in i)s.push(this.CreateFromMorphTargetSequence(a,i[a],e,n));return s}static parseAnimation(t,e){if(!t)return console.error("THREE.AnimationClip: No animation in JSONLoader data."),null;const n=function(t,e,n,i,r){if(0!==n.length){const s=[],a=[];hl(n,s,a,i),0!==s.length&&r.push(new t(e,s,a))}},i=[],r=t.name||"default",s=t.fps||30,a=t.blendMode;let o=t.length||-1;const l=t.hierarchy||[];for(let h=0;h<l.length;h++){const t=l[h].keys;if(t&&0!==t.length)if(t[0].morphTargets){const e={};let n;for(n=0;n<t.length;n++)if(t[n].morphTargets)for(let i=0;i<t[n].morphTargets.length;i++)e[t[n].morphTargets[i]]=-1;for(const r in e){const e=[],s=[];for(let i=0;i!==t[n].morphTargets.length;++i){const i=t[n];e.push(i.time),s.push(i.morphTarget===r?1:0)}i.push(new xl(".morphTargetInfluence["+r+"]",e,s))}o=e.length*s}else{const r=".bones["+e[h].name+"]";n(wl,r+".position",t,"pos",i),n(yl,r+".quaternion",t,"rot",i),n(wl,r+".scale",t,"scl",i)}}if(0===i.length)return null;return new this(r,o,i,a)}resetDuration(){let t=0;for(let e=0,n=this.tracks.length;e!==n;++e){const n=this.tracks[e];t=Math.max(t,n.times[n.times.length-1])}return this.duration=t,this}trim(){for(let t=0;t<this.tracks.length;t++)this.tracks[t].trim(0,this.duration);return this}validate(){let t=!0;for(let e=0;e<this.tracks.length;e++)t=t&&this.tracks[e].validate();return t}optimize(){for(let t=0;t<this.tracks.length;t++)this.tracks[t].optimize();return this}clone(){const t=[];for(let e=0;e<this.tracks.length;e++)t.push(this.tracks[e].clone());return new this.constructor(this.name,this.duration,t,this.blendMode)}toJSON(){return this.constructor.toJSON(this)}}function Ml(t){if(void 0===t.type)throw new Error("THREE.KeyframeTrack: track type undefined, can not parse");const e=function(t){switch(t.toLowerCase()){case"scalar":case"double":case"float":case"number":case"integer":return xl;case"vector":case"vector2":case"vector3":case"vector4":return wl;case"color":return gl;case"quaternion":return yl;case"bool":case"boolean":return fl;case"string":return vl}throw new Error("THREE.KeyframeTrack: Unsupported typeName: "+t)}(t.type);if(void 0===t.times){const e=[],n=[];hl(t.keys,e,n,"value"),t.times=e,t.values=n}return void 0!==e.parse?e.parse(t):new e(t.name,t.times,t.values,t.interpolation)}const Sl={enabled:!1,files:{},add:function(t,e){!1!==this.enabled&&(this.files[t]=e)},get:function(t){if(!1!==this.enabled)return this.files[t]},remove:function(t){delete this.files[t]},clear:function(){this.files={}}};class Tl{constructor(t,e,n){const i=this;let r,s=!1,a=0,o=0;const l=[];this.onStart=void 0,this.onLoad=t,this.onProgress=e,this.onError=n,this.itemStart=function(t){o++,!1===s&&void 0!==i.onStart&&i.onStart(t,a,o),s=!0},this.itemEnd=function(t){a++,void 0!==i.onProgress&&i.onProgress(t,a,o),a===o&&(s=!1,void 0!==i.onLoad&&i.onLoad())},this.itemError=function(t){void 0!==i.onError&&i.onError(t)},this.resolveURL=function(t){return r?r(t):t},this.setURLModifier=function(t){return r=t,this},this.addHandler=function(t,e){return l.push(t,e),this},this.removeHandler=function(t){const e=l.indexOf(t);return-1!==e&&l.splice(e,2),this},this.getHandler=function(t){for(let e=0,n=l.length;e<n;e+=2){const n=l[e],i=l[e+1];if(n.global&&(n.lastIndex=0),n.test(t))return i}return null}}}const El=new Tl;class Al{constructor(t){this.manager=void 0!==t?t:El,this.crossOrigin="anonymous",this.withCredentials=!1,this.path="",this.resourcePath="",this.requestHeader={}}load(){}loadAsync(t,e){const n=this;return new Promise((function(i,r){n.load(t,i,e,r)}))}parse(){}setCrossOrigin(t){return this.crossOrigin=t,this}setWithCredentials(t){return this.withCredentials=t,this}setPath(t){return this.path=t,this}setResourcePath(t){return this.resourcePath=t,this}setRequestHeader(t){return this.requestHeader=t,this}}Al.DEFAULT_MATERIAL_NAME="__DEFAULT";const Cl={};class Rl extends Error{constructor(t,e){super(t),this.response=e}}class zl extends Al{constructor(t){super(t)}load(t,e,n,i){void 0===t&&(t=""),void 0!==this.path&&(t=this.path+t),t=this.manager.resolveURL(t);const r=Sl.get(t);if(void 0!==r)return this.manager.itemStart(t),setTimeout((()=>{e&&e(r),this.manager.itemEnd(t)}),0),r;if(void 0!==Cl[t])return void Cl[t].push({onLoad:e,onProgress:n,onError:i});Cl[t]=[],Cl[t].push({onLoad:e,onProgress:n,onError:i});const s=new Request(t,{headers:new Headers(this.requestHeader),credentials:this.withCredentials?"include":"same-origin"}),a=this.mimeType,o=this.responseType;fetch(s).then((e=>{if(200===e.status||0===e.status){if(0===e.status&&console.warn("THREE.FileLoader: HTTP Status 0 received."),"undefined"==typeof ReadableStream||void 0===e.body||void 0===e.body.getReader)return e;const n=Cl[t],i=e.body.getReader(),r=e.headers.get("X-File-Size")||e.headers.get("Content-Length"),s=r?parseInt(r):0,a=0!==s;let o=0;const l=new ReadableStream({start(t){!function e(){i.read().then((({done:i,value:r})=>{if(i)t.close();else{o+=r.byteLength;const i=new ProgressEvent("progress",{lengthComputable:a,loaded:o,total:s});for(let t=0,e=n.length;t<e;t++){const e=n[t];e.onProgress&&e.onProgress(i)}t.enqueue(r),e()}}),(e=>{t.error(e)}))}()}});return new Response(l)}throw new Rl(`fetch for "${e.url}" responded with ${e.status}: ${e.statusText}`,e)})).then((t=>{switch(o){case"arraybuffer":return t.arrayBuffer();case"blob":return t.blob();case"document":return t.text().then((t=>(new DOMParser).parseFromString(t,a)));case"json":return t.json();default:if(void 0===a)return t.text();{const e=/charset="?([^;"\s]*)"?/i.exec(a),n=e&&e[1]?e[1].toLowerCase():void 0,i=new TextDecoder(n);return t.arrayBuffer().then((t=>i.decode(t)))}}})).then((e=>{Sl.add(t,e);const n=Cl[t];delete Cl[t];for(let t=0,i=n.length;t<i;t++){const i=n[t];i.onLoad&&i.onLoad(e)}})).catch((e=>{const n=Cl[t];if(void 0===n)throw this.manager.itemError(t),e;delete Cl[t];for(let t=0,i=n.length;t<i;t++){const i=n[t];i.onError&&i.onError(e)}this.manager.itemError(t)})).finally((()=>{this.manager.itemEnd(t)})),this.manager.itemStart(t)}setResponseType(t){return this.responseType=t,this}setMimeType(t){return this.mimeType=t,this}}class Il extends Al{constructor(t){super(t)}load(t,e,n,i){void 0!==this.path&&(t=this.path+t),t=this.manager.resolveURL(t);const r=this,s=Sl.get(t);if(void 0!==s)return r.manager.itemStart(t),setTimeout((function(){e&&e(s),r.manager.itemEnd(t)}),0),s;const a=Ve("img");function o(){h(),Sl.add(t,this),e&&e(this),r.manager.itemEnd(t)}function l(e){h(),i&&i(e),r.manager.itemError(t),r.manager.itemEnd(t)}function h(){a.removeEventListener("load",o,!1),a.removeEventListener("error",l,!1)}return a.addEventListener("load",o,!1),a.addEventListener("error",l,!1),"data:"!==t.slice(0,5)&&void 0!==this.crossOrigin&&(a.crossOrigin=this.crossOrigin),r.manager.itemStart(t),a.src=t,a}}class Pl extends pi{constructor(t,e=1){super(),this.isLight=!0,this.type="Light",this.color=new Li(t),this.intensity=e}dispose(){}copy(t,e){return super.copy(t,e),this.color.copy(t.color),this.intensity=t.intensity,this}toJSON(t){const e=super.toJSON(t);return e.object.color=this.color.getHex(),e.object.intensity=this.intensity,void 0!==this.groundColor&&(e.object.groundColor=this.groundColor.getHex()),void 0!==this.distance&&(e.object.distance=this.distance),void 0!==this.angle&&(e.object.angle=this.angle),void 0!==this.decay&&(e.object.decay=this.decay),void 0!==this.penumbra&&(e.object.penumbra=this.penumbra),void 0!==this.shadow&&(e.object.shadow=this.shadow.toJSON()),void 0!==this.target&&(e.object.target=this.target.uuid),e}}class Ll extends Pl{constructor(t,e,n){super(t,n),this.isHemisphereLight=!0,this.type="HemisphereLight",this.position.copy(pi.DEFAULT_UP),this.updateMatrix(),this.groundColor=new Li(e)}copy(t,e){return super.copy(t,e),this.groundColor.copy(t.groundColor),this}}const Nl=new Vn,kl=new un,Dl=new un;class Ul{constructor(t){this.camera=t,this.intensity=1,this.bias=0,this.normalBias=0,this.radius=1,this.blurSamples=8,this.mapSize=new ke(512,512),this.map=null,this.mapPass=null,this.matrix=new Vn,this.autoUpdate=!0,this.needsUpdate=!1,this._frustum=new Ps,this._frameExtents=new ke(1,1),this._viewportCount=1,this._viewports=[new an(0,0,1,1)]}getViewportCount(){return this._viewportCount}getFrustum(){return this._frustum}updateMatrices(t){const e=this.camera,n=this.matrix;kl.setFromMatrixPosition(t.matrixWorld),e.position.copy(kl),Dl.setFromMatrixPosition(t.target.matrixWorld),e.lookAt(Dl),e.updateMatrixWorld(),Nl.multiplyMatrices(e.projectionMatrix,e.matrixWorldInverse),this._frustum.setFromProjectionMatrix(Nl),n.set(.5,0,0,.5,0,.5,0,.5,0,0,.5,.5,0,0,0,1),n.multiply(Nl)}getViewport(t){return this._viewports[t]}getFrameExtents(){return this._frameExtents}dispose(){this.map&&this.map.dispose(),this.mapPass&&this.mapPass.dispose()}copy(t){return this.camera=t.camera.clone(),this.intensity=t.intensity,this.bias=t.bias,this.radius=t.radius,this.mapSize.copy(t.mapSize),this}clone(){return(new this.constructor).copy(this)}toJSON(){const t={};return 1!==this.intensity&&(t.intensity=this.intensity),0!==this.bias&&(t.bias=this.bias),0!==this.normalBias&&(t.normalBias=this.normalBias),1!==this.radius&&(t.radius=this.radius),512===this.mapSize.x&&512===this.mapSize.y||(t.mapSize=this.mapSize.toArray()),t.camera=this.camera.toJSON(!1).object,delete t.camera.matrix,t}}class Ol extends Ul{constructor(){super(new Er(50,1,.5,500)),this.isSpotLightShadow=!0,this.focus=1}updateMatrices(t){const e=this.camera,n=2*Ae*t.angle*this.focus,i=this.mapSize.width/this.mapSize.height,r=t.distance||e.far;n===e.fov&&i===e.aspect&&r===e.far||(e.fov=n,e.aspect=i,e.far=r,e.updateProjectionMatrix()),super.updateMatrices(t)}copy(t){return super.copy(t),this.focus=t.focus,this}}class Fl extends Pl{constructor(t,e,n=0,i=Math.PI/3,r=0,s=2){super(t,e),this.isSpotLight=!0,this.type="SpotLight",this.position.copy(pi.DEFAULT_UP),this.updateMatrix(),this.target=new pi,this.distance=n,this.angle=i,this.penumbra=r,this.decay=s,this.map=null,this.shadow=new Ol}get power(){return this.intensity*Math.PI}set power(t){this.intensity=t/Math.PI}dispose(){this.shadow.dispose()}copy(t,e){return super.copy(t,e),this.distance=t.distance,this.angle=t.angle,this.penumbra=t.penumbra,this.decay=t.decay,this.target=t.target.clone(),this.shadow=t.shadow.clone(),this}}const Bl=new Vn,Vl=new un,Hl=new un;class Gl extends Ul{constructor(){super(new Er(90,1,.5,500)),this.isPointLightShadow=!0,this._frameExtents=new ke(4,2),this._viewportCount=6,this._viewports=[new an(2,1,1,1),new an(0,1,1,1),new an(3,1,1,1),new an(1,1,1,1),new an(3,0,1,1),new an(1,0,1,1)],this._cubeDirections=[new un(1,0,0),new un(-1,0,0),new un(0,0,1),new un(0,0,-1),new un(0,1,0),new un(0,-1,0)],this._cubeUps=[new un(0,1,0),new un(0,1,0),new un(0,1,0),new un(0,1,0),new un(0,0,1),new un(0,0,-1)]}updateMatrices(t,e=0){const n=this.camera,i=this.matrix,r=t.distance||n.far;r!==n.far&&(n.far=r,n.updateProjectionMatrix()),Vl.setFromMatrixPosition(t.matrixWorld),n.position.copy(Vl),Hl.copy(n.position),Hl.add(this._cubeDirections[e]),n.up.copy(this._cubeUps[e]),n.lookAt(Hl),n.updateMatrixWorld(),i.makeTranslation(-Vl.x,-Vl.y,-Vl.z),Bl.multiplyMatrices(n.projectionMatrix,n.matrixWorldInverse),this._frustum.setFromProjectionMatrix(Bl)}}class Wl extends Pl{constructor(t,e,n=0,i=2){super(t,e),this.isPointLight=!0,this.type="PointLight",this.distance=n,this.decay=i,this.shadow=new Gl}get power(){return 4*this.intensity*Math.PI}set power(t){this.intensity=t/(4*Math.PI)}dispose(){this.shadow.dispose()}copy(t,e){return super.copy(t,e),this.distance=t.distance,this.decay=t.decay,this.shadow=t.shadow.clone(),this}}class jl extends br{constructor(t=-1,e=1,n=1,i=-1,r=.1,s=2e3){super(),this.isOrthographicCamera=!0,this.type="OrthographicCamera",this.zoom=1,this.view=null,this.left=t,this.right=e,this.top=n,this.bottom=i,this.near=r,this.far=s,this.updateProjectionMatrix()}copy(t,e){return super.copy(t,e),this.left=t.left,this.right=t.right,this.top=t.top,this.bottom=t.bottom,this.near=t.near,this.far=t.far,this.zoom=t.zoom,this.view=null===t.view?null:Object.assign({},t.view),this}setViewOffset(t,e,n,i,r,s){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=t,this.view.fullHeight=e,this.view.offsetX=n,this.view.offsetY=i,this.view.width=r,this.view.height=s,this.updateProjectionMatrix()}clearViewOffset(){null!==this.view&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const t=(this.right-this.left)/(2*this.zoom),e=(this.top-this.bottom)/(2*this.zoom),n=(this.right+this.left)/2,i=(this.top+this.bottom)/2;let r=n-t,s=n+t,a=i+e,o=i-e;if(null!==this.view&&this.view.enabled){const t=(this.right-this.left)/this.view.fullWidth/this.zoom,e=(this.top-this.bottom)/this.view.fullHeight/this.zoom;r+=t*this.view.offsetX,s=r+t*this.view.width,a-=e*this.view.offsetY,o=a-e*this.view.height}this.projectionMatrix.makeOrthographic(r,s,a,o,this.near,this.far,this.coordinateSystem),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(t){const e=super.toJSON(t);return e.object.zoom=this.zoom,e.object.left=this.left,e.object.right=this.right,e.object.top=this.top,e.object.bottom=this.bottom,e.object.near=this.near,e.object.far=this.far,null!==this.view&&(e.object.view=Object.assign({},this.view)),e}}class Xl extends Ul{constructor(){super(new jl(-5,5,5,-5,.5,500)),this.isDirectionalLightShadow=!0}}class Yl extends Pl{constructor(t,e){super(t,e),this.isDirectionalLight=!0,this.type="DirectionalLight",this.position.copy(pi.DEFAULT_UP),this.updateMatrix(),this.target=new pi,this.shadow=new Xl}dispose(){this.shadow.dispose()}copy(t){return super.copy(t),this.target=t.target.clone(),this.shadow=t.shadow.clone(),this}}class Zl extends Pl{constructor(t,e){super(t,e),this.isAmbientLight=!0,this.type="AmbientLight"}}class Jl extends Pl{constructor(t,e,n=10,i=10){super(t,e),this.isRectAreaLight=!0,this.type="RectAreaLight",this.width=n,this.height=i}get power(){return this.intensity*this.width*this.height*Math.PI}set power(t){this.intensity=t/(this.width*this.height*Math.PI)}copy(t){return super.copy(t),this.width=t.width,this.height=t.height,this}toJSON(t){const e=super.toJSON(t);return e.object.width=this.width,e.object.height=this.height,e}}class $l{constructor(){this.isSphericalHarmonics3=!0,this.coefficients=[];for(let t=0;t<9;t++)this.coefficients.push(new un)}set(t){for(let e=0;e<9;e++)this.coefficients[e].copy(t[e]);return this}zero(){for(let t=0;t<9;t++)this.coefficients[t].set(0,0,0);return this}getAt(t,e){const n=t.x,i=t.y,r=t.z,s=this.coefficients;return e.copy(s[0]).multiplyScalar(.282095),e.addScaledVector(s[1],.488603*i),e.addScaledVector(s[2],.488603*r),e.addScaledVector(s[3],.488603*n),e.addScaledVector(s[4],n*i*1.092548),e.addScaledVector(s[5],i*r*1.092548),e.addScaledVector(s[6],.315392*(3*r*r-1)),e.addScaledVector(s[7],n*r*1.092548),e.addScaledVector(s[8],.546274*(n*n-i*i)),e}getIrradianceAt(t,e){const n=t.x,i=t.y,r=t.z,s=this.coefficients;return e.copy(s[0]).multiplyScalar(.886227),e.addScaledVector(s[1],1.023328*i),e.addScaledVector(s[2],1.023328*r),e.addScaledVector(s[3],1.023328*n),e.addScaledVector(s[4],.858086*n*i),e.addScaledVector(s[5],.858086*i*r),e.addScaledVector(s[6],.743125*r*r-.247708),e.addScaledVector(s[7],.858086*n*r),e.addScaledVector(s[8],.429043*(n*n-i*i)),e}add(t){for(let e=0;e<9;e++)this.coefficients[e].add(t.coefficients[e]);return this}addScaledSH(t,e){for(let n=0;n<9;n++)this.coefficients[n].addScaledVector(t.coefficients[n],e);return this}scale(t){for(let e=0;e<9;e++)this.coefficients[e].multiplyScalar(t);return this}lerp(t,e){for(let n=0;n<9;n++)this.coefficients[n].lerp(t.coefficients[n],e);return this}equals(t){for(let e=0;e<9;e++)if(!this.coefficients[e].equals(t.coefficients[e]))return!1;return!0}copy(t){return this.set(t.coefficients)}clone(){return(new this.constructor).copy(this)}fromArray(t,e=0){const n=this.coefficients;for(let i=0;i<9;i++)n[i].fromArray(t,e+3*i);return this}toArray(t=[],e=0){const n=this.coefficients;for(let i=0;i<9;i++)n[i].toArray(t,e+3*i);return t}static getBasisAt(t,e){const n=t.x,i=t.y,r=t.z;e[0]=.282095,e[1]=.488603*i,e[2]=.488603*r,e[3]=.488603*n,e[4]=1.092548*n*i,e[5]=1.092548*i*r,e[6]=.315392*(3*r*r-1),e[7]=1.092548*n*r,e[8]=.546274*(n*n-i*i)}}class Kl extends Pl{constructor(t=new $l,e=1){super(void 0,e),this.isLightProbe=!0,this.sh=t}copy(t){return super.copy(t),this.sh.copy(t.sh),this}fromJSON(t){return this.intensity=t.intensity,this.sh.fromArray(t.sh),this}toJSON(t){const e=super.toJSON(t);return e.object.sh=this.sh.toArray(),e}}class Ql extends Al{constructor(t){super(t),this.textures={}}load(t,e,n,i){const r=this,s=new zl(r.manager);s.setPath(r.path),s.setRequestHeader(r.requestHeader),s.setWithCredentials(r.withCredentials),s.load(t,(function(n){try{e(r.parse(JSON.parse(n)))}catch(s){i?i(s):console.error(s),r.manager.itemError(t)}}),n,i)}parse(t){const e=this.textures;function n(t){return void 0===e[t]&&console.warn("THREE.MaterialLoader: Undefined texture",t),e[t]}const i=this.createMaterialFromType(t.type);if(void 0!==t.uuid&&(i.uuid=t.uuid),void 0!==t.name&&(i.name=t.name),void 0!==t.color&&void 0!==i.color&&i.color.setHex(t.color),void 0!==t.roughness&&(i.roughness=t.roughness),void 0!==t.metalness&&(i.metalness=t.metalness),void 0!==t.sheen&&(i.sheen=t.sheen),void 0!==t.sheenColor&&(i.sheenColor=(new Li).setHex(t.sheenColor)),void 0!==t.sheenRoughness&&(i.sheenRoughness=t.sheenRoughness),void 0!==t.emissive&&void 0!==i.emissive&&i.emissive.setHex(t.emissive),void 0!==t.specular&&void 0!==i.specular&&i.specular.setHex(t.specular),void 0!==t.specularIntensity&&(i.specularIntensity=t.specularIntensity),void 0!==t.specularColor&&void 0!==i.specularColor&&i.specularColor.setHex(t.specularColor),void 0!==t.shininess&&(i.shininess=t.shininess),void 0!==t.clearcoat&&(i.clearcoat=t.clearcoat),void 0!==t.clearcoatRoughness&&(i.clearcoatRoughness=t.clearcoatRoughness),void 0!==t.dispersion&&(i.dispersion=t.dispersion),void 0!==t.iridescence&&(i.iridescence=t.iridescence),void 0!==t.iridescenceIOR&&(i.iridescenceIOR=t.iridescenceIOR),void 0!==t.iridescenceThicknessRange&&(i.iridescenceThicknessRange=t.iridescenceThicknessRange),void 0!==t.transmission&&(i.transmission=t.transmission),void 0!==t.thickness&&(i.thickness=t.thickness),void 0!==t.attenuationDistance&&(i.attenuationDistance=t.attenuationDistance),void 0!==t.attenuationColor&&void 0!==i.attenuationColor&&i.attenuationColor.setHex(t.attenuationColor),void 0!==t.anisotropy&&(i.anisotropy=t.anisotropy),void 0!==t.anisotropyRotation&&(i.anisotropyRotation=t.anisotropyRotation),void 0!==t.fog&&(i.fog=t.fog),void 0!==t.flatShading&&(i.flatShading=t.flatShading),void 0!==t.blending&&(i.blending=t.blending),void 0!==t.combine&&(i.combine=t.combine),void 0!==t.side&&(i.side=t.side),void 0!==t.shadowSide&&(i.shadowSide=t.shadowSide),void 0!==t.opacity&&(i.opacity=t.opacity),void 0!==t.transparent&&(i.transparent=t.transparent),void 0!==t.alphaTest&&(i.alphaTest=t.alphaTest),void 0!==t.alphaHash&&(i.alphaHash=t.alphaHash),void 0!==t.depthFunc&&(i.depthFunc=t.depthFunc),void 0!==t.depthTest&&(i.depthTest=t.depthTest),void 0!==t.depthWrite&&(i.depthWrite=t.depthWrite),void 0!==t.colorWrite&&(i.colorWrite=t.colorWrite),void 0!==t.blendSrc&&(i.blendSrc=t.blendSrc),void 0!==t.blendDst&&(i.blendDst=t.blendDst),void 0!==t.blendEquation&&(i.blendEquation=t.blendEquation),void 0!==t.blendSrcAlpha&&(i.blendSrcAlpha=t.blendSrcAlpha),void 0!==t.blendDstAlpha&&(i.blendDstAlpha=t.blendDstAlpha),void 0!==t.blendEquationAlpha&&(i.blendEquationAlpha=t.blendEquationAlpha),void 0!==t.blendColor&&void 0!==i.blendColor&&i.blendColor.setHex(t.blendColor),void 0!==t.blendAlpha&&(i.blendAlpha=t.blendAlpha),void 0!==t.stencilWriteMask&&(i.stencilWriteMask=t.stencilWriteMask),void 0!==t.stencilFunc&&(i.stencilFunc=t.stencilFunc),void 0!==t.stencilRef&&(i.stencilRef=t.stencilRef),void 0!==t.stencilFuncMask&&(i.stencilFuncMask=t.stencilFuncMask),void 0!==t.stencilFail&&(i.stencilFail=t.stencilFail),void 0!==t.stencilZFail&&(i.stencilZFail=t.stencilZFail),void 0!==t.stencilZPass&&(i.stencilZPass=t.stencilZPass),void 0!==t.stencilWrite&&(i.stencilWrite=t.stencilWrite),void 0!==t.wireframe&&(i.wireframe=t.wireframe),void 0!==t.wireframeLinewidth&&(i.wireframeLinewidth=t.wireframeLinewidth),void 0!==t.wireframeLinecap&&(i.wireframeLinecap=t.wireframeLinecap),void 0!==t.wireframeLinejoin&&(i.wireframeLinejoin=t.wireframeLinejoin),void 0!==t.rotation&&(i.rotation=t.rotation),void 0!==t.linewidth&&(i.linewidth=t.linewidth),void 0!==t.dashSize&&(i.dashSize=t.dashSize),void 0!==t.gapSize&&(i.gapSize=t.gapSize),void 0!==t.scale&&(i.scale=t.scale),void 0!==t.polygonOffset&&(i.polygonOffset=t.polygonOffset),void 0!==t.polygonOffsetFactor&&(i.polygonOffsetFactor=t.polygonOffsetFactor),void 0!==t.polygonOffsetUnits&&(i.polygonOffsetUnits=t.polygonOffsetUnits),void 0!==t.dithering&&(i.dithering=t.dithering),void 0!==t.alphaToCoverage&&(i.alphaToCoverage=t.alphaToCoverage),void 0!==t.premultipliedAlpha&&(i.premultipliedAlpha=t.premultipliedAlpha),void 0!==t.forceSinglePass&&(i.forceSinglePass=t.forceSinglePass),void 0!==t.visible&&(i.visible=t.visible),void 0!==t.toneMapped&&(i.toneMapped=t.toneMapped),void 0!==t.userData&&(i.userData=t.userData),void 0!==t.vertexColors&&("number"==typeof t.vertexColors?i.vertexColors=t.vertexColors>0:i.vertexColors=t.vertexColors),void 0!==t.uniforms)for(const r in t.uniforms){const e=t.uniforms[r];switch(i.uniforms[r]={},e.type){case"t":i.uniforms[r].value=n(e.value);break;case"c":i.uniforms[r].value=(new Li).setHex(e.value);break;case"v2":i.uniforms[r].value=(new ke).fromArray(e.value);break;case"v3":i.uniforms[r].value=(new un).fromArray(e.value);break;case"v4":i.uniforms[r].value=(new an).fromArray(e.value);break;case"m3":i.uniforms[r].value=(new De).fromArray(e.value);break;case"m4":i.uniforms[r].value=(new Vn).fromArray(e.value);break;default:i.uniforms[r].value=e.value}}if(void 0!==t.defines&&(i.defines=t.defines),void 0!==t.vertexShader&&(i.vertexShader=t.vertexShader),void 0!==t.fragmentShader&&(i.fragmentShader=t.fragmentShader),void 0!==t.glslVersion&&(i.glslVersion=t.glslVersion),void 0!==t.extensions)for(const r in t.extensions)i.extensions[r]=t.extensions[r];if(void 0!==t.lights&&(i.lights=t.lights),void 0!==t.clipping&&(i.clipping=t.clipping),void 0!==t.size&&(i.size=t.size),void 0!==t.sizeAttenuation&&(i.sizeAttenuation=t.sizeAttenuation),void 0!==t.map&&(i.map=n(t.map)),void 0!==t.matcap&&(i.matcap=n(t.matcap)),void 0!==t.alphaMap&&(i.alphaMap=n(t.alphaMap)),void 0!==t.bumpMap&&(i.bumpMap=n(t.bumpMap)),void 0!==t.bumpScale&&(i.bumpScale=t.bumpScale),void 0!==t.normalMap&&(i.normalMap=n(t.normalMap)),void 0!==t.normalMapType&&(i.normalMapType=t.normalMapType),void 0!==t.normalScale){let e=t.normalScale;!1===Array.isArray(e)&&(e=[e,e]),i.normalScale=(new ke).fromArray(e)}return void 0!==t.displacementMap&&(i.displacementMap=n(t.displacementMap)),void 0!==t.displacementScale&&(i.displacementScale=t.displacementScale),void 0!==t.displacementBias&&(i.displacementBias=t.displacementBias),void 0!==t.roughnessMap&&(i.roughnessMap=n(t.roughnessMap)),void 0!==t.metalnessMap&&(i.metalnessMap=n(t.metalnessMap)),void 0!==t.emissiveMap&&(i.emissiveMap=n(t.emissiveMap)),void 0!==t.emissiveIntensity&&(i.emissiveIntensity=t.emissiveIntensity),void 0!==t.specularMap&&(i.specularMap=n(t.specularMap)),void 0!==t.specularIntensityMap&&(i.specularIntensityMap=n(t.specularIntensityMap)),void 0!==t.specularColorMap&&(i.specularColorMap=n(t.specularColorMap)),void 0!==t.envMap&&(i.envMap=n(t.envMap)),void 0!==t.envMapRotation&&i.envMapRotation.fromArray(t.envMapRotation),void 0!==t.envMapIntensity&&(i.envMapIntensity=t.envMapIntensity),void 0!==t.reflectivity&&(i.reflectivity=t.reflectivity),void 0!==t.refractionRatio&&(i.refractionRatio=t.refractionRatio),void 0!==t.lightMap&&(i.lightMap=n(t.lightMap)),void 0!==t.lightMapIntensity&&(i.lightMapIntensity=t.lightMapIntensity),void 0!==t.aoMap&&(i.aoMap=n(t.aoMap)),void 0!==t.aoMapIntensity&&(i.aoMapIntensity=t.aoMapIntensity),void 0!==t.gradientMap&&(i.gradientMap=n(t.gradientMap)),void 0!==t.clearcoatMap&&(i.clearcoatMap=n(t.clearcoatMap)),void 0!==t.clearcoatRoughnessMap&&(i.clearcoatRoughnessMap=n(t.clearcoatRoughnessMap)),void 0!==t.clearcoatNormalMap&&(i.clearcoatNormalMap=n(t.clearcoatNormalMap)),void 0!==t.clearcoatNormalScale&&(i.clearcoatNormalScale=(new ke).fromArray(t.clearcoatNormalScale)),void 0!==t.iridescenceMap&&(i.iridescenceMap=n(t.iridescenceMap)),void 0!==t.iridescenceThicknessMap&&(i.iridescenceThicknessMap=n(t.iridescenceThicknessMap)),void 0!==t.transmissionMap&&(i.transmissionMap=n(t.transmissionMap)),void 0!==t.thicknessMap&&(i.thicknessMap=n(t.thicknessMap)),void 0!==t.anisotropyMap&&(i.anisotropyMap=n(t.anisotropyMap)),void 0!==t.sheenColorMap&&(i.sheenColorMap=n(t.sheenColorMap)),void 0!==t.sheenRoughnessMap&&(i.sheenRoughnessMap=n(t.sheenRoughnessMap)),i}setTextures(t){return this.textures=t,this}createMaterialFromType(t){return Ql.createMaterialFromType(t)}static createMaterialFromType(t){return new{ShadowMaterial:Xo,SpriteMaterial:Or,RawShaderMaterial:Yo,ShaderMaterial:wr,PointsMaterial:ua,MeshPhysicalMaterial:Jo,MeshStandardMaterial:Zo,MeshPhongMaterial:$o,MeshToonMaterial:Ko,MeshNormalMaterial:Qo,MeshLambertMaterial:tl,MeshDepthMaterial:el,MeshDistanceMaterial:nl,MeshBasicMaterial:Ui,MeshMatcapMaterial:il,LineDashedMaterial:rl,LineBasicMaterial:Ks,Material:Di}[t]}}class th{static decodeText(t){if(console.warn("THREE.LoaderUtils: decodeText() has been deprecated with r165 and will be removed with r175. Use TextDecoder instead."),"undefined"!=typeof TextDecoder)return(new TextDecoder).decode(t);let e="";for(let i=0,r=t.length;i<r;i++)e+=String.fromCharCode(t[i]);try{return decodeURIComponent(escape(e))}catch(n){return e}}static extractUrlBase(t){const e=t.lastIndexOf("/");return-1===e?"./":t.slice(0,e+1)}static resolveURL(t,e){return"string"!=typeof t||""===t?"":(/^https?:\/\//i.test(e)&&/^\//.test(t)&&(e=e.replace(/(^https?:\/\/[^\/]+).*/i,"$1")),/^(https?:)?\/\//i.test(t)||/^data:.*,.*$/i.test(t)||/^blob:.*$/i.test(t)?t:e+t)}}class eh extends ir{constructor(){super(),this.isInstancedBufferGeometry=!0,this.type="InstancedBufferGeometry",this.instanceCount=1/0}copy(t){return super.copy(t),this.instanceCount=t.instanceCount,this}toJSON(){const t=super.toJSON();return t.instanceCount=this.instanceCount,t.isInstancedBufferGeometry=!0,t}}class nh extends Al{constructor(t){super(t)}load(t,e,n,i){const r=this,s=new zl(r.manager);s.setPath(r.path),s.setRequestHeader(r.requestHeader),s.setWithCredentials(r.withCredentials),s.load(t,(function(n){try{e(r.parse(JSON.parse(n)))}catch(s){i?i(s):console.error(s),r.manager.itemError(t)}}),n,i)}parse(t){const e={},n={};function i(t,i){if(void 0!==e[i])return e[i];const r=t.interleavedBuffers[i],s=function(t,e){if(void 0!==n[e])return n[e];const i=t.arrayBuffers,r=i[e],s=new Uint32Array(r).buffer;return n[e]=s,s}(t,r.buffer),a=Be(r.type,s),o=new Nr(a,r.stride);return o.uuid=r.uuid,e[i]=o,o}const r=t.isInstancedBufferGeometry?new eh:new ir,s=t.data.index;if(void 0!==s){const t=Be(s.type,s.array);r.setIndex(new ji(t,1))}const a=t.data.attributes;for(const c in a){const e=a[c];let n;if(e.isInterleavedBufferAttribute){const r=i(t.data,e.data);n=new Ur(r,e.itemSize,e.offset,e.normalized)}else{const t=Be(e.type,e.array);n=new(e.isInstancedBufferAttribute?xs:ji)(t,e.itemSize,e.normalized)}void 0!==e.name&&(n.name=e.name),void 0!==e.usage&&n.setUsage(e.usage),r.setAttribute(c,n)}const o=t.data.morphAttributes;if(o)for(const c in o){const e=o[c],n=[];for(let r=0,s=e.length;r<s;r++){const s=e[r];let a;if(s.isInterleavedBufferAttribute){const e=i(t.data,s.data);a=new Ur(e,s.itemSize,s.offset,s.normalized)}else{const t=Be(s.type,s.array);a=new ji(t,s.itemSize,s.normalized)}void 0!==s.name&&(a.name=s.name),n.push(a)}r.morphAttributes[c]=n}t.data.morphTargetsRelative&&(r.morphTargetsRelative=!0);const l=t.data.groups||t.data.drawcalls||t.data.offsets;if(void 0!==l)for(let c=0,q=l.length;c!==q;++c){const t=l[c];r.addGroup(t.start,t.count,t.materialIndex)}const h=t.data.boundingSphere;if(void 0!==h){const t=new un;void 0!==h.center&&t.fromArray(h.center),r.boundingSphere=new Pn(t,h.radius)}return t.name&&(r.name=t.name),t.userData&&(r.userData=t.userData),r}}const ih={UVMapping:N,CubeReflectionMapping:k,CubeRefractionMapping:D,EquirectangularReflectionMapping:U,EquirectangularRefractionMapping:O,CubeUVReflectionMapping:F},rh={RepeatWrapping:B,ClampToEdgeWrapping:V,MirroredRepeatWrapping:H},sh={NearestFilter:G,NearestMipmapNearestFilter:W,NearestMipmapLinearFilter:j,LinearFilter:X,LinearMipmapNearestFilter:Y,LinearMipmapLinearFilter:Z};let ah;class oh{static getContext(){return void 0===ah&&(ah=new(window.AudioContext||window.webkitAudioContext)),ah}static setContext(t){ah=t}}const lh=new Vn,hh=new Vn,ch=new Vn;class qh extends Er{constructor(t=[]){super(),this.isArrayCamera=!0,this.cameras=t}}class uh{constructor(t=!0){this.autoStart=t,this.startTime=0,this.oldTime=0,this.elapsedTime=0,this.running=!1}start(){this.startTime=dh(),this.oldTime=this.startTime,this.elapsedTime=0,this.running=!0}stop(){this.getElapsedTime(),this.running=!1,this.autoStart=!1}getElapsedTime(){return this.getDelta(),this.elapsedTime}getDelta(){let t=0;if(this.autoStart&&!this.running)return this.start(),0;if(this.running){const e=dh();t=(e-this.oldTime)/1e3,this.oldTime=e,this.elapsedTime+=t}return t}}function dh(){return performance.now()}const mh=new un,ph=new qn,fh=new un,gh=new un;class xh extends pi{constructor(t){super(),this.type="Audio",this.listener=t,this.context=t.context,this.gain=this.context.createGain(),this.gain.connect(t.getInput()),this.autoplay=!1,this.buffer=null,this.detune=0,this.loop=!1,this.loopStart=0,this.loopEnd=0,this.offset=0,this.duration=void 0,this.playbackRate=1,this.isPlaying=!1,this.hasPlaybackControl=!0,this.source=null,this.sourceType="empty",this._startedAt=0,this._progress=0,this._connected=!1,this.filters=[]}getOutput(){return this.gain}setNodeSource(t){return this.hasPlaybackControl=!1,this.sourceType="audioNode",this.source=t,this.connect(),this}setMediaElementSource(t){return this.hasPlaybackControl=!1,this.sourceType="mediaNode",this.source=this.context.createMediaElementSource(t),this.connect(),this}setMediaStreamSource(t){return this.hasPlaybackControl=!1,this.sourceType="mediaStreamNode",this.source=this.context.createMediaStreamSource(t),this.connect(),this}setBuffer(t){return this.buffer=t,this.sourceType="buffer",this.autoplay&&this.play(),this}play(t=0){if(!0===this.isPlaying)return void console.warn("THREE.Audio: Audio is already playing.");if(!1===this.hasPlaybackControl)return void console.warn("THREE.Audio: this Audio has no playback control.");this._startedAt=this.context.currentTime+t;const e=this.context.createBufferSource();return e.buffer=this.buffer,e.loop=this.loop,e.loopStart=this.loopStart,e.loopEnd=this.loopEnd,e.onended=this.onEnded.bind(this),e.start(this._startedAt,this._progress+this.offset,this.duration),this.isPlaying=!0,this.source=e,this.setDetune(this.detune),this.setPlaybackRate(this.playbackRate),this.connect()}pause(){if(!1!==this.hasPlaybackControl)return!0===this.isPlaying&&(this._progress+=Math.max(this.context.currentTime-this._startedAt,0)*this.playbackRate,!0===this.loop&&(this._progress=this._progress%(this.duration||this.buffer.duration)),this.source.stop(),this.source.onended=null,this.isPlaying=!1),this;console.warn("THREE.Audio: this Audio has no playback control.")}stop(t=0){if(!1!==this.hasPlaybackControl)return this._progress=0,null!==this.source&&(this.source.stop(this.context.currentTime+t),this.source.onended=null),this.isPlaying=!1,this;console.warn("THREE.Audio: this Audio has no playback control.")}connect(){if(this.filters.length>0){this.source.connect(this.filters[0]);for(let t=1,e=this.filters.length;t<e;t++)this.filters[t-1].connect(this.filters[t]);this.filters[this.filters.length-1].connect(this.getOutput())}else this.source.connect(this.getOutput());return this._connected=!0,this}disconnect(){if(!1!==this._connected){if(this.filters.length>0){this.source.disconnect(this.filters[0]);for(let t=1,e=this.filters.length;t<e;t++)this.filters[t-1].disconnect(this.filters[t]);this.filters[this.filters.length-1].disconnect(this.getOutput())}else this.source.disconnect(this.getOutput());return this._connected=!1,this}}getFilters(){return this.filters}setFilters(t){return t||(t=[]),!0===this._connected?(this.disconnect(),this.filters=t.slice(),this.connect()):this.filters=t.slice(),this}setDetune(t){return this.detune=t,!0===this.isPlaying&&void 0!==this.source.detune&&this.source.detune.setTargetAtTime(this.detune,this.context.currentTime,.01),this}getDetune(){return this.detune}getFilter(){return this.getFilters()[0]}setFilter(t){return this.setFilters(t?[t]:[])}setPlaybackRate(t){if(!1!==this.hasPlaybackControl)return this.playbackRate=t,!0===this.isPlaying&&this.source.playbackRate.setTargetAtTime(this.playbackRate,this.context.currentTime,.01),this;console.warn("THREE.Audio: this Audio has no playback control.")}getPlaybackRate(){return this.playbackRate}onEnded(){this.isPlaying=!1,this._progress=0}getLoop(){return!1===this.hasPlaybackControl?(console.warn("THREE.Audio: this Audio has no playback control."),!1):this.loop}setLoop(t){if(!1!==this.hasPlaybackControl)return this.loop=t,!0===this.isPlaying&&(this.source.loop=this.loop),this;console.warn("THREE.Audio: this Audio has no playback control.")}setLoopStart(t){return this.loopStart=t,this}setLoopEnd(t){return this.loopEnd=t,this}getVolume(){return this.gain.gain.value}setVolume(t){return this.gain.gain.setTargetAtTime(t,this.context.currentTime,.01),this}copy(t,e){return super.copy(t,e),"buffer"!==t.sourceType?(console.warn("THREE.Audio: Audio source type cannot be copied."),this):(this.autoplay=t.autoplay,this.buffer=t.buffer,this.detune=t.detune,this.loop=t.loop,this.loopStart=t.loopStart,this.loopEnd=t.loopEnd,this.offset=t.offset,this.duration=t.duration,this.playbackRate=t.playbackRate,this.hasPlaybackControl=t.hasPlaybackControl,this.sourceType=t.sourceType,this.filters=t.filters.slice(),this)}clone(t){return new this.constructor(this.listener).copy(this,t)}}const _h=new un,yh=new qn,vh=new un,wh=new un;class bh{constructor(t,e,n){let i,r,s;switch(this.binding=t,this.valueSize=n,e){case"quaternion":i=this._slerp,r=this._slerpAdditive,s=this._setAdditiveIdentityQuaternion,this.buffer=new Float64Array(6*n),this._workIndex=5;break;case"string":case"bool":i=this._select,r=this._select,s=this._setAdditiveIdentityOther,this.buffer=new Array(5*n);break;default:i=this._lerp,r=this._lerpAdditive,s=this._setAdditiveIdentityNumeric,this.buffer=new Float64Array(5*n)}this._mixBufferRegion=i,this._mixBufferRegionAdditive=r,this._setIdentity=s,this._origIndex=3,this._addIndex=4,this.cumulativeWeight=0,this.cumulativeWeightAdditive=0,this.useCount=0,this.referenceCount=0}accumulate(t,e){const n=this.buffer,i=this.valueSize,r=t*i+i;let s=this.cumulativeWeight;if(0===s){for(let t=0;t!==i;++t)n[r+t]=n[t];s=e}else{s+=e;const t=e/s;this._mixBufferRegion(n,r,0,t,i)}this.cumulativeWeight=s}accumulateAdditive(t){const e=this.buffer,n=this.valueSize,i=n*this._addIndex;0===this.cumulativeWeightAdditive&&this._setIdentity(),this._mixBufferRegionAdditive(e,i,0,t,n),this.cumulativeWeightAdditive+=t}apply(t){const e=this.valueSize,n=this.buffer,i=t*e+e,r=this.cumulativeWeight,s=this.cumulativeWeightAdditive,a=this.binding;if(this.cumulativeWeight=0,this.cumulativeWeightAdditive=0,r<1){const t=e*this._origIndex;this._mixBufferRegion(n,i,t,1-r,e)}s>0&&this._mixBufferRegionAdditive(n,i,this._addIndex*e,1,e);for(let o=e,l=e+e;o!==l;++o)if(n[o]!==n[o+e]){a.setValue(n,i);break}}saveOriginalState(){const t=this.binding,e=this.buffer,n=this.valueSize,i=n*this._origIndex;t.getValue(e,i);for(let r=n,s=i;r!==s;++r)e[r]=e[i+r%n];this._setIdentity(),this.cumulativeWeight=0,this.cumulativeWeightAdditive=0}restoreOriginalState(){const t=3*this.valueSize;this.binding.setValue(this.buffer,t)}_setAdditiveIdentityNumeric(){const t=this._addIndex*this.valueSize,e=t+this.valueSize;for(let n=t;n<e;n++)this.buffer[n]=0}_setAdditiveIdentityQuaternion(){this._setAdditiveIdentityNumeric(),this.buffer[this._addIndex*this.valueSize+3]=1}_setAdditiveIdentityOther(){const t=this._origIndex*this.valueSize,e=this._addIndex*this.valueSize;for(let n=0;n<this.valueSize;n++)this.buffer[e+n]=this.buffer[t+n]}_select(t,e,n,i,r){if(i>=.5)for(let s=0;s!==r;++s)t[e+s]=t[n+s]}_slerp(t,e,n,i){qn.slerpFlat(t,e,t,e,t,n,i)}_slerpAdditive(t,e,n,i,r){const s=this._workIndex*r;qn.multiplyQuaternionsFlat(t,s,t,e,t,n),qn.slerpFlat(t,e,t,e,t,s,i)}_lerp(t,e,n,i,r){const s=1-i;for(let a=0;a!==r;++a){const r=e+a;t[r]=t[r]*s+t[n+a]*i}}_lerpAdditive(t,e,n,i,r){for(let s=0;s!==r;++s){const r=e+s;t[r]=t[r]+t[n+s]*i}}}const Mh="\\[\\]\\.:\\/",Sh=new RegExp("["+Mh+"]","g"),Th="[^"+Mh+"]",Eh="[^"+Mh.replace("\\.","")+"]",Ah=new RegExp("^"+/((?:WC+[\/:])*)/.source.replace("WC",Th)+/(WCOD+)?/.source.replace("WCOD",Eh)+/(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace("WC",Th)+/\.(WC+)(?:\[(.+)\])?/.source.replace("WC",Th)+"$"),Ch=["material","materials","bones","map"];class Rh{constructor(t,e,n){this.path=e,this.parsedPath=n||Rh.parseTrackName(e),this.node=Rh.findNode(t,this.parsedPath.nodeName),this.rootNode=t,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}static create(t,e,n){return t&&t.isAnimationObjectGroup?new Rh.Composite(t,e,n):new Rh(t,e,n)}static sanitizeNodeName(t){return t.replace(/\s/g,"_").replace(Sh,"")}static parseTrackName(t){const e=Ah.exec(t);if(null===e)throw new Error("PropertyBinding: Cannot parse trackName: "+t);const n={nodeName:e[2],objectName:e[3],objectIndex:e[4],propertyName:e[5],propertyIndex:e[6]},i=n.nodeName&&n.nodeName.lastIndexOf(".");if(void 0!==i&&-1!==i){const t=n.nodeName.substring(i+1);-1!==Ch.indexOf(t)&&(n.nodeName=n.nodeName.substring(0,i),n.objectName=t)}if(null===n.propertyName||0===n.propertyName.length)throw new Error("PropertyBinding: can not parse propertyName from trackName: "+t);return n}static findNode(t,e){if(void 0===e||""===e||"."===e||-1===e||e===t.name||e===t.uuid)return t;if(t.skeleton){const n=t.skeleton.getBoneByName(e);if(void 0!==n)return n}if(t.children){const n=function(t){for(let i=0;i<t.length;i++){const r=t[i];if(r.name===e||r.uuid===e)return r;const s=n(r.children);if(s)return s}return null},i=n(t.children);if(i)return i}return null}_getValue_unavailable(){}_setValue_unavailable(){}_getValue_direct(t,e){t[e]=this.targetObject[this.propertyName]}_getValue_array(t,e){const n=this.resolvedProperty;for(let i=0,r=n.length;i!==r;++i)t[e++]=n[i]}_getValue_arrayElement(t,e){t[e]=this.resolvedProperty[this.propertyIndex]}_getValue_toArray(t,e){this.resolvedProperty.toArray(t,e)}_setValue_direct(t,e){this.targetObject[this.propertyName]=t[e]}_setValue_direct_setNeedsUpdate(t,e){this.targetObject[this.propertyName]=t[e],this.targetObject.needsUpdate=!0}_setValue_direct_setMatrixWorldNeedsUpdate(t,e){this.targetObject[this.propertyName]=t[e],this.targetObject.matrixWorldNeedsUpdate=!0}_setValue_array(t,e){const n=this.resolvedProperty;for(let i=0,r=n.length;i!==r;++i)n[i]=t[e++]}_setValue_array_setNeedsUpdate(t,e){const n=this.resolvedProperty;for(let i=0,r=n.length;i!==r;++i)n[i]=t[e++];this.targetObject.needsUpdate=!0}_setValue_array_setMatrixWorldNeedsUpdate(t,e){const n=this.resolvedProperty;for(let i=0,r=n.length;i!==r;++i)n[i]=t[e++];this.targetObject.matrixWorldNeedsUpdate=!0}_setValue_arrayElement(t,e){this.resolvedProperty[this.propertyIndex]=t[e]}_setValue_arrayElement_setNeedsUpdate(t,e){this.resolvedProperty[this.propertyIndex]=t[e],this.targetObject.needsUpdate=!0}_setValue_arrayElement_setMatrixWorldNeedsUpdate(t,e){this.resolvedProperty[this.propertyIndex]=t[e],this.targetObject.matrixWorldNeedsUpdate=!0}_setValue_fromArray(t,e){this.resolvedProperty.fromArray(t,e)}_setValue_fromArray_setNeedsUpdate(t,e){this.resolvedProperty.fromArray(t,e),this.targetObject.needsUpdate=!0}_setValue_fromArray_setMatrixWorldNeedsUpdate(t,e){this.resolvedProperty.fromArray(t,e),this.targetObject.matrixWorldNeedsUpdate=!0}_getValue_unbound(t,e){this.bind(),this.getValue(t,e)}_setValue_unbound(t,e){this.bind(),this.setValue(t,e)}bind(){let t=this.node;const e=this.parsedPath,n=e.objectName,i=e.propertyName;let r=e.propertyIndex;if(t||(t=Rh.findNode(this.rootNode,e.nodeName),this.node=t),this.getValue=this._getValue_unavailable,this.setValue=this._setValue_unavailable,!t)return void console.warn("THREE.PropertyBinding: No target node found for track: "+this.path+".");if(n){let i=e.objectIndex;switch(n){case"materials":if(!t.material)return void console.error("THREE.PropertyBinding: Can not bind to material as node does not have a material.",this);if(!t.material.materials)return void console.error("THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.",this);t=t.material.materials;break;case"bones":if(!t.skeleton)return void console.error("THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.",this);t=t.skeleton.bones;for(let e=0;e<t.length;e++)if(t[e].name===i){i=e;break}break;case"map":if("map"in t){t=t.map;break}if(!t.material)return void console.error("THREE.PropertyBinding: Can not bind to material as node does not have a material.",this);if(!t.material.map)return void console.error("THREE.PropertyBinding: Can not bind to material.map as node.material does not have a map.",this);t=t.material.map;break;default:if(void 0===t[n])return void console.error("THREE.PropertyBinding: Can not bind to objectName of node undefined.",this);t=t[n]}if(void 0!==i){if(void 0===t[i])return void console.error("THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.",this,t);t=t[i]}}const s=t[i];if(void 0===s){const n=e.nodeName;return void console.error("THREE.PropertyBinding: Trying to update property for track: "+n+"."+i+" but it wasn't found.",t)}let a=this.Versioning.None;this.targetObject=t,!0===t.isMaterial?a=this.Versioning.NeedsUpdate:!0===t.isObject3D&&(a=this.Versioning.MatrixWorldNeedsUpdate);let o=this.BindingType.Direct;if(void 0!==r){if("morphTargetInfluences"===i){if(!t.geometry)return void console.error("THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.",this);if(!t.geometry.morphAttributes)return void console.error("THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.",this);void 0!==t.morphTargetDictionary[r]&&(r=t.morphTargetDictionary[r])}o=this.BindingType.ArrayElement,this.resolvedProperty=s,this.propertyIndex=r}else void 0!==s.fromArray&&void 0!==s.toArray?(o=this.BindingType.HasFromToArray,this.resolvedProperty=s):Array.isArray(s)?(o=this.BindingType.EntireArray,this.resolvedProperty=s):this.propertyName=i;this.getValue=this.GetterByBindingType[o],this.setValue=this.SetterByBindingTypeAndVersioning[o][a]}unbind(){this.node=null,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}}Rh.Composite=class{constructor(t,e,n){const i=n||Rh.parseTrackName(e);this._targetGroup=t,this._bindings=t.subscribe_(e,i)}getValue(t,e){this.bind();const n=this._targetGroup.nCachedObjects_,i=this._bindings[n];void 0!==i&&i.getValue(t,e)}setValue(t,e){const n=this._bindings;for(let i=this._targetGroup.nCachedObjects_,r=n.length;i!==r;++i)n[i].setValue(t,e)}bind(){const t=this._bindings;for(let e=this._targetGroup.nCachedObjects_,n=t.length;e!==n;++e)t[e].bind()}unbind(){const t=this._bindings;for(let e=this._targetGroup.nCachedObjects_,n=t.length;e!==n;++e)t[e].unbind()}},Rh.prototype.BindingType={Direct:0,EntireArray:1,ArrayElement:2,HasFromToArray:3},Rh.prototype.Versioning={None:0,NeedsUpdate:1,MatrixWorldNeedsUpdate:2},Rh.prototype.GetterByBindingType=[Rh.prototype._getValue_direct,Rh.prototype._getValue_array,Rh.prototype._getValue_arrayElement,Rh.prototype._getValue_toArray],Rh.prototype.SetterByBindingTypeAndVersioning=[[Rh.prototype._setValue_direct,Rh.prototype._setValue_direct_setNeedsUpdate,Rh.prototype._setValue_direct_setMatrixWorldNeedsUpdate],[Rh.prototype._setValue_array,Rh.prototype._setValue_array_setNeedsUpdate,Rh.prototype._setValue_array_setMatrixWorldNeedsUpdate],[Rh.prototype._setValue_arrayElement,Rh.prototype._setValue_arrayElement_setNeedsUpdate,Rh.prototype._setValue_arrayElement_setMatrixWorldNeedsUpdate],[Rh.prototype._setValue_fromArray,Rh.prototype._setValue_fromArray_setNeedsUpdate,Rh.prototype._setValue_fromArray_setMatrixWorldNeedsUpdate]];class zh{constructor(t,e,n=null,i=e.blendMode){this._mixer=t,this._clip=e,this._localRoot=n,this.blendMode=i;const r=e.tracks,s=r.length,a=new Array(s),o={endingStart:ee,endingEnd:ee};for(let l=0;l!==s;++l){const t=r[l].createInterpolant(null);a[l]=t,t.settings=o}this._interpolantSettings=o,this._interpolants=a,this._propertyBindings=new Array(s),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}play(){return this._mixer._activateAction(this),this}stop(){return this._mixer._deactivateAction(this),this.reset()}reset(){return this.paused=!1,this.enabled=!0,this.time=0,this._loopCount=-1,this._startTime=null,this.stopFading().stopWarping()}isRunning(){return this.enabled&&!this.paused&&0!==this.timeScale&&null===this._startTime&&this._mixer._isActiveAction(this)}isScheduled(){return this._mixer._isActiveAction(this)}startAt(t){return this._startTime=t,this}setLoop(t,e){return this.loop=t,this.repetitions=e,this}setEffectiveWeight(t){return this.weight=t,this._effectiveWeight=this.enabled?t:0,this.stopFading()}getEffectiveWeight(){return this._effectiveWeight}fadeIn(t){return this._scheduleFading(t,0,1)}fadeOut(t){return this._scheduleFading(t,1,0)}crossFadeFrom(t,e,n){if(t.fadeOut(e),this.fadeIn(e),n){const n=this._clip.duration,i=t._clip.duration,r=i/n,s=n/i;t.warp(1,r,e),this.warp(s,1,e)}return this}crossFadeTo(t,e,n){return t.crossFadeFrom(this,e,n)}stopFading(){const t=this._weightInterpolant;return null!==t&&(this._weightInterpolant=null,this._mixer._takeBackControlInterpolant(t)),this}setEffectiveTimeScale(t){return this.timeScale=t,this._effectiveTimeScale=this.paused?0:t,this.stopWarping()}getEffectiveTimeScale(){return this._effectiveTimeScale}setDuration(t){return this.timeScale=this._clip.duration/t,this.stopWarping()}syncWith(t){return this.time=t.time,this.timeScale=t.timeScale,this.stopWarping()}halt(t){return this.warp(this._effectiveTimeScale,0,t)}warp(t,e,n){const i=this._mixer,r=i.time,s=this.timeScale;let a=this._timeScaleInterpolant;null===a&&(a=i._lendControlInterpolant(),this._timeScaleInterpolant=a);const o=a.parameterPositions,l=a.sampleValues;return o[0]=r,o[1]=r+n,l[0]=t/s,l[1]=e/s,this}stopWarping(){const t=this._timeScaleInterpolant;return null!==t&&(this._timeScaleInterpolant=null,this._mixer._takeBackControlInterpolant(t)),this}getMixer(){return this._mixer}getClip(){return this._clip}getRoot(){return this._localRoot||this._mixer._root}_update(t,e,n,i){if(!this.enabled)return void this._updateWeight(t);const r=this._startTime;if(null!==r){const i=(t-r)*n;i<0||0===n?e=0:(this._startTime=null,e=n*i)}e*=this._updateTimeScale(t);const s=this._updateTime(e),a=this._updateWeight(t);if(a>0){const t=this._interpolants,e=this._propertyBindings;if(this.blendMode===se)for(let n=0,i=t.length;n!==i;++n)t[n].evaluate(s),e[n].accumulateAdditive(a);else for(let n=0,r=t.length;n!==r;++n)t[n].evaluate(s),e[n].accumulate(i,a)}}_updateWeight(t){let e=0;if(this.enabled){e=this.weight;const n=this._weightInterpolant;if(null!==n){const i=n.evaluate(t)[0];e*=i,t>n.parameterPositions[1]&&(this.stopFading(),0===i&&(this.enabled=!1))}}return this._effectiveWeight=e,e}_updateTimeScale(t){let e=0;if(!this.paused){e=this.timeScale;const n=this._timeScaleInterpolant;if(null!==n){e*=n.evaluate(t)[0],t>n.parameterPositions[1]&&(this.stopWarping(),0===e?this.paused=!0:this.timeScale=e)}}return this._effectiveTimeScale=e,e}_updateTime(t){const e=this._clip.duration,n=this.loop;let i=this.time+t,r=this._loopCount;const s=2202===n;if(0===t)return-1===r||!s||1&~r?i:e-i;if(2200===n){-1===r&&(this._loopCount=0,this._setEndings(!0,!0,!1));t:{if(i>=e)i=e;else{if(!(i<0)){this.time=i;break t}i=0}this.clampWhenFinished?this.paused=!0:this.enabled=!1,this.time=i,this._mixer.dispatchEvent({type:"finished",action:this,direction:t<0?-1:1})}}else{if(-1===r&&(t>=0?(r=0,this._setEndings(!0,0===this.repetitions,s)):this._setEndings(0===this.repetitions,!0,s)),i>=e||i<0){const n=Math.floor(i/e);i-=e*n,r+=Math.abs(n);const a=this.repetitions-r;if(a<=0)this.clampWhenFinished?this.paused=!0:this.enabled=!1,i=t>0?e:0,this.time=i,this._mixer.dispatchEvent({type:"finished",action:this,direction:t>0?1:-1});else{if(1===a){const e=t<0;this._setEndings(e,!e,s)}else this._setEndings(!1,!1,s);this._loopCount=r,this.time=i,this._mixer.dispatchEvent({type:"loop",action:this,loopDelta:n})}}else this.time=i;if(s&&!(1&~r))return e-i}return i}_setEndings(t,e,n){const i=this._interpolantSettings;n?(i.endingStart=ne,i.endingEnd=ne):(i.endingStart=t?this.zeroSlopeAtStart?ne:ee:ie,i.endingEnd=e?this.zeroSlopeAtEnd?ne:ee:ie)}_scheduleFading(t,e,n){const i=this._mixer,r=i.time;let s=this._weightInterpolant;null===s&&(s=i._lendControlInterpolant(),this._weightInterpolant=s);const a=s.parameterPositions,o=s.sampleValues;return a[0]=r,o[0]=e,a[1]=r+t,o[1]=n,this}}const Ih=new Float32Array(1);class Ph{constructor(t){this.value=t}clone(){return new Ph(void 0===this.value.clone?this.value:this.value.clone())}}let Lh=0;const Nh=new Vn;function kh(t,e){return t.distance-e.distance}function Dh(t,e,n,i){let r=!0;if(t.layers.test(e.layers)){!1===t.raycast(e,n)&&(r=!1)}if(!0===r&&!0===i){const i=t.children;for(let t=0,r=i.length;t<r;t++)Dh(i[t],e,n,!0)}}class Uh{constructor(t=1,e=0,n=0){return this.radius=t,this.phi=e,this.theta=n,this}set(t,e,n){return this.radius=t,this.phi=e,this.theta=n,this}copy(t){return this.radius=t.radius,this.phi=t.phi,this.theta=t.theta,this}makeSafe(){const t=1e-6;return this.phi=Re(this.phi,t,Math.PI-t),this}setFromVector3(t){return this.setFromCartesianCoords(t.x,t.y,t.z)}setFromCartesianCoords(t,e,n){return this.radius=Math.sqrt(t*t+e*e+n*n),0===this.radius?(this.theta=0,this.phi=0):(this.theta=Math.atan2(t,n),this.phi=Math.acos(Re(e/this.radius,-1,1))),this}clone(){return(new this.constructor).copy(this)}}class Oh{constructor(t,e,n,i){Oh.prototype.isMatrix2=!0,this.elements=[1,0,0,1],void 0!==t&&this.set(t,e,n,i)}identity(){return this.set(1,0,0,1),this}fromArray(t,e=0){for(let n=0;n<4;n++)this.elements[n]=t[n+e];return this}set(t,e,n,i){const r=this.elements;return r[0]=t,r[2]=e,r[1]=n,r[3]=i,this}}const Fh=new ke;class Bh{constructor(t=new ke(1/0,1/0),e=new ke(-1/0,-1/0)){this.isBox2=!0,this.min=t,this.max=e}set(t,e){return this.min.copy(t),this.max.copy(e),this}setFromPoints(t){this.makeEmpty();for(let e=0,n=t.length;e<n;e++)this.expandByPoint(t[e]);return this}setFromCenterAndSize(t,e){const n=Fh.copy(e).multiplyScalar(.5);return this.min.copy(t).sub(n),this.max.copy(t).add(n),this}clone(){return(new this.constructor).copy(this)}copy(t){return this.min.copy(t.min),this.max.copy(t.max),this}makeEmpty(){return this.min.x=this.min.y=1/0,this.max.x=this.max.y=-1/0,this}isEmpty(){return this.max.x<this.min.x||this.max.y<this.min.y}getCenter(t){return this.isEmpty()?t.set(0,0):t.addVectors(this.min,this.max).multiplyScalar(.5)}getSize(t){return this.isEmpty()?t.set(0,0):t.subVectors(this.max,this.min)}expandByPoint(t){return this.min.min(t),this.max.max(t),this}expandByVector(t){return this.min.sub(t),this.max.add(t),this}expandByScalar(t){return this.min.addScalar(-t),this.max.addScalar(t),this}containsPoint(t){return t.x>=this.min.x&&t.x<=this.max.x&&t.y>=this.min.y&&t.y<=this.max.y}containsBox(t){return this.min.x<=t.min.x&&t.max.x<=this.max.x&&this.min.y<=t.min.y&&t.max.y<=this.max.y}getParameter(t,e){return e.set((t.x-this.min.x)/(this.max.x-this.min.x),(t.y-this.min.y)/(this.max.y-this.min.y))}intersectsBox(t){return t.max.x>=this.min.x&&t.min.x<=this.max.x&&t.max.y>=this.min.y&&t.min.y<=this.max.y}clampPoint(t,e){return e.copy(t).clamp(this.min,this.max)}distanceToPoint(t){return this.clampPoint(t,Fh).distanceTo(t)}intersect(t){return this.min.max(t.min),this.max.min(t.max),this.isEmpty()&&this.makeEmpty(),this}union(t){return this.min.min(t.min),this.max.max(t.max),this}translate(t){return this.min.add(t),this.max.add(t),this}equals(t){return t.min.equals(this.min)&&t.max.equals(this.max)}}const Vh=new un,Hh=new un;const Gh=new un;const Wh=new un,jh=new Vn,Xh=new Vn;function Yh(t){const e=[];!0===t.isBone&&e.push(t);for(let n=0;n<t.children.length;n++)e.push.apply(e,Yh(t.children[n]));return e}const Zh=new un,Jh=new Li,$h=new Li;class Kh extends ca{constructor(t=10,e=10,n=4473924,i=8947848){n=new Li(n),i=new Li(i);const r=e/2,s=t/e,a=t/2,o=[],l=[];for(let c=0,q=0,u=-a;c<=e;c++,u+=s){o.push(-a,0,u,a,0,u),o.push(u,0,-a,u,0,a);const t=c===r?n:i;t.toArray(l,q),q+=3,t.toArray(l,q),q+=3,t.toArray(l,q),q+=3,t.toArray(l,q),q+=3}const h=new ir;h.setAttribute("position",new Zi(o,3)),h.setAttribute("color",new Zi(l,3));super(h,new Ks({vertexColors:!0,toneMapped:!1})),this.type="GridHelper"}dispose(){this.geometry.dispose(),this.material.dispose()}}const Qh=new un,tc=new un,ec=new un;const nc=new un,ic=new br;class rc extends ca{constructor(t){const e=new ir,n=new Ks({color:16777215,vertexColors:!0,toneMapped:!1}),i=[],r=[],s={};function a(t,e){o(t),o(e)}function o(t){i.push(0,0,0),r.push(0,0,0),void 0===s[t]&&(s[t]=[]),s[t].push(i.length/3-1)}a("n1","n2"),a("n2","n4"),a("n4","n3"),a("n3","n1"),a("f1","f2"),a("f2","f4"),a("f4","f3"),a("f3","f1"),a("n1","f1"),a("n2","f2"),a("n3","f3"),a("n4","f4"),a("p","n1"),a("p","n2"),a("p","n3"),a("p","n4"),a("u1","u2"),a("u2","u3"),a("u3","u1"),a("c","t"),a("p","c"),a("cn1","cn2"),a("cn3","cn4"),a("cf1","cf2"),a("cf3","cf4"),e.setAttribute("position",new Zi(i,3)),e.setAttribute("color",new Zi(r,3)),super(e,n),this.type="CameraHelper",this.camera=t,this.camera.updateProjectionMatrix&&this.camera.updateProjectionMatrix(),this.matrix=t.matrixWorld,this.matrixAutoUpdate=!1,this.pointMap=s,this.update();const l=new Li(16755200),h=new Li(16711680),c=new Li(43775),q=new Li(16777215),u=new Li(3355443);this.setColors(l,h,c,q,u)}setColors(t,e,n,i,r){const s=this.geometry.getAttribute("color");s.setXYZ(0,t.r,t.g,t.b),s.setXYZ(1,t.r,t.g,t.b),s.setXYZ(2,t.r,t.g,t.b),s.setXYZ(3,t.r,t.g,t.b),s.setXYZ(4,t.r,t.g,t.b),s.setXYZ(5,t.r,t.g,t.b),s.setXYZ(6,t.r,t.g,t.b),s.setXYZ(7,t.r,t.g,t.b),s.setXYZ(8,t.r,t.g,t.b),s.setXYZ(9,t.r,t.g,t.b),s.setXYZ(10,t.r,t.g,t.b),s.setXYZ(11,t.r,t.g,t.b),s.setXYZ(12,t.r,t.g,t.b),s.setXYZ(13,t.r,t.g,t.b),s.setXYZ(14,t.r,t.g,t.b),s.setXYZ(15,t.r,t.g,t.b),s.setXYZ(16,t.r,t.g,t.b),s.setXYZ(17,t.r,t.g,t.b),s.setXYZ(18,t.r,t.g,t.b),s.setXYZ(19,t.r,t.g,t.b),s.setXYZ(20,t.r,t.g,t.b),s.setXYZ(21,t.r,t.g,t.b),s.setXYZ(22,t.r,t.g,t.b),s.setXYZ(23,t.r,t.g,t.b),s.setXYZ(24,e.r,e.g,e.b),s.setXYZ(25,e.r,e.g,e.b),s.setXYZ(26,e.r,e.g,e.b),s.setXYZ(27,e.r,e.g,e.b),s.setXYZ(28,e.r,e.g,e.b),s.setXYZ(29,e.r,e.g,e.b),s.setXYZ(30,e.r,e.g,e.b),s.setXYZ(31,e.r,e.g,e.b),s.setXYZ(32,n.r,n.g,n.b),s.setXYZ(33,n.r,n.g,n.b),s.setXYZ(34,n.r,n.g,n.b),s.setXYZ(35,n.r,n.g,n.b),s.setXYZ(36,n.r,n.g,n.b),s.setXYZ(37,n.r,n.g,n.b),s.setXYZ(38,i.r,i.g,i.b),s.setXYZ(39,i.r,i.g,i.b),s.setXYZ(40,r.r,r.g,r.b),s.setXYZ(41,r.r,r.g,r.b),s.setXYZ(42,r.r,r.g,r.b),s.setXYZ(43,r.r,r.g,r.b),s.setXYZ(44,r.r,r.g,r.b),s.setXYZ(45,r.r,r.g,r.b),s.setXYZ(46,r.r,r.g,r.b),s.setXYZ(47,r.r,r.g,r.b),s.setXYZ(48,r.r,r.g,r.b),s.setXYZ(49,r.r,r.g,r.b),s.needsUpdate=!0}update(){const t=this.geometry,e=this.pointMap;ic.projectionMatrixInverse.copy(this.camera.projectionMatrixInverse);const n=this.camera.coordinateSystem===we?-1:0;sc("c",e,t,ic,0,0,n),sc("t",e,t,ic,0,0,1),sc("n1",e,t,ic,-1,-1,n),sc("n2",e,t,ic,1,-1,n),sc("n3",e,t,ic,-1,1,n),sc("n4",e,t,ic,1,1,n),sc("f1",e,t,ic,-1,-1,1),sc("f2",e,t,ic,1,-1,1),sc("f3",e,t,ic,-1,1,1),sc("f4",e,t,ic,1,1,1),sc("u1",e,t,ic,.7,1.1,n),sc("u2",e,t,ic,-.7,1.1,n),sc("u3",e,t,ic,0,2,n),sc("cf1",e,t,ic,-1,0,1),sc("cf2",e,t,ic,1,0,1),sc("cf3",e,t,ic,0,-1,1),sc("cf4",e,t,ic,0,1,1),sc("cn1",e,t,ic,-1,0,n),sc("cn2",e,t,ic,1,0,n),sc("cn3",e,t,ic,0,-1,n),sc("cn4",e,t,ic,0,1,n),t.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}}function sc(t,e,n,i,r,s,a){nc.set(r,s,a).unproject(i);const o=e[t];if(void 0!==o){const t=n.getAttribute("position");for(let e=0,n=o.length;e<n;e++)t.setXYZ(o[e],nc.x,nc.y,nc.z)}}const ac=new pn;const oc=new un;let lc,hc;class cc extends ca{constructor(t=1){const e=[0,0,0,t,0,0,0,0,0,0,t,0,0,0,0,0,0,t],n=new ir;n.setAttribute("position",new Zi(e,3)),n.setAttribute("color",new Zi([1,0,0,1,.6,0,0,1,0,.6,1,0,0,0,1,0,.6,1],3));super(n,new Ks({vertexColors:!0,toneMapped:!1})),this.type="AxesHelper"}setColors(t,e,n){const i=new Li,r=this.geometry.attributes.color.array;return i.set(t),i.toArray(r,0),i.toArray(r,3),i.set(e),i.toArray(r,6),i.toArray(r,9),i.set(n),i.toArray(r,12),i.toArray(r,15),this.geometry.attributes.color.needsUpdate=!0,this}dispose(){this.geometry.dispose(),this.material.dispose()}}class qc{constructor(){this.type="ShapePath",this.color=new Li,this.subPaths=[],this.currentPath=null}moveTo(t,e){return this.currentPath=new Ha,this.subPaths.push(this.currentPath),this.currentPath.moveTo(t,e),this}lineTo(t,e){return this.currentPath.lineTo(t,e),this}quadraticCurveTo(t,e,n,i){return this.currentPath.quadraticCurveTo(t,e,n,i),this}bezierCurveTo(t,e,n,i,r,s){return this.currentPath.bezierCurveTo(t,e,n,i,r,s),this}splineThru(t){return this.currentPath.splineThru(t),this}toShapes(t){function e(t,e){const n=e.length;let i=!1;for(let r=n-1,s=0;s<n;r=s++){let n=e[r],a=e[s],o=a.x-n.x,l=a.y-n.y;if(Math.abs(l)>Number.EPSILON){if(l<0&&(n=e[s],o=-o,a=e[r],l=-l),t.y<n.y||t.y>a.y)continue;if(t.y===n.y){if(t.x===n.x)return!0}else{const e=l*(t.x-n.x)-o*(t.y-n.y);if(0===e)return!0;if(e<0)continue;i=!i}}else{if(t.y!==n.y)continue;if(a.x<=t.x&&t.x<=n.x||n.x<=t.x&&t.x<=a.x)return!0}}return i}const n=Co.isClockWise,i=this.subPaths;if(0===i.length)return[];let r,s,a;const o=[];if(1===i.length)return s=i[0],a=new no,a.curves=s.curves,o.push(a),o;let l=!n(i[0].getPoints());l=t?!l:l;const h=[],c=[];let q,u,d=[],m=0;c[m]=void 0,d[m]=[];for(let p=0,f=i.length;p<f;p++)s=i[p],q=s.getPoints(),r=n(q),r=t?!r:r,r?(!l&&c[m]&&m++,c[m]={s:new no,p:q},c[m].s.curves=s.curves,l&&m++,d[m]=[]):d[m].push({h:s,p:q[0]});if(!c[0])return function(t){const e=[];for(let n=0,i=t.length;n<i;n++){const i=t[n],r=new no;r.curves=i.curves,e.push(r)}return e}(i);if(c.length>1){let t=!1,n=0;for(let e=0,i=c.length;e<i;e++)h[e]=[];for(let i=0,r=c.length;i<r;i++){const r=d[i];for(let s=0;s<r.length;s++){const a=r[s];let o=!0;for(let r=0;r<c.length;r++)e(a.p,c[r].p)&&(i!==r&&n++,o?(o=!1,h[r].push(a)):t=!0);o&&h[i].push(a)}}n>0&&!1===t&&(d=h)}for(let p=0,f=c.length;p<f;p++){a=c[p].s,o.push(a),u=d[p];for(let t=0,e=u.length;t<e;t++)a.holes.push(u[t].h)}return o}}class uc extends Me{constructor(t,e=null){super(),this.object=t,this.domElement=e,this.enabled=!0,this.state=-1,this.keys={},this.mouseButtons={LEFT:null,MIDDLE:null,RIGHT:null},this.touches={ONE:null,TWO:null}}connect(){}disconnect(){}dispose(){}update(){}}function dc(t,e,n,i){const r=function(t){switch(t){case J:case $:return{byteLength:1,components:1};case Q:case K:case it:return{byteLength:2,components:1};case rt:case st:return{byteLength:2,components:4};case et:case tt:case nt:return{byteLength:4,components:1};case ot:return{byteLength:4,components:3}}throw new Error(`Unknown texture type ${t}.`)}(i);switch(n){case lt:case qt:return t*e;case ut:return t*e*2;case pt:case ft:return t*e/r.components*r.byteLength;case gt:case xt:return t*e*2/r.components*r.byteLength;case ht:return t*e*3/r.components*r.byteLength;case ct:case _t:return t*e*4/r.components*r.byteLength;case yt:case vt:return Math.floor((t+3)/4)*Math.floor((e+3)/4)*8;case wt:case bt:return Math.floor((t+3)/4)*Math.floor((e+3)/4)*16;case St:case Et:return Math.max(t,16)*Math.max(e,8)/4;case Mt:case Tt:return Math.max(t,8)*Math.max(e,8)/2;case At:case Ct:return Math.floor((t+3)/4)*Math.floor((e+3)/4)*8;case Rt:case zt:return Math.floor((t+3)/4)*Math.floor((e+3)/4)*16;case It:return Math.floor((t+4)/5)*Math.floor((e+3)/4)*16;case Pt:return Math.floor((t+4)/5)*Math.floor((e+4)/5)*16;case Lt:return Math.floor((t+5)/6)*Math.floor((e+4)/5)*16;case Nt:return Math.floor((t+5)/6)*Math.floor((e+5)/6)*16;case kt:return Math.floor((t+7)/8)*Math.floor((e+4)/5)*16;case Dt:return Math.floor((t+7)/8)*Math.floor((e+5)/6)*16;case Ut:return Math.floor((t+7)/8)*Math.floor((e+7)/8)*16;case Ot:return Math.floor((t+9)/10)*Math.floor((e+4)/5)*16;case Ft:return Math.floor((t+9)/10)*Math.floor((e+5)/6)*16;case Bt:return Math.floor((t+9)/10)*Math.floor((e+7)/8)*16;case Vt:return Math.floor((t+9)/10)*Math.floor((e+9)/10)*16;case Ht:return Math.floor((t+11)/12)*Math.floor((e+9)/10)*16;case Gt:return Math.floor((t+11)/12)*Math.floor((e+11)/12)*16;case Wt:case jt:case Xt:return Math.ceil(t/4)*Math.ceil(e/4)*16;case Yt:case Zt:return Math.ceil(t/4)*Math.ceil(e/4)*8;case Jt:case $t:return Math.ceil(t/4)*Math.ceil(e/4)*16}throw new Error(`Unable to determine texture byte length for ${n} format.`)}const mc={contain:function(t,e){const n=t.image&&t.image.width?t.image.width/t.image.height:1;return n>e?(t.repeat.x=1,t.repeat.y=n/e,t.offset.x=0,t.offset.y=(1-t.repeat.y)/2):(t.repeat.x=e/n,t.repeat.y=1,t.offset.x=(1-t.repeat.x)/2,t.offset.y=0),t},cover:function(t,e){const n=t.image&&t.image.width?t.image.width/t.image.height:1;return n>e?(t.repeat.x=e/n,t.repeat.y=1,t.offset.x=(1-t.repeat.x)/2,t.offset.y=0):(t.repeat.x=1,t.repeat.y=n/e,t.offset.x=0,t.offset.y=(1-t.repeat.y)/2),t},fill:function(t){return t.repeat.x=1,t.repeat.y=1,t.offset.x=0,t.offset.y=0,t},getByteLength:dc};
7
- /**
8
- * @license
9
- * Copyright 2010-2024 Three.js Authors
10
- * SPDX-License-Identifier: MIT
11
- */
12
- function pc(){let t=null,e=!1,n=null,i=null;function r(e,s){n(e,s),i=t.requestAnimationFrame(r)}return{start:function(){!0!==e&&null!==n&&(i=t.requestAnimationFrame(r),e=!0)},stop:function(){t.cancelAnimationFrame(i),e=!1},setAnimationLoop:function(t){n=t},setContext:function(e){t=e}}}function fc(t){const e=new WeakMap;return{get:function(t){return t.isInterleavedBufferAttribute&&(t=t.data),e.get(t)},remove:function(n){n.isInterleavedBufferAttribute&&(n=n.data);const i=e.get(n);i&&(t.deleteBuffer(i.buffer),e.delete(n))},update:function(n,i){if(n.isInterleavedBufferAttribute&&(n=n.data),n.isGLBufferAttribute){const t=e.get(n);return void((!t||t.version<n.version)&&e.set(n,{buffer:n.buffer,type:n.type,bytesPerElement:n.elementSize,version:n.version}))}const r=e.get(n);if(void 0===r)e.set(n,function(e,n){const i=e.array,r=e.usage,s=i.byteLength,a=t.createBuffer();let o;if(t.bindBuffer(n,a),t.bufferData(n,i,r),e.onUploadCallback(),i instanceof Float32Array)o=t.FLOAT;else if(i instanceof Uint16Array)o=e.isFloat16BufferAttribute?t.HALF_FLOAT:t.UNSIGNED_SHORT;else if(i instanceof Int16Array)o=t.SHORT;else if(i instanceof Uint32Array)o=t.UNSIGNED_INT;else if(i instanceof Int32Array)o=t.INT;else if(i instanceof Int8Array)o=t.BYTE;else if(i instanceof Uint8Array)o=t.UNSIGNED_BYTE;else{if(!(i instanceof Uint8ClampedArray))throw new Error("THREE.WebGLAttributes: Unsupported buffer data format: "+i);o=t.UNSIGNED_BYTE}return{buffer:a,type:o,bytesPerElement:i.BYTES_PER_ELEMENT,version:e.version,size:s}}(n,i));else if(r.version<n.version){if(r.size!==n.array.byteLength)throw new Error("THREE.WebGLAttributes: The size of the buffer attribute's array buffer does not match the original size. Resizing buffer attributes is not supported.");!function(e,n,i){const r=n.array,s=n.updateRanges;if(t.bindBuffer(i,e),0===s.length)t.bufferSubData(i,0,r);else{s.sort(((t,e)=>t.start-e.start));let e=0;for(let t=1;t<s.length;t++){const n=s[e],i=s[t];i.start<=n.start+n.count+1?n.count=Math.max(n.count,i.start+i.count-n.start):(++e,s[e]=i)}s.length=e+1;for(let n=0,a=s.length;n<a;n++){const e=s[n];t.bufferSubData(i,e.start*r.BYTES_PER_ELEMENT,r,e.start,e.count)}n.clearUpdateRanges()}n.onUploadCallback()}(r.buffer,n,i),r.version=n.version}}}}"undefined"!=typeof __THREE_DEVTOOLS__&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("register",{detail:{revision:e}})),"undefined"!=typeof window&&(window.__THREE__?console.warn("WARNING: Multiple instances of Three.js being imported."):window.__THREE__=e);const gc={alphahash_fragment:"#ifdef USE_ALPHAHASH\n\tif ( diffuseColor.a < getAlphaHashThreshold( vPosition ) ) discard;\n#endif",alphahash_pars_fragment:"#ifdef USE_ALPHAHASH\n\tconst float ALPHA_HASH_SCALE = 0.05;\n\tfloat hash2D( vec2 value ) {\n\t\treturn fract( 1.0e4 * sin( 17.0 * value.x + 0.1 * value.y ) * ( 0.1 + abs( sin( 13.0 * value.y + value.x ) ) ) );\n\t}\n\tfloat hash3D( vec3 value ) {\n\t\treturn hash2D( vec2( hash2D( value.xy ), value.z ) );\n\t}\n\tfloat getAlphaHashThreshold( vec3 position ) {\n\t\tfloat maxDeriv = max(\n\t\t\tlength( dFdx( position.xyz ) ),\n\t\t\tlength( dFdy( position.xyz ) )\n\t\t);\n\t\tfloat pixScale = 1.0 / ( ALPHA_HASH_SCALE * maxDeriv );\n\t\tvec2 pixScales = vec2(\n\t\t\texp2( floor( log2( pixScale ) ) ),\n\t\t\texp2( ceil( log2( pixScale ) ) )\n\t\t);\n\t\tvec2 alpha = vec2(\n\t\t\thash3D( floor( pixScales.x * position.xyz ) ),\n\t\t\thash3D( floor( pixScales.y * position.xyz ) )\n\t\t);\n\t\tfloat lerpFactor = fract( log2( pixScale ) );\n\t\tfloat x = ( 1.0 - lerpFactor ) * alpha.x + lerpFactor * alpha.y;\n\t\tfloat a = min( lerpFactor, 1.0 - lerpFactor );\n\t\tvec3 cases = vec3(\n\t\t\tx * x / ( 2.0 * a * ( 1.0 - a ) ),\n\t\t\t( x - 0.5 * a ) / ( 1.0 - a ),\n\t\t\t1.0 - ( ( 1.0 - x ) * ( 1.0 - x ) / ( 2.0 * a * ( 1.0 - a ) ) )\n\t\t);\n\t\tfloat threshold = ( x < ( 1.0 - a ) )\n\t\t\t? ( ( x < a ) ? cases.x : cases.y )\n\t\t\t: cases.z;\n\t\treturn clamp( threshold , 1.0e-6, 1.0 );\n\t}\n#endif",alphamap_fragment:"#ifdef USE_ALPHAMAP\n\tdiffuseColor.a *= texture2D( alphaMap, vAlphaMapUv ).g;\n#endif",alphamap_pars_fragment:"#ifdef USE_ALPHAMAP\n\tuniform sampler2D alphaMap;\n#endif",alphatest_fragment:"#ifdef USE_ALPHATEST\n\t#ifdef ALPHA_TO_COVERAGE\n\tdiffuseColor.a = smoothstep( alphaTest, alphaTest + fwidth( diffuseColor.a ), diffuseColor.a );\n\tif ( diffuseColor.a == 0.0 ) discard;\n\t#else\n\tif ( diffuseColor.a < alphaTest ) discard;\n\t#endif\n#endif",alphatest_pars_fragment:"#ifdef USE_ALPHATEST\n\tuniform float alphaTest;\n#endif",aomap_fragment:"#ifdef USE_AOMAP\n\tfloat ambientOcclusion = ( texture2D( aoMap, vAoMapUv ).r - 1.0 ) * aoMapIntensity + 1.0;\n\treflectedLight.indirectDiffuse *= ambientOcclusion;\n\t#if defined( USE_CLEARCOAT ) \n\t\tclearcoatSpecularIndirect *= ambientOcclusion;\n\t#endif\n\t#if defined( USE_SHEEN ) \n\t\tsheenSpecularIndirect *= ambientOcclusion;\n\t#endif\n\t#if defined( USE_ENVMAP ) && defined( STANDARD )\n\t\tfloat dotNV = saturate( dot( geometryNormal, geometryViewDir ) );\n\t\treflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.roughness );\n\t#endif\n#endif",aomap_pars_fragment:"#ifdef USE_AOMAP\n\tuniform sampler2D aoMap;\n\tuniform float aoMapIntensity;\n#endif",batching_pars_vertex:"#ifdef USE_BATCHING\n\t#if ! defined( GL_ANGLE_multi_draw )\n\t#define gl_DrawID _gl_DrawID\n\tuniform int _gl_DrawID;\n\t#endif\n\tuniform highp sampler2D batchingTexture;\n\tuniform highp usampler2D batchingIdTexture;\n\tmat4 getBatchingMatrix( const in float i ) {\n\t\tint size = textureSize( batchingTexture, 0 ).x;\n\t\tint j = int( i ) * 4;\n\t\tint x = j % size;\n\t\tint y = j / size;\n\t\tvec4 v1 = texelFetch( batchingTexture, ivec2( x, y ), 0 );\n\t\tvec4 v2 = texelFetch( batchingTexture, ivec2( x + 1, y ), 0 );\n\t\tvec4 v3 = texelFetch( batchingTexture, ivec2( x + 2, y ), 0 );\n\t\tvec4 v4 = texelFetch( batchingTexture, ivec2( x + 3, y ), 0 );\n\t\treturn mat4( v1, v2, v3, v4 );\n\t}\n\tfloat getIndirectIndex( const in int i ) {\n\t\tint size = textureSize( batchingIdTexture, 0 ).x;\n\t\tint x = i % size;\n\t\tint y = i / size;\n\t\treturn float( texelFetch( batchingIdTexture, ivec2( x, y ), 0 ).r );\n\t}\n#endif\n#ifdef USE_BATCHING_COLOR\n\tuniform sampler2D batchingColorTexture;\n\tvec3 getBatchingColor( const in float i ) {\n\t\tint size = textureSize( batchingColorTexture, 0 ).x;\n\t\tint j = int( i );\n\t\tint x = j % size;\n\t\tint y = j / size;\n\t\treturn texelFetch( batchingColorTexture, ivec2( x, y ), 0 ).rgb;\n\t}\n#endif",batching_vertex:"#ifdef USE_BATCHING\n\tmat4 batchingMatrix = getBatchingMatrix( getIndirectIndex( gl_DrawID ) );\n#endif",begin_vertex:"vec3 transformed = vec3( position );\n#ifdef USE_ALPHAHASH\n\tvPosition = vec3( position );\n#endif",beginnormal_vertex:"vec3 objectNormal = vec3( normal );\n#ifdef USE_TANGENT\n\tvec3 objectTangent = vec3( tangent.xyz );\n#endif",bsdfs:"float 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_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float shininess ) {\n\tvec3 halfDir = normalize( lightDir + viewDir );\n\tfloat dotNH = saturate( dot( normal, halfDir ) );\n\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\n\tvec3 F = F_Schlick( specularColor, 1.0, dotVH );\n\tfloat G = G_BlinnPhong_Implicit( );\n\tfloat D = D_BlinnPhong( shininess, dotNH );\n\treturn F * ( G * D );\n} // validated",iridescence_fragment:"#ifdef USE_IRIDESCENCE\n\tconst mat3 XYZ_TO_REC709 = mat3(\n\t\t 3.2404542, -0.9692660, 0.0556434,\n\t\t-1.5371385, 1.8760108, -0.2040259,\n\t\t-0.4985314, 0.0415560, 1.0572252\n\t);\n\tvec3 Fresnel0ToIor( vec3 fresnel0 ) {\n\t\tvec3 sqrtF0 = sqrt( fresnel0 );\n\t\treturn ( vec3( 1.0 ) + sqrtF0 ) / ( vec3( 1.0 ) - sqrtF0 );\n\t}\n\tvec3 IorToFresnel0( vec3 transmittedIor, float incidentIor ) {\n\t\treturn pow2( ( transmittedIor - vec3( incidentIor ) ) / ( transmittedIor + vec3( incidentIor ) ) );\n\t}\n\tfloat IorToFresnel0( float transmittedIor, float incidentIor ) {\n\t\treturn pow2( ( transmittedIor - incidentIor ) / ( transmittedIor + incidentIor ));\n\t}\n\tvec3 evalSensitivity( float OPD, vec3 shift ) {\n\t\tfloat phase = 2.0 * PI * OPD * 1.0e-9;\n\t\tvec3 val = vec3( 5.4856e-13, 4.4201e-13, 5.2481e-13 );\n\t\tvec3 pos = vec3( 1.6810e+06, 1.7953e+06, 2.2084e+06 );\n\t\tvec3 var = vec3( 4.3278e+09, 9.3046e+09, 6.6121e+09 );\n\t\tvec3 xyz = val * sqrt( 2.0 * PI * var ) * cos( pos * phase + shift ) * exp( - pow2( phase ) * var );\n\t\txyz.x += 9.7470e-14 * sqrt( 2.0 * PI * 4.5282e+09 ) * cos( 2.2399e+06 * phase + shift[ 0 ] ) * exp( - 4.5282e+09 * pow2( phase ) );\n\t\txyz /= 1.0685e-7;\n\t\tvec3 rgb = XYZ_TO_REC709 * xyz;\n\t\treturn rgb;\n\t}\n\tvec3 evalIridescence( float outsideIOR, float eta2, float cosTheta1, float thinFilmThickness, vec3 baseF0 ) {\n\t\tvec3 I;\n\t\tfloat iridescenceIOR = mix( outsideIOR, eta2, smoothstep( 0.0, 0.03, thinFilmThickness ) );\n\t\tfloat sinTheta2Sq = pow2( outsideIOR / iridescenceIOR ) * ( 1.0 - pow2( cosTheta1 ) );\n\t\tfloat cosTheta2Sq = 1.0 - sinTheta2Sq;\n\t\tif ( cosTheta2Sq < 0.0 ) {\n\t\t\treturn vec3( 1.0 );\n\t\t}\n\t\tfloat cosTheta2 = sqrt( cosTheta2Sq );\n\t\tfloat R0 = IorToFresnel0( iridescenceIOR, outsideIOR );\n\t\tfloat R12 = F_Schlick( R0, 1.0, cosTheta1 );\n\t\tfloat T121 = 1.0 - R12;\n\t\tfloat phi12 = 0.0;\n\t\tif ( iridescenceIOR < outsideIOR ) phi12 = PI;\n\t\tfloat phi21 = PI - phi12;\n\t\tvec3 baseIOR = Fresnel0ToIor( clamp( baseF0, 0.0, 0.9999 ) );\t\tvec3 R1 = IorToFresnel0( baseIOR, iridescenceIOR );\n\t\tvec3 R23 = F_Schlick( R1, 1.0, cosTheta2 );\n\t\tvec3 phi23 = vec3( 0.0 );\n\t\tif ( baseIOR[ 0 ] < iridescenceIOR ) phi23[ 0 ] = PI;\n\t\tif ( baseIOR[ 1 ] < iridescenceIOR ) phi23[ 1 ] = PI;\n\t\tif ( baseIOR[ 2 ] < iridescenceIOR ) phi23[ 2 ] = PI;\n\t\tfloat OPD = 2.0 * iridescenceIOR * thinFilmThickness * cosTheta2;\n\t\tvec3 phi = vec3( phi21 ) + phi23;\n\t\tvec3 R123 = clamp( R12 * R23, 1e-5, 0.9999 );\n\t\tvec3 r123 = sqrt( R123 );\n\t\tvec3 Rs = pow2( T121 ) * R23 / ( vec3( 1.0 ) - R123 );\n\t\tvec3 C0 = R12 + Rs;\n\t\tI = C0;\n\t\tvec3 Cm = Rs - T121;\n\t\tfor ( int m = 1; m <= 2; ++ m ) {\n\t\t\tCm *= r123;\n\t\t\tvec3 Sm = 2.0 * evalSensitivity( float( m ) * OPD, float( m ) * phi );\n\t\t\tI += Cm * Sm;\n\t\t}\n\t\treturn max( I, vec3( 0.0 ) );\n\t}\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( vBumpMapUv );\n\t\tvec2 dSTdy = dFdy( vBumpMapUv );\n\t\tfloat Hll = bumpScale * texture2D( bumpMap, vBumpMapUv ).x;\n\t\tfloat dBx = bumpScale * texture2D( bumpMap, vBumpMapUv + dSTdx ).x - Hll;\n\t\tfloat dBy = bumpScale * texture2D( bumpMap, vBumpMapUv + dSTdy ).x - Hll;\n\t\treturn vec2( dBx, dBy );\n\t}\n\tvec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy, float faceDirection ) {\n\t\tvec3 vSigmaX = normalize( dFdx( surf_pos.xyz ) );\n\t\tvec3 vSigmaY = normalize( dFdy( surf_pos.xyz ) );\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 ) * faceDirection;\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#ifdef ALPHA_TO_COVERAGE\n\t\tfloat distanceToPlane, distanceGradient;\n\t\tfloat clipOpacity = 1.0;\n\t\t#pragma unroll_loop_start\n\t\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\n\t\t\tplane = clippingPlanes[ i ];\n\t\t\tdistanceToPlane = - dot( vClipPosition, plane.xyz ) + plane.w;\n\t\t\tdistanceGradient = fwidth( distanceToPlane ) / 2.0;\n\t\t\tclipOpacity *= smoothstep( - distanceGradient, distanceGradient, distanceToPlane );\n\t\t\tif ( clipOpacity == 0.0 ) discard;\n\t\t}\n\t\t#pragma unroll_loop_end\n\t\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\n\t\t\tfloat unionClipOpacity = 1.0;\n\t\t\t#pragma unroll_loop_start\n\t\t\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\n\t\t\t\tplane = clippingPlanes[ i ];\n\t\t\t\tdistanceToPlane = - dot( vClipPosition, plane.xyz ) + plane.w;\n\t\t\t\tdistanceGradient = fwidth( distanceToPlane ) / 2.0;\n\t\t\t\tunionClipOpacity *= 1.0 - smoothstep( - distanceGradient, distanceGradient, distanceToPlane );\n\t\t\t}\n\t\t\t#pragma unroll_loop_end\n\t\t\tclipOpacity *= 1.0 - unionClipOpacity;\n\t\t#endif\n\t\tdiffuseColor.a *= clipOpacity;\n\t\tif ( diffuseColor.a == 0.0 ) discard;\n\t#else\n\t\t#pragma unroll_loop_start\n\t\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\n\t\t\tplane = clippingPlanes[ i ];\n\t\t\tif ( dot( vClipPosition, plane.xyz ) > plane.w ) discard;\n\t\t}\n\t\t#pragma unroll_loop_end\n\t\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\n\t\t\tbool clipped = true;\n\t\t\t#pragma unroll_loop_start\n\t\t\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\n\t\t\t\tplane = clippingPlanes[ i ];\n\t\t\t\tclipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped;\n\t\t\t}\n\t\t\t#pragma unroll_loop_end\n\t\t\tif ( clipped ) discard;\n\t\t#endif\n\t#endif\n#endif",clipping_planes_pars_fragment:"#if NUM_CLIPPING_PLANES > 0\n\tvarying vec3 vClipPosition;\n\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\n#endif",clipping_planes_pars_vertex:"#if NUM_CLIPPING_PLANES > 0\n\tvarying vec3 vClipPosition;\n#endif",clipping_planes_vertex:"#if NUM_CLIPPING_PLANES > 0\n\tvClipPosition = - mvPosition.xyz;\n#endif",color_fragment:"#if defined( USE_COLOR_ALPHA )\n\tdiffuseColor *= vColor;\n#elif defined( USE_COLOR )\n\tdiffuseColor.rgb *= vColor;\n#endif",color_pars_fragment:"#if defined( USE_COLOR_ALPHA )\n\tvarying vec4 vColor;\n#elif defined( USE_COLOR )\n\tvarying vec3 vColor;\n#endif",color_pars_vertex:"#if defined( USE_COLOR_ALPHA )\n\tvarying vec4 vColor;\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) || defined( USE_BATCHING_COLOR )\n\tvarying vec3 vColor;\n#endif",color_vertex:"#if defined( USE_COLOR_ALPHA )\n\tvColor = vec4( 1.0 );\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) || defined( USE_BATCHING_COLOR )\n\tvColor = vec3( 1.0 );\n#endif\n#ifdef USE_COLOR\n\tvColor *= color;\n#endif\n#ifdef USE_INSTANCING_COLOR\n\tvColor.xyz *= instanceColor.xyz;\n#endif\n#ifdef USE_BATCHING_COLOR\n\tvec3 batchingColor = getBatchingColor( getIndirectIndex( gl_DrawID ) );\n\tvColor.xyz *= batchingColor.xyz;\n#endif",common:"#define PI 3.141592653589793\n#define PI2 6.283185307179586\n#define PI_HALF 1.5707963267948966\n#define RECIPROCAL_PI 0.3183098861837907\n#define RECIPROCAL_PI2 0.15915494309189535\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; }\nvec3 pow2( const in vec3 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 max3( const in vec3 v ) { return max( max( v.x, v.y ), v.z ); }\nfloat average( const in vec3 v ) { return dot( v, vec3( 0.3333333 ) ); }\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 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};\n#ifdef USE_ALPHAHASH\n\tvarying vec3 vPosition;\n#endif\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}\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}\nbool isPerspectiveMatrix( mat4 m ) {\n\treturn m[ 2 ][ 3 ] == - 1.0;\n}\nvec2 equirectUv( in vec3 dir ) {\n\tfloat u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5;\n\tfloat v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\n\treturn vec2( u, v );\n}\nvec3 BRDF_Lambert( const in vec3 diffuseColor ) {\n\treturn RECIPROCAL_PI * diffuseColor;\n}\nvec3 F_Schlick( const in vec3 f0, const in float f90, const in float dotVH ) {\n\tfloat fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );\n\treturn f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );\n}\nfloat F_Schlick( const in float f0, const in float f90, const in float dotVH ) {\n\tfloat fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );\n\treturn f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );\n} // validated",cube_uv_reflection_fragment:"#ifdef ENVMAP_TYPE_CUBE_UV\n\t#define cubeUV_minMipLevel 4.0\n\t#define cubeUV_minTileSize 16.0\n\tfloat getFace( vec3 direction ) {\n\t\tvec3 absDirection = abs( direction );\n\t\tfloat face = - 1.0;\n\t\tif ( absDirection.x > absDirection.z ) {\n\t\t\tif ( absDirection.x > absDirection.y )\n\t\t\t\tface = direction.x > 0.0 ? 0.0 : 3.0;\n\t\t\telse\n\t\t\t\tface = direction.y > 0.0 ? 1.0 : 4.0;\n\t\t} else {\n\t\t\tif ( absDirection.z > absDirection.y )\n\t\t\t\tface = direction.z > 0.0 ? 2.0 : 5.0;\n\t\t\telse\n\t\t\t\tface = direction.y > 0.0 ? 1.0 : 4.0;\n\t\t}\n\t\treturn face;\n\t}\n\tvec2 getUV( vec3 direction, float face ) {\n\t\tvec2 uv;\n\t\tif ( face == 0.0 ) {\n\t\t\tuv = vec2( direction.z, direction.y ) / abs( direction.x );\n\t\t} else if ( face == 1.0 ) {\n\t\t\tuv = vec2( - direction.x, - direction.z ) / abs( direction.y );\n\t\t} else if ( face == 2.0 ) {\n\t\t\tuv = vec2( - direction.x, direction.y ) / abs( direction.z );\n\t\t} else if ( face == 3.0 ) {\n\t\t\tuv = vec2( - direction.z, direction.y ) / abs( direction.x );\n\t\t} else if ( face == 4.0 ) {\n\t\t\tuv = vec2( - direction.x, direction.z ) / abs( direction.y );\n\t\t} else {\n\t\t\tuv = vec2( direction.x, direction.y ) / abs( direction.z );\n\t\t}\n\t\treturn 0.5 * ( uv + 1.0 );\n\t}\n\tvec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) {\n\t\tfloat face = getFace( direction );\n\t\tfloat filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 );\n\t\tmipInt = max( mipInt, cubeUV_minMipLevel );\n\t\tfloat faceSize = exp2( mipInt );\n\t\thighp vec2 uv = getUV( direction, face ) * ( faceSize - 2.0 ) + 1.0;\n\t\tif ( face > 2.0 ) {\n\t\t\tuv.y += faceSize;\n\t\t\tface -= 3.0;\n\t\t}\n\t\tuv.x += face * faceSize;\n\t\tuv.x += filterInt * 3.0 * cubeUV_minTileSize;\n\t\tuv.y += 4.0 * ( exp2( CUBEUV_MAX_MIP ) - faceSize );\n\t\tuv.x *= CUBEUV_TEXEL_WIDTH;\n\t\tuv.y *= CUBEUV_TEXEL_HEIGHT;\n\t\t#ifdef texture2DGradEXT\n\t\t\treturn texture2DGradEXT( envMap, uv, vec2( 0.0 ), vec2( 0.0 ) ).rgb;\n\t\t#else\n\t\t\treturn texture2D( envMap, uv ).rgb;\n\t\t#endif\n\t}\n\t#define cubeUV_r0 1.0\n\t#define cubeUV_m0 - 2.0\n\t#define cubeUV_r1 0.8\n\t#define cubeUV_m1 - 1.0\n\t#define cubeUV_r4 0.4\n\t#define cubeUV_m4 2.0\n\t#define cubeUV_r5 0.305\n\t#define cubeUV_m5 3.0\n\t#define cubeUV_r6 0.21\n\t#define cubeUV_m6 4.0\n\tfloat roughnessToMip( float roughness ) {\n\t\tfloat mip = 0.0;\n\t\tif ( roughness >= cubeUV_r1 ) {\n\t\t\tmip = ( cubeUV_r0 - roughness ) * ( cubeUV_m1 - cubeUV_m0 ) / ( cubeUV_r0 - cubeUV_r1 ) + cubeUV_m0;\n\t\t} else if ( roughness >= cubeUV_r4 ) {\n\t\t\tmip = ( cubeUV_r1 - roughness ) * ( cubeUV_m4 - cubeUV_m1 ) / ( cubeUV_r1 - cubeUV_r4 ) + cubeUV_m1;\n\t\t} else if ( roughness >= cubeUV_r5 ) {\n\t\t\tmip = ( cubeUV_r4 - roughness ) * ( cubeUV_m5 - cubeUV_m4 ) / ( cubeUV_r4 - cubeUV_r5 ) + cubeUV_m4;\n\t\t} else if ( roughness >= cubeUV_r6 ) {\n\t\t\tmip = ( cubeUV_r5 - roughness ) * ( cubeUV_m6 - cubeUV_m5 ) / ( cubeUV_r5 - cubeUV_r6 ) + cubeUV_m5;\n\t\t} else {\n\t\t\tmip = - 2.0 * log2( 1.16 * roughness );\t\t}\n\t\treturn mip;\n\t}\n\tvec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) {\n\t\tfloat mip = clamp( roughnessToMip( roughness ), cubeUV_m0, CUBEUV_MAX_MIP );\n\t\tfloat mipF = fract( mip );\n\t\tfloat mipInt = floor( mip );\n\t\tvec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt );\n\t\tif ( mipF == 0.0 ) {\n\t\t\treturn vec4( color0, 1.0 );\n\t\t} else {\n\t\t\tvec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 );\n\t\t\treturn vec4( mix( color0, color1, mipF ), 1.0 );\n\t\t}\n\t}\n#endif",defaultnormal_vertex:"vec3 transformedNormal = objectNormal;\n#ifdef USE_TANGENT\n\tvec3 transformedTangent = objectTangent;\n#endif\n#ifdef USE_BATCHING\n\tmat3 bm = mat3( batchingMatrix );\n\ttransformedNormal /= vec3( dot( bm[ 0 ], bm[ 0 ] ), dot( bm[ 1 ], bm[ 1 ] ), dot( bm[ 2 ], bm[ 2 ] ) );\n\ttransformedNormal = bm * transformedNormal;\n\t#ifdef USE_TANGENT\n\t\ttransformedTangent = bm * transformedTangent;\n\t#endif\n#endif\n#ifdef USE_INSTANCING\n\tmat3 im = mat3( instanceMatrix );\n\ttransformedNormal /= vec3( dot( im[ 0 ], im[ 0 ] ), dot( im[ 1 ], im[ 1 ] ), dot( im[ 2 ], im[ 2 ] ) );\n\ttransformedNormal = im * transformedNormal;\n\t#ifdef USE_TANGENT\n\t\ttransformedTangent = im * transformedTangent;\n\t#endif\n#endif\ntransformedNormal = normalMatrix * transformedNormal;\n#ifdef FLIP_SIDED\n\ttransformedNormal = - transformedNormal;\n#endif\n#ifdef USE_TANGENT\n\ttransformedTangent = ( modelViewMatrix * vec4( transformedTangent, 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, vDisplacementMapUv ).x * displacementScale + displacementBias );\n#endif",emissivemap_fragment:"#ifdef USE_EMISSIVEMAP\n\tvec4 emissiveColor = texture2D( emissiveMap, vEmissiveMapUv );\n\t#ifdef DECODE_VIDEO_TEXTURE_EMISSIVE\n\t\temissiveColor = sRGBTransferEOTF( emissiveColor );\n\t#endif\n\ttotalEmissiveRadiance *= emissiveColor.rgb;\n#endif",emissivemap_pars_fragment:"#ifdef USE_EMISSIVEMAP\n\tuniform sampler2D emissiveMap;\n#endif",colorspace_fragment:"gl_FragColor = linearToOutputTexel( gl_FragColor );",colorspace_pars_fragment:"vec4 LinearTransferOETF( in vec4 value ) {\n\treturn value;\n}\nvec4 sRGBTransferEOTF( 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 sRGBTransferOETF( 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}",envmap_fragment:"#ifdef USE_ENVMAP\n\t#ifdef ENV_WORLDPOS\n\t\tvec3 cameraToFrag;\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, envMapRotation * vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\n\t#else\n\t\tvec4 envColor = vec4( 0.0 );\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 mat3 envMapRotation;\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 ) || defined( LAMBERT )\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 ) || defined( LAMBERT )\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:"#ifdef USE_ENVMAP\n\tvec3 getIBLIrradiance( const in vec3 normal ) {\n\t\t#ifdef ENVMAP_TYPE_CUBE_UV\n\t\t\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, envMapRotation * worldNormal, 1.0 );\n\t\t\treturn PI * envMapColor.rgb * envMapIntensity;\n\t\t#else\n\t\t\treturn vec3( 0.0 );\n\t\t#endif\n\t}\n\tvec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) {\n\t\t#ifdef ENVMAP_TYPE_CUBE_UV\n\t\t\tvec3 reflectVec = reflect( - viewDir, normal );\n\t\t\treflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );\n\t\t\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, envMapRotation * reflectVec, roughness );\n\t\t\treturn envMapColor.rgb * envMapIntensity;\n\t\t#else\n\t\t\treturn vec3( 0.0 );\n\t\t#endif\n\t}\n\t#ifdef USE_ANISOTROPY\n\t\tvec3 getIBLAnisotropyRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness, const in vec3 bitangent, const in float anisotropy ) {\n\t\t\t#ifdef ENVMAP_TYPE_CUBE_UV\n\t\t\t\tvec3 bentNormal = cross( bitangent, viewDir );\n\t\t\t\tbentNormal = normalize( cross( bentNormal, bitangent ) );\n\t\t\t\tbentNormal = normalize( mix( bentNormal, normal, pow2( pow2( 1.0 - anisotropy * ( 1.0 - roughness ) ) ) ) );\n\t\t\t\treturn getIBLRadiance( viewDir, bentNormal, roughness );\n\t\t\t#else\n\t\t\t\treturn vec3( 0.0 );\n\t\t\t#endif\n\t\t}\n\t#endif\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\tvFogDepth = - mvPosition.z;\n#endif",fog_pars_vertex:"#ifdef USE_FOG\n\tvarying float vFogDepth;\n#endif",fog_fragment:"#ifdef USE_FOG\n\t#ifdef FOG_EXP2\n\t\tfloat fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth );\n\t#else\n\t\tfloat fogFactor = smoothstep( fogNear, fogFar, vFogDepth );\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 vFogDepth;\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 vec3( texture2D( gradientMap, coord ).r );\n\t#else\n\t\tvec2 fw = fwidth( coord ) * 0.5;\n\t\treturn mix( vec3( 0.7 ), vec3( 1.0 ), smoothstep( 0.7 - fw.x, 0.7 + fw.x, coord.x ) );\n\t#endif\n}",lightmap_pars_fragment:"#ifdef USE_LIGHTMAP\n\tuniform sampler2D lightMap;\n\tuniform float lightMapIntensity;\n#endif",lights_lambert_fragment:"LambertMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;\nmaterial.specularStrength = specularStrength;",lights_lambert_pars_fragment:"varying vec3 vViewPosition;\nstruct LambertMaterial {\n\tvec3 diffuseColor;\n\tfloat specularStrength;\n};\nvoid RE_Direct_Lambert( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) {\n\tfloat dotNL = saturate( dot( geometryNormal, directLight.direction ) );\n\tvec3 irradiance = dotNL * directLight.color;\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectDiffuse_Lambert( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\n#define RE_Direct\t\t\t\tRE_Direct_Lambert\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Lambert",lights_pars_begin:"uniform bool receiveShadow;\nuniform vec3 ambientLightColor;\n#if defined( USE_LIGHT_PROBES )\n\tuniform vec3 lightProbe[ 9 ];\n#endif\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 vec3 normal ) {\n\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\tvec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );\n\treturn irradiance;\n}\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\n\tvec3 irradiance = ambientLightColor;\n\treturn irradiance;\n}\nfloat getDistanceAttenuation( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\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}\nfloat getSpotAttenuation( const in float coneCosine, const in float penumbraCosine, const in float angleCosine ) {\n\treturn smoothstep( coneCosine, penumbraCosine, angleCosine );\n}\n#if NUM_DIR_LIGHTS > 0\n\tstruct DirectionalLight {\n\t\tvec3 direction;\n\t\tvec3 color;\n\t};\n\tuniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\n\tvoid getDirectionalLightInfo( const in DirectionalLight directionalLight, out IncidentLight light ) {\n\t\tlight.color = directionalLight.color;\n\t\tlight.direction = directionalLight.direction;\n\t\tlight.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};\n\tuniform PointLight pointLights[ NUM_POINT_LIGHTS ];\n\tvoid getPointLightInfo( const in PointLight pointLight, const in vec3 geometryPosition, out IncidentLight light ) {\n\t\tvec3 lVector = pointLight.position - geometryPosition;\n\t\tlight.direction = normalize( lVector );\n\t\tfloat lightDistance = length( lVector );\n\t\tlight.color = pointLight.color;\n\t\tlight.color *= getDistanceAttenuation( lightDistance, pointLight.distance, pointLight.decay );\n\t\tlight.visible = ( light.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};\n\tuniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\n\tvoid getSpotLightInfo( const in SpotLight spotLight, const in vec3 geometryPosition, out IncidentLight light ) {\n\t\tvec3 lVector = spotLight.position - geometryPosition;\n\t\tlight.direction = normalize( lVector );\n\t\tfloat angleCos = dot( light.direction, spotLight.direction );\n\t\tfloat spotAttenuation = getSpotAttenuation( spotLight.coneCos, spotLight.penumbraCos, angleCos );\n\t\tif ( spotAttenuation > 0.0 ) {\n\t\t\tfloat lightDistance = length( lVector );\n\t\t\tlight.color = spotLight.color * spotAttenuation;\n\t\t\tlight.color *= getDistanceAttenuation( lightDistance, spotLight.distance, spotLight.decay );\n\t\t\tlight.visible = ( light.color != vec3( 0.0 ) );\n\t\t} else {\n\t\t\tlight.color = vec3( 0.0 );\n\t\t\tlight.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 vec3 normal ) {\n\t\tfloat dotNL = dot( normal, hemiLight.direction );\n\t\tfloat hemiDiffuseWeight = 0.5 * dotNL + 0.5;\n\t\tvec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\n\t\treturn irradiance;\n\t}\n#endif",lights_toon_fragment:"ToonMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;",lights_toon_pars_fragment:"varying vec3 vViewPosition;\nstruct ToonMaterial {\n\tvec3 diffuseColor;\n};\nvoid RE_Direct_Toon( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\n\tvec3 irradiance = getGradientIrradiance( geometryNormal, directLight.direction ) * directLight.color;\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\n#define RE_Direct\t\t\t\tRE_Direct_Toon\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Toon",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;\nstruct BlinnPhongMaterial {\n\tvec3 diffuseColor;\n\tvec3 specularColor;\n\tfloat specularShininess;\n\tfloat specularStrength;\n};\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n\tfloat dotNL = saturate( dot( geometryNormal, directLight.direction ) );\n\tvec3 irradiance = dotNL * directLight.color;\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n\treflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometryViewDir, geometryNormal, material.specularColor, material.specularShininess ) * material.specularStrength;\n}\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\n#define RE_Direct\t\t\t\tRE_Direct_BlinnPhong\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_BlinnPhong",lights_physical_fragment:"PhysicalMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\nvec3 dxy = max( abs( dFdx( nonPerturbedNormal ) ), abs( dFdy( nonPerturbedNormal ) ) );\nfloat geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );\nmaterial.roughness = max( roughnessFactor, 0.0525 );material.roughness += geometryRoughness;\nmaterial.roughness = min( material.roughness, 1.0 );\n#ifdef IOR\n\tmaterial.ior = ior;\n\t#ifdef USE_SPECULAR\n\t\tfloat specularIntensityFactor = specularIntensity;\n\t\tvec3 specularColorFactor = specularColor;\n\t\t#ifdef USE_SPECULAR_COLORMAP\n\t\t\tspecularColorFactor *= texture2D( specularColorMap, vSpecularColorMapUv ).rgb;\n\t\t#endif\n\t\t#ifdef USE_SPECULAR_INTENSITYMAP\n\t\t\tspecularIntensityFactor *= texture2D( specularIntensityMap, vSpecularIntensityMapUv ).a;\n\t\t#endif\n\t\tmaterial.specularF90 = mix( specularIntensityFactor, 1.0, metalnessFactor );\n\t#else\n\t\tfloat specularIntensityFactor = 1.0;\n\t\tvec3 specularColorFactor = vec3( 1.0 );\n\t\tmaterial.specularF90 = 1.0;\n\t#endif\n\tmaterial.specularColor = mix( min( pow2( ( material.ior - 1.0 ) / ( material.ior + 1.0 ) ) * specularColorFactor, vec3( 1.0 ) ) * specularIntensityFactor, diffuseColor.rgb, metalnessFactor );\n#else\n\tmaterial.specularColor = mix( vec3( 0.04 ), diffuseColor.rgb, metalnessFactor );\n\tmaterial.specularF90 = 1.0;\n#endif\n#ifdef USE_CLEARCOAT\n\tmaterial.clearcoat = clearcoat;\n\tmaterial.clearcoatRoughness = clearcoatRoughness;\n\tmaterial.clearcoatF0 = vec3( 0.04 );\n\tmaterial.clearcoatF90 = 1.0;\n\t#ifdef USE_CLEARCOATMAP\n\t\tmaterial.clearcoat *= texture2D( clearcoatMap, vClearcoatMapUv ).x;\n\t#endif\n\t#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n\t\tmaterial.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vClearcoatRoughnessMapUv ).y;\n\t#endif\n\tmaterial.clearcoat = saturate( material.clearcoat );\tmaterial.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 );\n\tmaterial.clearcoatRoughness += geometryRoughness;\n\tmaterial.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 );\n#endif\n#ifdef USE_DISPERSION\n\tmaterial.dispersion = dispersion;\n#endif\n#ifdef USE_IRIDESCENCE\n\tmaterial.iridescence = iridescence;\n\tmaterial.iridescenceIOR = iridescenceIOR;\n\t#ifdef USE_IRIDESCENCEMAP\n\t\tmaterial.iridescence *= texture2D( iridescenceMap, vIridescenceMapUv ).r;\n\t#endif\n\t#ifdef USE_IRIDESCENCE_THICKNESSMAP\n\t\tmaterial.iridescenceThickness = (iridescenceThicknessMaximum - iridescenceThicknessMinimum) * texture2D( iridescenceThicknessMap, vIridescenceThicknessMapUv ).g + iridescenceThicknessMinimum;\n\t#else\n\t\tmaterial.iridescenceThickness = iridescenceThicknessMaximum;\n\t#endif\n#endif\n#ifdef USE_SHEEN\n\tmaterial.sheenColor = sheenColor;\n\t#ifdef USE_SHEEN_COLORMAP\n\t\tmaterial.sheenColor *= texture2D( sheenColorMap, vSheenColorMapUv ).rgb;\n\t#endif\n\tmaterial.sheenRoughness = clamp( sheenRoughness, 0.07, 1.0 );\n\t#ifdef USE_SHEEN_ROUGHNESSMAP\n\t\tmaterial.sheenRoughness *= texture2D( sheenRoughnessMap, vSheenRoughnessMapUv ).a;\n\t#endif\n#endif\n#ifdef USE_ANISOTROPY\n\t#ifdef USE_ANISOTROPYMAP\n\t\tmat2 anisotropyMat = mat2( anisotropyVector.x, anisotropyVector.y, - anisotropyVector.y, anisotropyVector.x );\n\t\tvec3 anisotropyPolar = texture2D( anisotropyMap, vAnisotropyMapUv ).rgb;\n\t\tvec2 anisotropyV = anisotropyMat * normalize( 2.0 * anisotropyPolar.rg - vec2( 1.0 ) ) * anisotropyPolar.b;\n\t#else\n\t\tvec2 anisotropyV = anisotropyVector;\n\t#endif\n\tmaterial.anisotropy = length( anisotropyV );\n\tif( material.anisotropy == 0.0 ) {\n\t\tanisotropyV = vec2( 1.0, 0.0 );\n\t} else {\n\t\tanisotropyV /= material.anisotropy;\n\t\tmaterial.anisotropy = saturate( material.anisotropy );\n\t}\n\tmaterial.alphaT = mix( pow2( material.roughness ), 1.0, pow2( material.anisotropy ) );\n\tmaterial.anisotropyT = tbn[ 0 ] * anisotropyV.x + tbn[ 1 ] * anisotropyV.y;\n\tmaterial.anisotropyB = tbn[ 1 ] * anisotropyV.x - tbn[ 0 ] * anisotropyV.y;\n#endif",lights_physical_pars_fragment:"struct PhysicalMaterial {\n\tvec3 diffuseColor;\n\tfloat roughness;\n\tvec3 specularColor;\n\tfloat specularF90;\n\tfloat dispersion;\n\t#ifdef USE_CLEARCOAT\n\t\tfloat clearcoat;\n\t\tfloat clearcoatRoughness;\n\t\tvec3 clearcoatF0;\n\t\tfloat clearcoatF90;\n\t#endif\n\t#ifdef USE_IRIDESCENCE\n\t\tfloat iridescence;\n\t\tfloat iridescenceIOR;\n\t\tfloat iridescenceThickness;\n\t\tvec3 iridescenceFresnel;\n\t\tvec3 iridescenceF0;\n\t#endif\n\t#ifdef USE_SHEEN\n\t\tvec3 sheenColor;\n\t\tfloat sheenRoughness;\n\t#endif\n\t#ifdef IOR\n\t\tfloat ior;\n\t#endif\n\t#ifdef USE_TRANSMISSION\n\t\tfloat transmission;\n\t\tfloat transmissionAlpha;\n\t\tfloat thickness;\n\t\tfloat attenuationDistance;\n\t\tvec3 attenuationColor;\n\t#endif\n\t#ifdef USE_ANISOTROPY\n\t\tfloat anisotropy;\n\t\tfloat alphaT;\n\t\tvec3 anisotropyT;\n\t\tvec3 anisotropyB;\n\t#endif\n};\nvec3 clearcoatSpecularDirect = vec3( 0.0 );\nvec3 clearcoatSpecularIndirect = vec3( 0.0 );\nvec3 sheenSpecularDirect = vec3( 0.0 );\nvec3 sheenSpecularIndirect = vec3(0.0 );\nvec3 Schlick_to_F0( const in vec3 f, const in float f90, const in float dotVH ) {\n float x = clamp( 1.0 - dotVH, 0.0, 1.0 );\n float x2 = x * x;\n float x5 = clamp( x * x2 * x2, 0.0, 0.9999 );\n return ( f - vec3( f90 ) * x5 ) / ( 1.0 - x5 );\n}\nfloat V_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}\n#ifdef USE_ANISOTROPY\n\tfloat V_GGX_SmithCorrelated_Anisotropic( const in float alphaT, const in float alphaB, const in float dotTV, const in float dotBV, const in float dotTL, const in float dotBL, const in float dotNV, const in float dotNL ) {\n\t\tfloat gv = dotNL * length( vec3( alphaT * dotTV, alphaB * dotBV, dotNV ) );\n\t\tfloat gl = dotNV * length( vec3( alphaT * dotTL, alphaB * dotBL, dotNL ) );\n\t\tfloat v = 0.5 / ( gv + gl );\n\t\treturn saturate(v);\n\t}\n\tfloat D_GGX_Anisotropic( const in float alphaT, const in float alphaB, const in float dotNH, const in float dotTH, const in float dotBH ) {\n\t\tfloat a2 = alphaT * alphaB;\n\t\thighp vec3 v = vec3( alphaB * dotTH, alphaT * dotBH, a2 * dotNH );\n\t\thighp float v2 = dot( v, v );\n\t\tfloat w2 = a2 / v2;\n\t\treturn RECIPROCAL_PI * a2 * pow2 ( w2 );\n\t}\n#endif\n#ifdef USE_CLEARCOAT\n\tvec3 BRDF_GGX_Clearcoat( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material) {\n\t\tvec3 f0 = material.clearcoatF0;\n\t\tfloat f90 = material.clearcoatF90;\n\t\tfloat roughness = material.clearcoatRoughness;\n\t\tfloat alpha = pow2( roughness );\n\t\tvec3 halfDir = normalize( lightDir + viewDir );\n\t\tfloat dotNL = saturate( dot( normal, lightDir ) );\n\t\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\t\tfloat dotNH = saturate( dot( normal, halfDir ) );\n\t\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\n\t\tvec3 F = F_Schlick( f0, f90, dotVH );\n\t\tfloat V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );\n\t\tfloat D = D_GGX( alpha, dotNH );\n\t\treturn F * ( V * D );\n\t}\n#endif\nvec3 BRDF_GGX( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material ) {\n\tvec3 f0 = material.specularColor;\n\tfloat f90 = material.specularF90;\n\tfloat roughness = material.roughness;\n\tfloat alpha = pow2( roughness );\n\tvec3 halfDir = normalize( lightDir + viewDir );\n\tfloat dotNL = saturate( dot( normal, lightDir ) );\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\tfloat dotNH = saturate( dot( normal, halfDir ) );\n\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\n\tvec3 F = F_Schlick( f0, f90, dotVH );\n\t#ifdef USE_IRIDESCENCE\n\t\tF = mix( F, material.iridescenceFresnel, material.iridescence );\n\t#endif\n\t#ifdef USE_ANISOTROPY\n\t\tfloat dotTL = dot( material.anisotropyT, lightDir );\n\t\tfloat dotTV = dot( material.anisotropyT, viewDir );\n\t\tfloat dotTH = dot( material.anisotropyT, halfDir );\n\t\tfloat dotBL = dot( material.anisotropyB, lightDir );\n\t\tfloat dotBV = dot( material.anisotropyB, viewDir );\n\t\tfloat dotBH = dot( material.anisotropyB, halfDir );\n\t\tfloat V = V_GGX_SmithCorrelated_Anisotropic( material.alphaT, alpha, dotTV, dotBV, dotTL, dotBL, dotNV, dotNL );\n\t\tfloat D = D_GGX_Anisotropic( material.alphaT, alpha, dotNH, dotTH, dotBH );\n\t#else\n\t\tfloat V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );\n\t\tfloat D = D_GGX( alpha, dotNH );\n\t#endif\n\treturn F * ( V * 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}\n#if defined( USE_SHEEN )\nfloat D_Charlie( float roughness, float dotNH ) {\n\tfloat alpha = pow2( roughness );\n\tfloat invAlpha = 1.0 / alpha;\n\tfloat cos2h = dotNH * dotNH;\n\tfloat sin2h = max( 1.0 - cos2h, 0.0078125 );\n\treturn ( 2.0 + invAlpha ) * pow( sin2h, invAlpha * 0.5 ) / ( 2.0 * PI );\n}\nfloat V_Neubelt( float dotNV, float dotNL ) {\n\treturn saturate( 1.0 / ( 4.0 * ( dotNL + dotNV - dotNL * dotNV ) ) );\n}\nvec3 BRDF_Sheen( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, vec3 sheenColor, const in float sheenRoughness ) {\n\tvec3 halfDir = normalize( lightDir + viewDir );\n\tfloat dotNL = saturate( dot( normal, lightDir ) );\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\tfloat dotNH = saturate( dot( normal, halfDir ) );\n\tfloat D = D_Charlie( sheenRoughness, dotNH );\n\tfloat V = V_Neubelt( dotNV, dotNL );\n\treturn sheenColor * ( D * V );\n}\n#endif\nfloat IBLSheenBRDF( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\tfloat r2 = roughness * roughness;\n\tfloat a = roughness < 0.25 ? -339.2 * r2 + 161.4 * roughness - 25.9 : -8.48 * r2 + 14.3 * roughness - 9.95;\n\tfloat b = roughness < 0.25 ? 44.0 * r2 - 23.7 * roughness + 3.26 : 1.97 * r2 - 3.27 * roughness + 0.72;\n\tfloat DG = exp( a * dotNV + b ) + ( roughness < 0.25 ? 0.0 : 0.1 * ( roughness - 0.25 ) );\n\treturn saturate( DG * RECIPROCAL_PI );\n}\nvec2 DFGApprox( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\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\tvec2 fab = vec2( - 1.04, 1.04 ) * a004 + r.zw;\n\treturn fab;\n}\nvec3 EnvironmentBRDF( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness ) {\n\tvec2 fab = DFGApprox( normal, viewDir, roughness );\n\treturn specularColor * fab.x + specularF90 * fab.y;\n}\n#ifdef USE_IRIDESCENCE\nvoid computeMultiscatteringIridescence( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float iridescence, const in vec3 iridescenceF0, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\n#else\nvoid computeMultiscattering( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\n#endif\n\tvec2 fab = DFGApprox( normal, viewDir, roughness );\n\t#ifdef USE_IRIDESCENCE\n\t\tvec3 Fr = mix( specularColor, iridescenceF0, iridescence );\n\t#else\n\t\tvec3 Fr = specularColor;\n\t#endif\n\tvec3 FssEss = Fr * fab.x + specularF90 * fab.y;\n\tfloat Ess = fab.x + fab.y;\n\tfloat Ems = 1.0 - Ess;\n\tvec3 Favg = Fr + ( 1.0 - Fr ) * 0.047619;\tvec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg );\n\tsingleScatter += FssEss;\n\tmultiScatter += Fms * Ems;\n}\n#if NUM_RECT_AREA_LIGHTS > 0\n\tvoid RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\t\tvec3 normal = geometryNormal;\n\t\tvec3 viewDir = geometryViewDir;\n\t\tvec3 position = geometryPosition;\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.roughness;\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 vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\tfloat dotNL = saturate( dot( geometryNormal, directLight.direction ) );\n\tvec3 irradiance = dotNL * directLight.color;\n\t#ifdef USE_CLEARCOAT\n\t\tfloat dotNLcc = saturate( dot( geometryClearcoatNormal, directLight.direction ) );\n\t\tvec3 ccIrradiance = dotNLcc * directLight.color;\n\t\tclearcoatSpecularDirect += ccIrradiance * BRDF_GGX_Clearcoat( directLight.direction, geometryViewDir, geometryClearcoatNormal, material );\n\t#endif\n\t#ifdef USE_SHEEN\n\t\tsheenSpecularDirect += irradiance * BRDF_Sheen( directLight.direction, geometryViewDir, geometryNormal, material.sheenColor, material.sheenRoughness );\n\t#endif\n\treflectedLight.directSpecular += irradiance * BRDF_GGX( directLight.direction, geometryViewDir, geometryNormal, material );\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {\n\t#ifdef USE_CLEARCOAT\n\t\tclearcoatSpecularIndirect += clearcoatRadiance * EnvironmentBRDF( geometryClearcoatNormal, geometryViewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );\n\t#endif\n\t#ifdef USE_SHEEN\n\t\tsheenSpecularIndirect += irradiance * material.sheenColor * IBLSheenBRDF( geometryNormal, geometryViewDir, material.sheenRoughness );\n\t#endif\n\tvec3 singleScattering = vec3( 0.0 );\n\tvec3 multiScattering = vec3( 0.0 );\n\tvec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;\n\t#ifdef USE_IRIDESCENCE\n\t\tcomputeMultiscatteringIridescence( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnel, material.roughness, singleScattering, multiScattering );\n\t#else\n\t\tcomputeMultiscattering( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.roughness, singleScattering, multiScattering );\n\t#endif\n\tvec3 totalScattering = singleScattering + multiScattering;\n\tvec3 diffuse = material.diffuseColor * ( 1.0 - max( max( totalScattering.r, totalScattering.g ), totalScattering.b ) );\n\treflectedLight.indirectSpecular += 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:"\nvec3 geometryPosition = - vViewPosition;\nvec3 geometryNormal = normal;\nvec3 geometryViewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );\nvec3 geometryClearcoatNormal = vec3( 0.0 );\n#ifdef USE_CLEARCOAT\n\tgeometryClearcoatNormal = clearcoatNormal;\n#endif\n#ifdef USE_IRIDESCENCE\n\tfloat dotNVi = saturate( dot( normal, geometryViewDir ) );\n\tif ( material.iridescenceThickness == 0.0 ) {\n\t\tmaterial.iridescence = 0.0;\n\t} else {\n\t\tmaterial.iridescence = saturate( material.iridescence );\n\t}\n\tif ( material.iridescence > 0.0 ) {\n\t\tmaterial.iridescenceFresnel = evalIridescence( 1.0, material.iridescenceIOR, dotNVi, material.iridescenceThickness, material.specularColor );\n\t\tmaterial.iridescenceF0 = Schlick_to_F0( material.iridescenceFresnel, 1.0, dotNVi );\n\t}\n#endif\nIncidentLight directLight;\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\n\tPointLight pointLight;\n\t#if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0\n\tPointLightShadow pointLightShadow;\n\t#endif\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tpointLight = pointLights[ i ];\n\t\tgetPointLightInfo( pointLight, geometryPosition, directLight );\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS )\n\t\tpointLightShadow = pointLightShadows[ i ];\n\t\tdirectLight.color *= ( directLight.visible && receiveShadow ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowIntensity, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\n\tSpotLight spotLight;\n\tvec4 spotColor;\n\tvec3 spotLightCoord;\n\tbool inSpotLightMap;\n\t#if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0\n\tSpotLightShadow spotLightShadow;\n\t#endif\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tspotLight = spotLights[ i ];\n\t\tgetSpotLightInfo( spotLight, geometryPosition, directLight );\n\t\t#if ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS )\n\t\t#define SPOT_LIGHT_MAP_INDEX UNROLLED_LOOP_INDEX\n\t\t#elif ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\n\t\t#define SPOT_LIGHT_MAP_INDEX NUM_SPOT_LIGHT_MAPS\n\t\t#else\n\t\t#define SPOT_LIGHT_MAP_INDEX ( UNROLLED_LOOP_INDEX - NUM_SPOT_LIGHT_SHADOWS + NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS )\n\t\t#endif\n\t\t#if ( SPOT_LIGHT_MAP_INDEX < NUM_SPOT_LIGHT_MAPS )\n\t\t\tspotLightCoord = vSpotLightCoord[ i ].xyz / vSpotLightCoord[ i ].w;\n\t\t\tinSpotLightMap = all( lessThan( abs( spotLightCoord * 2. - 1. ), vec3( 1.0 ) ) );\n\t\t\tspotColor = texture2D( spotLightMap[ SPOT_LIGHT_MAP_INDEX ], spotLightCoord.xy );\n\t\t\tdirectLight.color = inSpotLightMap ? directLight.color * spotColor.rgb : directLight.color;\n\t\t#endif\n\t\t#undef SPOT_LIGHT_MAP_INDEX\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\n\t\tspotLightShadow = spotLightShadows[ i ];\n\t\tdirectLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowIntensity, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\n\tDirectionalLight directionalLight;\n\t#if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0\n\tDirectionalLightShadow directionalLightShadow;\n\t#endif\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tdirectionalLight = directionalLights[ i ];\n\t\tgetDirectionalLightInfo( directionalLight, directLight );\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS )\n\t\tdirectionalLightShadow = directionalLightShadows[ i ];\n\t\tdirectLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowIntensity, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\n\tRectAreaLight rectAreaLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {\n\t\trectAreaLight = rectAreaLights[ i ];\n\t\tRE_Direct_RectArea( rectAreaLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if defined( RE_IndirectDiffuse )\n\tvec3 iblIrradiance = vec3( 0.0 );\n\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\n\t#if defined( USE_LIGHT_PROBES )\n\t\tirradiance += getLightProbeIrradiance( lightProbe, geometryNormal );\n\t#endif\n\t#if ( NUM_HEMI_LIGHTS > 0 )\n\t\t#pragma unroll_loop_start\n\t\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\n\t\t\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometryNormal );\n\t\t}\n\t\t#pragma unroll_loop_end\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, vLightMapUv );\n\t\tvec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;\n\t\tirradiance += lightMapIrradiance;\n\t#endif\n\t#if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV )\n\t\tiblIrradiance += getIBLIrradiance( geometryNormal );\n\t#endif\n#endif\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\n\t#ifdef USE_ANISOTROPY\n\t\tradiance += getIBLAnisotropyRadiance( geometryViewDir, geometryNormal, material.roughness, material.anisotropyB, material.anisotropy );\n\t#else\n\t\tradiance += getIBLRadiance( geometryViewDir, geometryNormal, material.roughness );\n\t#endif\n\t#ifdef USE_CLEARCOAT\n\t\tclearcoatRadiance += getIBLRadiance( geometryViewDir, geometryClearcoatNormal, material.clearcoatRoughness );\n\t#endif\n#endif",lights_fragment_end:"#if defined( RE_IndirectDiffuse )\n\tRE_IndirectDiffuse( irradiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\n#endif\n#if defined( RE_IndirectSpecular )\n\tRE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\n#endif",logdepthbuf_fragment:"#if defined( USE_LOGDEPTHBUF )\n\tgl_FragDepth = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\n#endif",logdepthbuf_pars_fragment:"#if defined( USE_LOGDEPTHBUF )\n\tuniform float logDepthBufFC;\n\tvarying float vFragDepth;\n\tvarying float vIsPerspective;\n#endif",logdepthbuf_pars_vertex:"#ifdef USE_LOGDEPTHBUF\n\tvarying float vFragDepth;\n\tvarying float vIsPerspective;\n#endif",logdepthbuf_vertex:"#ifdef USE_LOGDEPTHBUF\n\tvFragDepth = 1.0 + gl_Position.w;\n\tvIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) );\n#endif",map_fragment:"#ifdef USE_MAP\n\tvec4 sampledDiffuseColor = texture2D( map, vMapUv );\n\t#ifdef DECODE_VIDEO_TEXTURE\n\t\tsampledDiffuseColor = sRGBTransferEOTF( sampledDiffuseColor );\n\t#endif\n\tdiffuseColor *= sampledDiffuseColor;\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\t#if defined( USE_POINTS_UV )\n\t\tvec2 uv = vUv;\n\t#else\n\t\tvec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\n\t#endif\n#endif\n#ifdef USE_MAP\n\tdiffuseColor *= texture2D( map, uv );\n#endif\n#ifdef USE_ALPHAMAP\n\tdiffuseColor.a *= texture2D( alphaMap, uv ).g;\n#endif",map_particle_pars_fragment:"#if defined( USE_POINTS_UV )\n\tvarying vec2 vUv;\n#else\n\t#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\n\t\tuniform mat3 uvTransform;\n\t#endif\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, vMetalnessMapUv );\n\tmetalnessFactor *= texelMetalness.b;\n#endif",metalnessmap_pars_fragment:"#ifdef USE_METALNESSMAP\n\tuniform sampler2D metalnessMap;\n#endif",morphinstance_vertex:"#ifdef USE_INSTANCING_MORPH\n\tfloat morphTargetInfluences[ MORPHTARGETS_COUNT ];\n\tfloat morphTargetBaseInfluence = texelFetch( morphTexture, ivec2( 0, gl_InstanceID ), 0 ).r;\n\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\n\t\tmorphTargetInfluences[i] = texelFetch( morphTexture, ivec2( i + 1, gl_InstanceID ), 0 ).r;\n\t}\n#endif",morphcolor_vertex:"#if defined( USE_MORPHCOLORS )\n\tvColor *= morphTargetBaseInfluence;\n\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\n\t\t#if defined( USE_COLOR_ALPHA )\n\t\t\tif ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ) * morphTargetInfluences[ i ];\n\t\t#elif defined( USE_COLOR )\n\t\t\tif ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ).rgb * morphTargetInfluences[ i ];\n\t\t#endif\n\t}\n#endif",morphnormal_vertex:"#ifdef USE_MORPHNORMALS\n\tobjectNormal *= morphTargetBaseInfluence;\n\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\n\t\tif ( morphTargetInfluences[ i ] != 0.0 ) objectNormal += getMorph( gl_VertexID, i, 1 ).xyz * morphTargetInfluences[ i ];\n\t}\n#endif",morphtarget_pars_vertex:"#ifdef USE_MORPHTARGETS\n\t#ifndef USE_INSTANCING_MORPH\n\t\tuniform float morphTargetBaseInfluence;\n\t\tuniform float morphTargetInfluences[ MORPHTARGETS_COUNT ];\n\t#endif\n\tuniform sampler2DArray morphTargetsTexture;\n\tuniform ivec2 morphTargetsTextureSize;\n\tvec4 getMorph( const in int vertexIndex, const in int morphTargetIndex, const in int offset ) {\n\t\tint texelIndex = vertexIndex * MORPHTARGETS_TEXTURE_STRIDE + offset;\n\t\tint y = texelIndex / morphTargetsTextureSize.x;\n\t\tint x = texelIndex - y * morphTargetsTextureSize.x;\n\t\tivec3 morphUV = ivec3( x, y, morphTargetIndex );\n\t\treturn texelFetch( morphTargetsTexture, morphUV, 0 );\n\t}\n#endif",morphtarget_vertex:"#ifdef USE_MORPHTARGETS\n\ttransformed *= morphTargetBaseInfluence;\n\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\n\t\tif ( morphTargetInfluences[ i ] != 0.0 ) transformed += getMorph( gl_VertexID, i, 0 ).xyz * morphTargetInfluences[ i ];\n\t}\n#endif",normal_fragment_begin:"float faceDirection = gl_FrontFacing ? 1.0 : - 1.0;\n#ifdef FLAT_SHADED\n\tvec3 fdx = dFdx( vViewPosition );\n\tvec3 fdy = dFdy( vViewPosition );\n\tvec3 normal = normalize( cross( fdx, fdy ) );\n#else\n\tvec3 normal = normalize( vNormal );\n\t#ifdef DOUBLE_SIDED\n\t\tnormal *= faceDirection;\n\t#endif\n#endif\n#if defined( USE_NORMALMAP_TANGENTSPACE ) || defined( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY )\n\t#ifdef USE_TANGENT\n\t\tmat3 tbn = mat3( normalize( vTangent ), normalize( vBitangent ), normal );\n\t#else\n\t\tmat3 tbn = getTangentFrame( - vViewPosition, normal,\n\t\t#if defined( USE_NORMALMAP )\n\t\t\tvNormalMapUv\n\t\t#elif defined( USE_CLEARCOAT_NORMALMAP )\n\t\t\tvClearcoatNormalMapUv\n\t\t#else\n\t\t\tvUv\n\t\t#endif\n\t\t);\n\t#endif\n\t#if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED )\n\t\ttbn[0] *= faceDirection;\n\t\ttbn[1] *= faceDirection;\n\t#endif\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n\t#ifdef USE_TANGENT\n\t\tmat3 tbn2 = mat3( normalize( vTangent ), normalize( vBitangent ), normal );\n\t#else\n\t\tmat3 tbn2 = getTangentFrame( - vViewPosition, normal, vClearcoatNormalMapUv );\n\t#endif\n\t#if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED )\n\t\ttbn2[0] *= faceDirection;\n\t\ttbn2[1] *= faceDirection;\n\t#endif\n#endif\nvec3 nonPerturbedNormal = normal;",normal_fragment_maps:"#ifdef USE_NORMALMAP_OBJECTSPACE\n\tnormal = texture2D( normalMap, vNormalMapUv ).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 * faceDirection;\n\t#endif\n\tnormal = normalize( normalMatrix * normal );\n#elif defined( USE_NORMALMAP_TANGENTSPACE )\n\tvec3 mapN = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0;\n\tmapN.xy *= normalScale;\n\tnormal = normalize( tbn * mapN );\n#elif defined( USE_BUMPMAP )\n\tnormal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection );\n#endif",normal_pars_fragment:"#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",normal_pars_vertex:"#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",normal_vertex:"#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",normalmap_pars_fragment:"#ifdef USE_NORMALMAP\n\tuniform sampler2D normalMap;\n\tuniform vec2 normalScale;\n#endif\n#ifdef USE_NORMALMAP_OBJECTSPACE\n\tuniform mat3 normalMatrix;\n#endif\n#if ! defined ( USE_TANGENT ) && ( defined ( USE_NORMALMAP_TANGENTSPACE ) || defined ( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY ) )\n\tmat3 getTangentFrame( vec3 eye_pos, vec3 surf_norm, vec2 uv ) {\n\t\tvec3 q0 = dFdx( eye_pos.xyz );\n\t\tvec3 q1 = dFdy( eye_pos.xyz );\n\t\tvec2 st0 = dFdx( uv.st );\n\t\tvec2 st1 = dFdy( uv.st );\n\t\tvec3 N = surf_norm;\n\t\tvec3 q1perp = cross( q1, N );\n\t\tvec3 q0perp = cross( N, q0 );\n\t\tvec3 T = q1perp * st0.x + q0perp * st1.x;\n\t\tvec3 B = q1perp * st0.y + q0perp * st1.y;\n\t\tfloat det = max( dot( T, T ), dot( B, B ) );\n\t\tfloat scale = ( det == 0.0 ) ? 0.0 : inversesqrt( det );\n\t\treturn mat3( T * scale, B * scale, N );\n\t}\n#endif",clearcoat_normal_fragment_begin:"#ifdef USE_CLEARCOAT\n\tvec3 clearcoatNormal = nonPerturbedNormal;\n#endif",clearcoat_normal_fragment_maps:"#ifdef USE_CLEARCOAT_NORMALMAP\n\tvec3 clearcoatMapN = texture2D( clearcoatNormalMap, vClearcoatNormalMapUv ).xyz * 2.0 - 1.0;\n\tclearcoatMapN.xy *= clearcoatNormalScale;\n\tclearcoatNormal = normalize( tbn2 * clearcoatMapN );\n#endif",clearcoat_pars_fragment:"#ifdef USE_CLEARCOATMAP\n\tuniform sampler2D clearcoatMap;\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n\tuniform sampler2D clearcoatNormalMap;\n\tuniform vec2 clearcoatNormalScale;\n#endif\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n\tuniform sampler2D clearcoatRoughnessMap;\n#endif",iridescence_pars_fragment:"#ifdef USE_IRIDESCENCEMAP\n\tuniform sampler2D iridescenceMap;\n#endif\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\n\tuniform sampler2D iridescenceThicknessMap;\n#endif",opaque_fragment:"#ifdef OPAQUE\ndiffuseColor.a = 1.0;\n#endif\n#ifdef USE_TRANSMISSION\ndiffuseColor.a *= material.transmissionAlpha;\n#endif\ngl_FragColor = vec4( outgoingLight, diffuseColor.a );",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.;const float ShiftRight8 = 1. / 256.;\nconst float Inv255 = 1. / 255.;\nconst vec4 PackFactors = vec4( 1.0, 256.0, 256.0 * 256.0, 256.0 * 256.0 * 256.0 );\nconst vec2 UnpackFactors2 = vec2( UnpackDownscale, 1.0 / PackFactors.g );\nconst vec3 UnpackFactors3 = vec3( UnpackDownscale / PackFactors.rg, 1.0 / PackFactors.b );\nconst vec4 UnpackFactors4 = vec4( UnpackDownscale / PackFactors.rgb, 1.0 / PackFactors.a );\nvec4 packDepthToRGBA( const in float v ) {\n\tif( v <= 0.0 )\n\t\treturn vec4( 0., 0., 0., 0. );\n\tif( v >= 1.0 )\n\t\treturn vec4( 1., 1., 1., 1. );\n\tfloat vuf;\n\tfloat af = modf( v * PackFactors.a, vuf );\n\tfloat bf = modf( vuf * ShiftRight8, vuf );\n\tfloat gf = modf( vuf * ShiftRight8, vuf );\n\treturn vec4( vuf * Inv255, gf * PackUpscale, bf * PackUpscale, af );\n}\nvec3 packDepthToRGB( const in float v ) {\n\tif( v <= 0.0 )\n\t\treturn vec3( 0., 0., 0. );\n\tif( v >= 1.0 )\n\t\treturn vec3( 1., 1., 1. );\n\tfloat vuf;\n\tfloat bf = modf( v * PackFactors.b, vuf );\n\tfloat gf = modf( vuf * ShiftRight8, vuf );\n\treturn vec3( vuf * Inv255, gf * PackUpscale, bf );\n}\nvec2 packDepthToRG( const in float v ) {\n\tif( v <= 0.0 )\n\t\treturn vec2( 0., 0. );\n\tif( v >= 1.0 )\n\t\treturn vec2( 1., 1. );\n\tfloat vuf;\n\tfloat gf = modf( v * 256., vuf );\n\treturn vec2( vuf * Inv255, gf );\n}\nfloat unpackRGBAToDepth( const in vec4 v ) {\n\treturn dot( v, UnpackFactors4 );\n}\nfloat unpackRGBToDepth( const in vec3 v ) {\n\treturn dot( v, UnpackFactors3 );\n}\nfloat unpackRGToDepth( const in vec2 v ) {\n\treturn v.r * UnpackFactors2.r + v.g * UnpackFactors2.g;\n}\nvec4 pack2HalfToRGBA( const in 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( const in 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 depth, const in float near, const in float far ) {\n\treturn depth * ( 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 depth, const in float near, const in float far ) {\n\treturn ( near * far ) / ( ( far - near ) * depth - 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_BATCHING\n\tmvPosition = batchingMatrix * mvPosition;\n#endif\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, vRoughnessMapUv );\n\troughnessFactor *= texelRoughness.g;\n#endif",roughnessmap_pars_fragment:"#ifdef USE_ROUGHNESSMAP\n\tuniform sampler2D roughnessMap;\n#endif",shadowmap_pars_fragment:"#if NUM_SPOT_LIGHT_COORDS > 0\n\tvarying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ];\n#endif\n#if NUM_SPOT_LIGHT_MAPS > 0\n\tuniform sampler2D spotLightMap[ NUM_SPOT_LIGHT_MAPS ];\n#endif\n#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\tstruct DirectionalLightShadow {\n\t\t\tfloat shadowIntensity;\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform DirectionalLightShadow directionalLightShadows[ 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\tstruct SpotLightShadow {\n\t\t\tfloat shadowIntensity;\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform SpotLightShadow spotLightShadows[ 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\tstruct PointLightShadow {\n\t\t\tfloat shadowIntensity;\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t\tfloat shadowCameraNear;\n\t\t\tfloat shadowCameraFar;\n\t\t};\n\t\tuniform PointLightShadow pointLightShadows[ 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 getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowIntensity, 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\tbool inFrustum = shadowCoord.x >= 0.0 && shadowCoord.x <= 1.0 && shadowCoord.y >= 0.0 && shadowCoord.y <= 1.0;\n\t\tbool frustumTest = inFrustum && shadowCoord.z <= 1.0;\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 dx = texelSize.x;\n\t\t\tfloat dy = texelSize.y;\n\t\t\tvec2 uv = shadowCoord.xy;\n\t\t\tvec2 f = fract( uv * shadowMapSize + 0.5 );\n\t\t\tuv -= f * texelSize;\n\t\t\tshadow = (\n\t\t\t\ttexture2DCompare( shadowMap, uv, shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ),\n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ),\n\t\t\t\t\t f.x ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ),\n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ),\n\t\t\t\t\t f.x ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ),\n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t f.y ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ),\n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t f.y ) +\n\t\t\t\tmix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ),\n\t\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ),\n\t\t\t\t\t\t f.x ),\n\t\t\t\t\t mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t\t f.x ),\n\t\t\t\t\t f.y )\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 mix( 1.0, shadow, shadowIntensity );\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 shadowIntensity, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {\n\t\tfloat shadow = 1.0;\n\t\tvec3 lightToPosition = shadowCoord.xyz;\n\t\t\n\t\tfloat lightToPositionLength = length( lightToPosition );\n\t\tif ( lightToPositionLength - shadowCameraFar <= 0.0 && lightToPositionLength - shadowCameraNear >= 0.0 ) {\n\t\t\tfloat dp = ( lightToPositionLength - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear );\t\t\tdp += shadowBias;\n\t\t\tvec3 bd3D = normalize( lightToPosition );\n\t\t\tvec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );\n\t\t\t#if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM )\n\t\t\t\tvec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;\n\t\t\t\tshadow = (\n\t\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +\n\t\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +\n\t\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +\n\t\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +\n\t\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +\n\t\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +\n\t\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +\n\t\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +\n\t\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )\n\t\t\t\t) * ( 1.0 / 9.0 );\n\t\t\t#else\n\t\t\t\tshadow = texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );\n\t\t\t#endif\n\t\t}\n\t\treturn mix( 1.0, shadow, shadowIntensity );\n\t}\n#endif",shadowmap_pars_vertex:"#if NUM_SPOT_LIGHT_COORDS > 0\n\tuniform mat4 spotLightMatrix[ NUM_SPOT_LIGHT_COORDS ];\n\tvarying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ];\n#endif\n#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\tstruct DirectionalLightShadow {\n\t\t\tfloat shadowIntensity;\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\t\tstruct SpotLightShadow {\n\t\t\tfloat shadowIntensity;\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform SpotLightShadow spotLightShadows[ 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\tstruct PointLightShadow {\n\t\t\tfloat shadowIntensity;\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t\tfloat shadowCameraNear;\n\t\t\tfloat shadowCameraFar;\n\t\t};\n\t\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\n\t#endif\n#endif",shadowmap_vertex:"#if ( defined( USE_SHADOWMAP ) && ( NUM_DIR_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0 ) ) || ( NUM_SPOT_LIGHT_COORDS > 0 )\n\tvec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\n\tvec4 shadowWorldPosition;\n#endif\n#if defined( USE_SHADOWMAP )\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t\t#pragma unroll_loop_start\n\t\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\n\t\t\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 );\n\t\t\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition;\n\t\t}\n\t\t#pragma unroll_loop_end\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t\t#pragma unroll_loop_start\n\t\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\n\t\t\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 );\n\t\t\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition;\n\t\t}\n\t\t#pragma unroll_loop_end\n\t#endif\n#endif\n#if NUM_SPOT_LIGHT_COORDS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_SPOT_LIGHT_COORDS; i ++ ) {\n\t\tshadowWorldPosition = worldPosition;\n\t\t#if ( defined( USE_SHADOWMAP ) && UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\n\t\t\tshadowWorldPosition.xyz += shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias;\n\t\t#endif\n\t\tvSpotLightCoord[ i ] = spotLightMatrix[ i ] * shadowWorldPosition;\n\t}\n\t#pragma unroll_loop_end\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\tDirectionalLightShadow directionalLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\n\t\tdirectionalLight = directionalLightShadows[ i ];\n\t\tshadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowIntensity, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\tSpotLightShadow spotLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\n\t\tspotLight = spotLightShadows[ i ];\n\t\tshadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowIntensity, spotLight.shadowBias, spotLight.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\tPointLightShadow pointLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\n\t\tpointLight = pointLightShadows[ i ];\n\t\tshadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowIntensity, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\n\t}\n\t#pragma unroll_loop_end\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\tuniform highp sampler2D boneTexture;\n\tmat4 getBoneMatrix( const in float i ) {\n\t\tint size = textureSize( boneTexture, 0 ).x;\n\t\tint j = int( i ) * 4;\n\t\tint x = j % size;\n\t\tint y = j / size;\n\t\tvec4 v1 = texelFetch( boneTexture, ivec2( x, y ), 0 );\n\t\tvec4 v2 = texelFetch( boneTexture, ivec2( x + 1, y ), 0 );\n\t\tvec4 v3 = texelFetch( boneTexture, ivec2( x + 2, y ), 0 );\n\t\tvec4 v4 = texelFetch( boneTexture, ivec2( x + 3, y ), 0 );\n\t\treturn mat4( v1, v2, v3, v4 );\n\t}\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, vSpecularMapUv );\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;\nvec3 LinearToneMapping( vec3 color ) {\n\treturn saturate( toneMappingExposure * color );\n}\nvec3 ReinhardToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\treturn saturate( color / ( vec3( 1.0 ) + color ) );\n}\nvec3 CineonToneMapping( 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 RRTAndODTFit( vec3 v ) {\n\tvec3 a = v * ( v + 0.0245786 ) - 0.000090537;\n\tvec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081;\n\treturn a / b;\n}\nvec3 ACESFilmicToneMapping( vec3 color ) {\n\tconst mat3 ACESInputMat = mat3(\n\t\tvec3( 0.59719, 0.07600, 0.02840 ),\t\tvec3( 0.35458, 0.90834, 0.13383 ),\n\t\tvec3( 0.04823, 0.01566, 0.83777 )\n\t);\n\tconst mat3 ACESOutputMat = mat3(\n\t\tvec3( 1.60475, -0.10208, -0.00327 ),\t\tvec3( -0.53108, 1.10813, -0.07276 ),\n\t\tvec3( -0.07367, -0.00605, 1.07602 )\n\t);\n\tcolor *= toneMappingExposure / 0.6;\n\tcolor = ACESInputMat * color;\n\tcolor = RRTAndODTFit( color );\n\tcolor = ACESOutputMat * color;\n\treturn saturate( color );\n}\nconst mat3 LINEAR_REC2020_TO_LINEAR_SRGB = mat3(\n\tvec3( 1.6605, - 0.1246, - 0.0182 ),\n\tvec3( - 0.5876, 1.1329, - 0.1006 ),\n\tvec3( - 0.0728, - 0.0083, 1.1187 )\n);\nconst mat3 LINEAR_SRGB_TO_LINEAR_REC2020 = mat3(\n\tvec3( 0.6274, 0.0691, 0.0164 ),\n\tvec3( 0.3293, 0.9195, 0.0880 ),\n\tvec3( 0.0433, 0.0113, 0.8956 )\n);\nvec3 agxDefaultContrastApprox( vec3 x ) {\n\tvec3 x2 = x * x;\n\tvec3 x4 = x2 * x2;\n\treturn + 15.5 * x4 * x2\n\t\t- 40.14 * x4 * x\n\t\t+ 31.96 * x4\n\t\t- 6.868 * x2 * x\n\t\t+ 0.4298 * x2\n\t\t+ 0.1191 * x\n\t\t- 0.00232;\n}\nvec3 AgXToneMapping( vec3 color ) {\n\tconst mat3 AgXInsetMatrix = mat3(\n\t\tvec3( 0.856627153315983, 0.137318972929847, 0.11189821299995 ),\n\t\tvec3( 0.0951212405381588, 0.761241990602591, 0.0767994186031903 ),\n\t\tvec3( 0.0482516061458583, 0.101439036467562, 0.811302368396859 )\n\t);\n\tconst mat3 AgXOutsetMatrix = mat3(\n\t\tvec3( 1.1271005818144368, - 0.1413297634984383, - 0.14132976349843826 ),\n\t\tvec3( - 0.11060664309660323, 1.157823702216272, - 0.11060664309660294 ),\n\t\tvec3( - 0.016493938717834573, - 0.016493938717834257, 1.2519364065950405 )\n\t);\n\tconst float AgxMinEv = - 12.47393;\tconst float AgxMaxEv = 4.026069;\n\tcolor *= toneMappingExposure;\n\tcolor = LINEAR_SRGB_TO_LINEAR_REC2020 * color;\n\tcolor = AgXInsetMatrix * color;\n\tcolor = max( color, 1e-10 );\tcolor = log2( color );\n\tcolor = ( color - AgxMinEv ) / ( AgxMaxEv - AgxMinEv );\n\tcolor = clamp( color, 0.0, 1.0 );\n\tcolor = agxDefaultContrastApprox( color );\n\tcolor = AgXOutsetMatrix * color;\n\tcolor = pow( max( vec3( 0.0 ), color ), vec3( 2.2 ) );\n\tcolor = LINEAR_REC2020_TO_LINEAR_SRGB * color;\n\tcolor = clamp( color, 0.0, 1.0 );\n\treturn color;\n}\nvec3 NeutralToneMapping( vec3 color ) {\n\tconst float StartCompression = 0.8 - 0.04;\n\tconst float Desaturation = 0.15;\n\tcolor *= toneMappingExposure;\n\tfloat x = min( color.r, min( color.g, color.b ) );\n\tfloat offset = x < 0.08 ? x - 6.25 * x * x : 0.04;\n\tcolor -= offset;\n\tfloat peak = max( color.r, max( color.g, color.b ) );\n\tif ( peak < StartCompression ) return color;\n\tfloat d = 1. - StartCompression;\n\tfloat newPeak = 1. - d * d / ( peak + d - StartCompression );\n\tcolor *= newPeak / peak;\n\tfloat g = 1. - 1. / ( Desaturation * ( peak - newPeak ) + 1. );\n\treturn mix( color, vec3( newPeak ), g );\n}\nvec3 CustomToneMapping( vec3 color ) { return color; }",transmission_fragment:"#ifdef USE_TRANSMISSION\n\tmaterial.transmission = transmission;\n\tmaterial.transmissionAlpha = 1.0;\n\tmaterial.thickness = thickness;\n\tmaterial.attenuationDistance = attenuationDistance;\n\tmaterial.attenuationColor = attenuationColor;\n\t#ifdef USE_TRANSMISSIONMAP\n\t\tmaterial.transmission *= texture2D( transmissionMap, vTransmissionMapUv ).r;\n\t#endif\n\t#ifdef USE_THICKNESSMAP\n\t\tmaterial.thickness *= texture2D( thicknessMap, vThicknessMapUv ).g;\n\t#endif\n\tvec3 pos = vWorldPosition;\n\tvec3 v = normalize( cameraPosition - pos );\n\tvec3 n = inverseTransformDirection( normal, viewMatrix );\n\tvec4 transmitted = getIBLVolumeRefraction(\n\t\tn, v, material.roughness, material.diffuseColor, material.specularColor, material.specularF90,\n\t\tpos, modelMatrix, viewMatrix, projectionMatrix, material.dispersion, material.ior, material.thickness,\n\t\tmaterial.attenuationColor, material.attenuationDistance );\n\tmaterial.transmissionAlpha = mix( material.transmissionAlpha, transmitted.a, material.transmission );\n\ttotalDiffuse = mix( totalDiffuse, transmitted.rgb, material.transmission );\n#endif",transmission_pars_fragment:"#ifdef USE_TRANSMISSION\n\tuniform float transmission;\n\tuniform float thickness;\n\tuniform float attenuationDistance;\n\tuniform vec3 attenuationColor;\n\t#ifdef USE_TRANSMISSIONMAP\n\t\tuniform sampler2D transmissionMap;\n\t#endif\n\t#ifdef USE_THICKNESSMAP\n\t\tuniform sampler2D thicknessMap;\n\t#endif\n\tuniform vec2 transmissionSamplerSize;\n\tuniform sampler2D transmissionSamplerMap;\n\tuniform mat4 modelMatrix;\n\tuniform mat4 projectionMatrix;\n\tvarying vec3 vWorldPosition;\n\tfloat w0( float a ) {\n\t\treturn ( 1.0 / 6.0 ) * ( a * ( a * ( - a + 3.0 ) - 3.0 ) + 1.0 );\n\t}\n\tfloat w1( float a ) {\n\t\treturn ( 1.0 / 6.0 ) * ( a * a * ( 3.0 * a - 6.0 ) + 4.0 );\n\t}\n\tfloat w2( float a ){\n\t\treturn ( 1.0 / 6.0 ) * ( a * ( a * ( - 3.0 * a + 3.0 ) + 3.0 ) + 1.0 );\n\t}\n\tfloat w3( float a ) {\n\t\treturn ( 1.0 / 6.0 ) * ( a * a * a );\n\t}\n\tfloat g0( float a ) {\n\t\treturn w0( a ) + w1( a );\n\t}\n\tfloat g1( float a ) {\n\t\treturn w2( a ) + w3( a );\n\t}\n\tfloat h0( float a ) {\n\t\treturn - 1.0 + w1( a ) / ( w0( a ) + w1( a ) );\n\t}\n\tfloat h1( float a ) {\n\t\treturn 1.0 + w3( a ) / ( w2( a ) + w3( a ) );\n\t}\n\tvec4 bicubic( sampler2D tex, vec2 uv, vec4 texelSize, float lod ) {\n\t\tuv = uv * texelSize.zw + 0.5;\n\t\tvec2 iuv = floor( uv );\n\t\tvec2 fuv = fract( uv );\n\t\tfloat g0x = g0( fuv.x );\n\t\tfloat g1x = g1( fuv.x );\n\t\tfloat h0x = h0( fuv.x );\n\t\tfloat h1x = h1( fuv.x );\n\t\tfloat h0y = h0( fuv.y );\n\t\tfloat h1y = h1( fuv.y );\n\t\tvec2 p0 = ( vec2( iuv.x + h0x, iuv.y + h0y ) - 0.5 ) * texelSize.xy;\n\t\tvec2 p1 = ( vec2( iuv.x + h1x, iuv.y + h0y ) - 0.5 ) * texelSize.xy;\n\t\tvec2 p2 = ( vec2( iuv.x + h0x, iuv.y + h1y ) - 0.5 ) * texelSize.xy;\n\t\tvec2 p3 = ( vec2( iuv.x + h1x, iuv.y + h1y ) - 0.5 ) * texelSize.xy;\n\t\treturn g0( fuv.y ) * ( g0x * textureLod( tex, p0, lod ) + g1x * textureLod( tex, p1, lod ) ) +\n\t\t\tg1( fuv.y ) * ( g0x * textureLod( tex, p2, lod ) + g1x * textureLod( tex, p3, lod ) );\n\t}\n\tvec4 textureBicubic( sampler2D sampler, vec2 uv, float lod ) {\n\t\tvec2 fLodSize = vec2( textureSize( sampler, int( lod ) ) );\n\t\tvec2 cLodSize = vec2( textureSize( sampler, int( lod + 1.0 ) ) );\n\t\tvec2 fLodSizeInv = 1.0 / fLodSize;\n\t\tvec2 cLodSizeInv = 1.0 / cLodSize;\n\t\tvec4 fSample = bicubic( sampler, uv, vec4( fLodSizeInv, fLodSize ), floor( lod ) );\n\t\tvec4 cSample = bicubic( sampler, uv, vec4( cLodSizeInv, cLodSize ), ceil( lod ) );\n\t\treturn mix( fSample, cSample, fract( lod ) );\n\t}\n\tvec3 getVolumeTransmissionRay( const in vec3 n, const in vec3 v, const in float thickness, const in float ior, const in mat4 modelMatrix ) {\n\t\tvec3 refractionVector = refract( - v, normalize( n ), 1.0 / ior );\n\t\tvec3 modelScale;\n\t\tmodelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) );\n\t\tmodelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) );\n\t\tmodelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) );\n\t\treturn normalize( refractionVector ) * thickness * modelScale;\n\t}\n\tfloat applyIorToRoughness( const in float roughness, const in float ior ) {\n\t\treturn roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 );\n\t}\n\tvec4 getTransmissionSample( const in vec2 fragCoord, const in float roughness, const in float ior ) {\n\t\tfloat lod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior );\n\t\treturn textureBicubic( transmissionSamplerMap, fragCoord.xy, lod );\n\t}\n\tvec3 volumeAttenuation( const in float transmissionDistance, const in vec3 attenuationColor, const in float attenuationDistance ) {\n\t\tif ( isinf( attenuationDistance ) ) {\n\t\t\treturn vec3( 1.0 );\n\t\t} else {\n\t\t\tvec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance;\n\t\t\tvec3 transmittance = exp( - attenuationCoefficient * transmissionDistance );\t\t\treturn transmittance;\n\t\t}\n\t}\n\tvec4 getIBLVolumeRefraction( const in vec3 n, const in vec3 v, const in float roughness, const in vec3 diffuseColor,\n\t\tconst in vec3 specularColor, const in float specularF90, const in vec3 position, const in mat4 modelMatrix,\n\t\tconst in mat4 viewMatrix, const in mat4 projMatrix, const in float dispersion, const in float ior, const in float thickness,\n\t\tconst in vec3 attenuationColor, const in float attenuationDistance ) {\n\t\tvec4 transmittedLight;\n\t\tvec3 transmittance;\n\t\t#ifdef USE_DISPERSION\n\t\t\tfloat halfSpread = ( ior - 1.0 ) * 0.025 * dispersion;\n\t\t\tvec3 iors = vec3( ior - halfSpread, ior, ior + halfSpread );\n\t\t\tfor ( int i = 0; i < 3; i ++ ) {\n\t\t\t\tvec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, iors[ i ], modelMatrix );\n\t\t\t\tvec3 refractedRayExit = position + transmissionRay;\n\t\t\t\tvec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 );\n\t\t\t\tvec2 refractionCoords = ndcPos.xy / ndcPos.w;\n\t\t\t\trefractionCoords += 1.0;\n\t\t\t\trefractionCoords /= 2.0;\n\t\t\t\tvec4 transmissionSample = getTransmissionSample( refractionCoords, roughness, iors[ i ] );\n\t\t\t\ttransmittedLight[ i ] = transmissionSample[ i ];\n\t\t\t\ttransmittedLight.a += transmissionSample.a;\n\t\t\t\ttransmittance[ i ] = diffuseColor[ i ] * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance )[ i ];\n\t\t\t}\n\t\t\ttransmittedLight.a /= 3.0;\n\t\t#else\n\t\t\tvec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );\n\t\t\tvec3 refractedRayExit = position + transmissionRay;\n\t\t\tvec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 );\n\t\t\tvec2 refractionCoords = ndcPos.xy / ndcPos.w;\n\t\t\trefractionCoords += 1.0;\n\t\t\trefractionCoords /= 2.0;\n\t\t\ttransmittedLight = getTransmissionSample( refractionCoords, roughness, ior );\n\t\t\ttransmittance = diffuseColor * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance );\n\t\t#endif\n\t\tvec3 attenuatedColor = transmittance * transmittedLight.rgb;\n\t\tvec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness );\n\t\tfloat transmittanceFactor = ( transmittance.r + transmittance.g + transmittance.b ) / 3.0;\n\t\treturn vec4( ( 1.0 - F ) * attenuatedColor, 1.0 - ( 1.0 - transmittedLight.a ) * transmittanceFactor );\n\t}\n#endif",uv_pars_fragment:"#if defined( USE_UV ) || defined( USE_ANISOTROPY )\n\tvarying vec2 vUv;\n#endif\n#ifdef USE_MAP\n\tvarying vec2 vMapUv;\n#endif\n#ifdef USE_ALPHAMAP\n\tvarying vec2 vAlphaMapUv;\n#endif\n#ifdef USE_LIGHTMAP\n\tvarying vec2 vLightMapUv;\n#endif\n#ifdef USE_AOMAP\n\tvarying vec2 vAoMapUv;\n#endif\n#ifdef USE_BUMPMAP\n\tvarying vec2 vBumpMapUv;\n#endif\n#ifdef USE_NORMALMAP\n\tvarying vec2 vNormalMapUv;\n#endif\n#ifdef USE_EMISSIVEMAP\n\tvarying vec2 vEmissiveMapUv;\n#endif\n#ifdef USE_METALNESSMAP\n\tvarying vec2 vMetalnessMapUv;\n#endif\n#ifdef USE_ROUGHNESSMAP\n\tvarying vec2 vRoughnessMapUv;\n#endif\n#ifdef USE_ANISOTROPYMAP\n\tvarying vec2 vAnisotropyMapUv;\n#endif\n#ifdef USE_CLEARCOATMAP\n\tvarying vec2 vClearcoatMapUv;\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n\tvarying vec2 vClearcoatNormalMapUv;\n#endif\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n\tvarying vec2 vClearcoatRoughnessMapUv;\n#endif\n#ifdef USE_IRIDESCENCEMAP\n\tvarying vec2 vIridescenceMapUv;\n#endif\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\n\tvarying vec2 vIridescenceThicknessMapUv;\n#endif\n#ifdef USE_SHEEN_COLORMAP\n\tvarying vec2 vSheenColorMapUv;\n#endif\n#ifdef USE_SHEEN_ROUGHNESSMAP\n\tvarying vec2 vSheenRoughnessMapUv;\n#endif\n#ifdef USE_SPECULARMAP\n\tvarying vec2 vSpecularMapUv;\n#endif\n#ifdef USE_SPECULAR_COLORMAP\n\tvarying vec2 vSpecularColorMapUv;\n#endif\n#ifdef USE_SPECULAR_INTENSITYMAP\n\tvarying vec2 vSpecularIntensityMapUv;\n#endif\n#ifdef USE_TRANSMISSIONMAP\n\tuniform mat3 transmissionMapTransform;\n\tvarying vec2 vTransmissionMapUv;\n#endif\n#ifdef USE_THICKNESSMAP\n\tuniform mat3 thicknessMapTransform;\n\tvarying vec2 vThicknessMapUv;\n#endif",uv_pars_vertex:"#if defined( USE_UV ) || defined( USE_ANISOTROPY )\n\tvarying vec2 vUv;\n#endif\n#ifdef USE_MAP\n\tuniform mat3 mapTransform;\n\tvarying vec2 vMapUv;\n#endif\n#ifdef USE_ALPHAMAP\n\tuniform mat3 alphaMapTransform;\n\tvarying vec2 vAlphaMapUv;\n#endif\n#ifdef USE_LIGHTMAP\n\tuniform mat3 lightMapTransform;\n\tvarying vec2 vLightMapUv;\n#endif\n#ifdef USE_AOMAP\n\tuniform mat3 aoMapTransform;\n\tvarying vec2 vAoMapUv;\n#endif\n#ifdef USE_BUMPMAP\n\tuniform mat3 bumpMapTransform;\n\tvarying vec2 vBumpMapUv;\n#endif\n#ifdef USE_NORMALMAP\n\tuniform mat3 normalMapTransform;\n\tvarying vec2 vNormalMapUv;\n#endif\n#ifdef USE_DISPLACEMENTMAP\n\tuniform mat3 displacementMapTransform;\n\tvarying vec2 vDisplacementMapUv;\n#endif\n#ifdef USE_EMISSIVEMAP\n\tuniform mat3 emissiveMapTransform;\n\tvarying vec2 vEmissiveMapUv;\n#endif\n#ifdef USE_METALNESSMAP\n\tuniform mat3 metalnessMapTransform;\n\tvarying vec2 vMetalnessMapUv;\n#endif\n#ifdef USE_ROUGHNESSMAP\n\tuniform mat3 roughnessMapTransform;\n\tvarying vec2 vRoughnessMapUv;\n#endif\n#ifdef USE_ANISOTROPYMAP\n\tuniform mat3 anisotropyMapTransform;\n\tvarying vec2 vAnisotropyMapUv;\n#endif\n#ifdef USE_CLEARCOATMAP\n\tuniform mat3 clearcoatMapTransform;\n\tvarying vec2 vClearcoatMapUv;\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n\tuniform mat3 clearcoatNormalMapTransform;\n\tvarying vec2 vClearcoatNormalMapUv;\n#endif\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n\tuniform mat3 clearcoatRoughnessMapTransform;\n\tvarying vec2 vClearcoatRoughnessMapUv;\n#endif\n#ifdef USE_SHEEN_COLORMAP\n\tuniform mat3 sheenColorMapTransform;\n\tvarying vec2 vSheenColorMapUv;\n#endif\n#ifdef USE_SHEEN_ROUGHNESSMAP\n\tuniform mat3 sheenRoughnessMapTransform;\n\tvarying vec2 vSheenRoughnessMapUv;\n#endif\n#ifdef USE_IRIDESCENCEMAP\n\tuniform mat3 iridescenceMapTransform;\n\tvarying vec2 vIridescenceMapUv;\n#endif\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\n\tuniform mat3 iridescenceThicknessMapTransform;\n\tvarying vec2 vIridescenceThicknessMapUv;\n#endif\n#ifdef USE_SPECULARMAP\n\tuniform mat3 specularMapTransform;\n\tvarying vec2 vSpecularMapUv;\n#endif\n#ifdef USE_SPECULAR_COLORMAP\n\tuniform mat3 specularColorMapTransform;\n\tvarying vec2 vSpecularColorMapUv;\n#endif\n#ifdef USE_SPECULAR_INTENSITYMAP\n\tuniform mat3 specularIntensityMapTransform;\n\tvarying vec2 vSpecularIntensityMapUv;\n#endif\n#ifdef USE_TRANSMISSIONMAP\n\tuniform mat3 transmissionMapTransform;\n\tvarying vec2 vTransmissionMapUv;\n#endif\n#ifdef USE_THICKNESSMAP\n\tuniform mat3 thicknessMapTransform;\n\tvarying vec2 vThicknessMapUv;\n#endif",uv_vertex:"#if defined( USE_UV ) || defined( USE_ANISOTROPY )\n\tvUv = vec3( uv, 1 ).xy;\n#endif\n#ifdef USE_MAP\n\tvMapUv = ( mapTransform * vec3( MAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_ALPHAMAP\n\tvAlphaMapUv = ( alphaMapTransform * vec3( ALPHAMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_LIGHTMAP\n\tvLightMapUv = ( lightMapTransform * vec3( LIGHTMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_AOMAP\n\tvAoMapUv = ( aoMapTransform * vec3( AOMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_BUMPMAP\n\tvBumpMapUv = ( bumpMapTransform * vec3( BUMPMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_NORMALMAP\n\tvNormalMapUv = ( normalMapTransform * vec3( NORMALMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_DISPLACEMENTMAP\n\tvDisplacementMapUv = ( displacementMapTransform * vec3( DISPLACEMENTMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_EMISSIVEMAP\n\tvEmissiveMapUv = ( emissiveMapTransform * vec3( EMISSIVEMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_METALNESSMAP\n\tvMetalnessMapUv = ( metalnessMapTransform * vec3( METALNESSMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_ROUGHNESSMAP\n\tvRoughnessMapUv = ( roughnessMapTransform * vec3( ROUGHNESSMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_ANISOTROPYMAP\n\tvAnisotropyMapUv = ( anisotropyMapTransform * vec3( ANISOTROPYMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_CLEARCOATMAP\n\tvClearcoatMapUv = ( clearcoatMapTransform * vec3( CLEARCOATMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n\tvClearcoatNormalMapUv = ( clearcoatNormalMapTransform * vec3( CLEARCOAT_NORMALMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n\tvClearcoatRoughnessMapUv = ( clearcoatRoughnessMapTransform * vec3( CLEARCOAT_ROUGHNESSMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_IRIDESCENCEMAP\n\tvIridescenceMapUv = ( iridescenceMapTransform * vec3( IRIDESCENCEMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\n\tvIridescenceThicknessMapUv = ( iridescenceThicknessMapTransform * vec3( IRIDESCENCE_THICKNESSMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_SHEEN_COLORMAP\n\tvSheenColorMapUv = ( sheenColorMapTransform * vec3( SHEEN_COLORMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_SHEEN_ROUGHNESSMAP\n\tvSheenRoughnessMapUv = ( sheenRoughnessMapTransform * vec3( SHEEN_ROUGHNESSMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_SPECULARMAP\n\tvSpecularMapUv = ( specularMapTransform * vec3( SPECULARMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_SPECULAR_COLORMAP\n\tvSpecularColorMapUv = ( specularColorMapTransform * vec3( SPECULAR_COLORMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_SPECULAR_INTENSITYMAP\n\tvSpecularIntensityMapUv = ( specularIntensityMapTransform * vec3( SPECULAR_INTENSITYMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_TRANSMISSIONMAP\n\tvTransmissionMapUv = ( transmissionMapTransform * vec3( TRANSMISSIONMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_THICKNESSMAP\n\tvThicknessMapUv = ( thicknessMapTransform * vec3( THICKNESSMAP_UV, 1 ) ).xy;\n#endif",worldpos_vertex:"#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION ) || NUM_SPOT_LIGHT_COORDS > 0\n\tvec4 worldPosition = vec4( transformed, 1.0 );\n\t#ifdef USE_BATCHING\n\t\tworldPosition = batchingMatrix * worldPosition;\n\t#endif\n\t#ifdef USE_INSTANCING\n\t\tworldPosition = instanceMatrix * worldPosition;\n\t#endif\n\tworldPosition = modelMatrix * worldPosition;\n#endif",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}",background_frag:"uniform sampler2D t2D;\nuniform float backgroundIntensity;\nvarying vec2 vUv;\nvoid main() {\n\tvec4 texColor = texture2D( t2D, vUv );\n\t#ifdef DECODE_VIDEO_TEXTURE\n\t\ttexColor = vec4( mix( pow( texColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), texColor.rgb * 0.0773993808, vec3( lessThanEqual( texColor.rgb, vec3( 0.04045 ) ) ) ), texColor.w );\n\t#endif\n\ttexColor.rgb *= backgroundIntensity;\n\tgl_FragColor = texColor;\n\t#include <tonemapping_fragment>\n\t#include <colorspace_fragment>\n}",backgroundCube_vert:"varying vec3 vWorldDirection;\n#include <common>\nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include <begin_vertex>\n\t#include <project_vertex>\n\tgl_Position.z = gl_Position.w;\n}",backgroundCube_frag:"#ifdef ENVMAP_TYPE_CUBE\n\tuniform samplerCube envMap;\n#elif defined( ENVMAP_TYPE_CUBE_UV )\n\tuniform sampler2D envMap;\n#endif\nuniform float flipEnvMap;\nuniform float backgroundBlurriness;\nuniform float backgroundIntensity;\nuniform mat3 backgroundRotation;\nvarying vec3 vWorldDirection;\n#include <cube_uv_reflection_fragment>\nvoid main() {\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tvec4 texColor = textureCube( envMap, backgroundRotation * vec3( flipEnvMap * vWorldDirection.x, vWorldDirection.yz ) );\n\t#elif defined( ENVMAP_TYPE_CUBE_UV )\n\t\tvec4 texColor = textureCubeUV( envMap, backgroundRotation * vWorldDirection, backgroundBlurriness );\n\t#else\n\t\tvec4 texColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t#endif\n\ttexColor.rgb *= backgroundIntensity;\n\tgl_FragColor = texColor;\n\t#include <tonemapping_fragment>\n\t#include <colorspace_fragment>\n}",cube_vert:"varying vec3 vWorldDirection;\n#include <common>\nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include <begin_vertex>\n\t#include <project_vertex>\n\tgl_Position.z = gl_Position.w;\n}",cube_frag:"uniform samplerCube tCube;\nuniform float tFlip;\nuniform float opacity;\nvarying vec3 vWorldDirection;\nvoid main() {\n\tvec4 texColor = textureCube( tCube, vec3( tFlip * vWorldDirection.x, vWorldDirection.yz ) );\n\tgl_FragColor = texColor;\n\tgl_FragColor.a *= opacity;\n\t#include <tonemapping_fragment>\n\t#include <colorspace_fragment>\n}",depth_vert:"#include <common>\n#include <batching_pars_vertex>\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvarying vec2 vHighPrecisionZW;\nvoid main() {\n\t#include <uv_vertex>\n\t#include <batching_vertex>\n\t#include <skinbase_vertex>\n\t#include <morphinstance_vertex>\n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include <beginnormal_vertex>\n\t\t#include <morphnormal_vertex>\n\t\t#include <skinnormal_vertex>\n\t#endif\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\tvHighPrecisionZW = gl_Position.zw;\n}",depth_frag:"#if DEPTH_PACKING == 3200\n\tuniform float opacity;\n#endif\n#include <common>\n#include <packing>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <alphahash_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvarying vec2 vHighPrecisionZW;\nvoid main() {\n\tvec4 diffuseColor = vec4( 1.0 );\n\t#include <clipping_planes_fragment>\n\t#if DEPTH_PACKING == 3200\n\t\tdiffuseColor.a = opacity;\n\t#endif\n\t#include <map_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <alphahash_fragment>\n\t#include <logdepthbuf_fragment>\n\tfloat fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5;\n\t#if DEPTH_PACKING == 3200\n\t\tgl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );\n\t#elif DEPTH_PACKING == 3201\n\t\tgl_FragColor = packDepthToRGBA( fragCoordZ );\n\t#elif DEPTH_PACKING == 3202\n\t\tgl_FragColor = vec4( packDepthToRGB( fragCoordZ ), 1.0 );\n\t#elif DEPTH_PACKING == 3203\n\t\tgl_FragColor = vec4( packDepthToRG( fragCoordZ ), 0.0, 1.0 );\n\t#endif\n}",distanceRGBA_vert:"#define DISTANCE\nvarying vec3 vWorldPosition;\n#include <common>\n#include <batching_pars_vertex>\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <batching_vertex>\n\t#include <skinbase_vertex>\n\t#include <morphinstance_vertex>\n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include <beginnormal_vertex>\n\t\t#include <morphnormal_vertex>\n\t\t#include <skinnormal_vertex>\n\t#endif\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <worldpos_vertex>\n\t#include <clipping_planes_vertex>\n\tvWorldPosition = worldPosition.xyz;\n}",distanceRGBA_frag:"#define DISTANCE\nuniform vec3 referencePosition;\nuniform float nearDistance;\nuniform float farDistance;\nvarying vec3 vWorldPosition;\n#include <common>\n#include <packing>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <alphahash_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main () {\n\tvec4 diffuseColor = vec4( 1.0 );\n\t#include <clipping_planes_fragment>\n\t#include <map_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <alphahash_fragment>\n\tfloat dist = length( vWorldPosition - referencePosition );\n\tdist = ( dist - nearDistance ) / ( farDistance - nearDistance );\n\tdist = saturate( dist );\n\tgl_FragColor = packDepthToRGBA( dist );\n}",equirect_vert:"varying vec3 vWorldDirection;\n#include <common>\nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include <begin_vertex>\n\t#include <project_vertex>\n}",equirect_frag:"uniform sampler2D tEquirect;\nvarying vec3 vWorldDirection;\n#include <common>\nvoid main() {\n\tvec3 direction = normalize( vWorldDirection );\n\tvec2 sampleUV = equirectUv( direction );\n\tgl_FragColor = texture2D( tEquirect, sampleUV );\n\t#include <tonemapping_fragment>\n\t#include <colorspace_fragment>\n}",linedashed_vert:"uniform float scale;\nattribute float lineDistance;\nvarying float vLineDistance;\n#include <common>\n#include <uv_pars_vertex>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\tvLineDistance = scale * lineDistance;\n\t#include <uv_vertex>\n\t#include <color_vertex>\n\t#include <morphinstance_vertex>\n\t#include <morphcolor_vertex>\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\t#include <fog_vertex>\n}",linedashed_frag:"uniform vec3 diffuse;\nuniform float opacity;\nuniform float dashSize;\nuniform float totalSize;\nvarying float vLineDistance;\n#include <common>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <fog_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include <clipping_planes_fragment>\n\tif ( mod( vLineDistance, totalSize ) > dashSize ) {\n\t\tdiscard;\n\t}\n\tvec3 outgoingLight = vec3( 0.0 );\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <color_fragment>\n\toutgoingLight = diffuseColor.rgb;\n\t#include <opaque_fragment>\n\t#include <tonemapping_fragment>\n\t#include <colorspace_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n}",meshbasic_vert:"#include <common>\n#include <batching_pars_vertex>\n#include <uv_pars_vertex>\n#include <envmap_pars_vertex>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <color_vertex>\n\t#include <morphinstance_vertex>\n\t#include <morphcolor_vertex>\n\t#include <batching_vertex>\n\t#if defined ( USE_ENVMAP ) || defined ( USE_SKINNING )\n\t\t#include <beginnormal_vertex>\n\t\t#include <morphnormal_vertex>\n\t\t#include <skinbase_vertex>\n\t\t#include <skinnormal_vertex>\n\t\t#include <defaultnormal_vertex>\n\t#endif\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\t#include <worldpos_vertex>\n\t#include <envmap_vertex>\n\t#include <fog_vertex>\n}",meshbasic_frag:"uniform vec3 diffuse;\nuniform float opacity;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include <common>\n#include <dithering_pars_fragment>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <alphahash_pars_fragment>\n#include <aomap_pars_fragment>\n#include <lightmap_pars_fragment>\n#include <envmap_common_pars_fragment>\n#include <envmap_pars_fragment>\n#include <fog_pars_fragment>\n#include <specularmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include <clipping_planes_fragment>\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <color_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <alphahash_fragment>\n\t#include <specularmap_fragment>\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\t#ifdef USE_LIGHTMAP\n\t\tvec4 lightMapTexel = texture2D( lightMap, vLightMapUv );\n\t\treflectedLight.indirectDiffuse += lightMapTexel.rgb * lightMapIntensity * RECIPROCAL_PI;\n\t#else\n\t\treflectedLight.indirectDiffuse += vec3( 1.0 );\n\t#endif\n\t#include <aomap_fragment>\n\treflectedLight.indirectDiffuse *= diffuseColor.rgb;\n\tvec3 outgoingLight = reflectedLight.indirectDiffuse;\n\t#include <envmap_fragment>\n\t#include <opaque_fragment>\n\t#include <tonemapping_fragment>\n\t#include <colorspace_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n\t#include <dithering_fragment>\n}",meshlambert_vert:"#define LAMBERT\nvarying vec3 vViewPosition;\n#include <common>\n#include <batching_pars_vertex>\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <envmap_pars_vertex>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <normal_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <shadowmap_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <color_vertex>\n\t#include <morphinstance_vertex>\n\t#include <morphcolor_vertex>\n\t#include <batching_vertex>\n\t#include <beginnormal_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinbase_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n\t#include <normal_vertex>\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\tvViewPosition = - mvPosition.xyz;\n\t#include <worldpos_vertex>\n\t#include <envmap_vertex>\n\t#include <shadowmap_vertex>\n\t#include <fog_vertex>\n}",meshlambert_frag:"#define LAMBERT\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float opacity;\n#include <common>\n#include <packing>\n#include <dithering_pars_fragment>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <alphahash_pars_fragment>\n#include <aomap_pars_fragment>\n#include <lightmap_pars_fragment>\n#include <emissivemap_pars_fragment>\n#include <envmap_common_pars_fragment>\n#include <envmap_pars_fragment>\n#include <fog_pars_fragment>\n#include <bsdfs>\n#include <lights_pars_begin>\n#include <normal_pars_fragment>\n#include <lights_lambert_pars_fragment>\n#include <shadowmap_pars_fragment>\n#include <bumpmap_pars_fragment>\n#include <normalmap_pars_fragment>\n#include <specularmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include <clipping_planes_fragment>\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <color_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <alphahash_fragment>\n\t#include <specularmap_fragment>\n\t#include <normal_fragment_begin>\n\t#include <normal_fragment_maps>\n\t#include <emissivemap_fragment>\n\t#include <lights_lambert_fragment>\n\t#include <lights_fragment_begin>\n\t#include <lights_fragment_maps>\n\t#include <lights_fragment_end>\n\t#include <aomap_fragment>\n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\n\t#include <envmap_fragment>\n\t#include <opaque_fragment>\n\t#include <tonemapping_fragment>\n\t#include <colorspace_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n\t#include <dithering_fragment>\n}",meshmatcap_vert:"#define MATCAP\nvarying vec3 vViewPosition;\n#include <common>\n#include <batching_pars_vertex>\n#include <uv_pars_vertex>\n#include <color_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <fog_pars_vertex>\n#include <normal_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <color_vertex>\n\t#include <morphinstance_vertex>\n\t#include <morphcolor_vertex>\n\t#include <batching_vertex>\n\t#include <beginnormal_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinbase_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n\t#include <normal_vertex>\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\t#include <fog_vertex>\n\tvViewPosition = - mvPosition.xyz;\n}",meshmatcap_frag:"#define MATCAP\nuniform vec3 diffuse;\nuniform float opacity;\nuniform sampler2D matcap;\nvarying vec3 vViewPosition;\n#include <common>\n#include <dithering_pars_fragment>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <alphahash_pars_fragment>\n#include <fog_pars_fragment>\n#include <normal_pars_fragment>\n#include <bumpmap_pars_fragment>\n#include <normalmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include <clipping_planes_fragment>\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <color_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <alphahash_fragment>\n\t#include <normal_fragment_begin>\n\t#include <normal_fragment_maps>\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#else\n\t\tvec4 matcapColor = vec4( vec3( mix( 0.2, 0.8, uv.y ) ), 1.0 );\n\t#endif\n\tvec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb;\n\t#include <opaque_fragment>\n\t#include <tonemapping_fragment>\n\t#include <colorspace_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n\t#include <dithering_fragment>\n}",meshnormal_vert:"#define NORMAL\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )\n\tvarying vec3 vViewPosition;\n#endif\n#include <common>\n#include <batching_pars_vertex>\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <normal_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <batching_vertex>\n\t#include <beginnormal_vertex>\n\t#include <morphinstance_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinbase_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n\t#include <normal_vertex>\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )\n\tvViewPosition = - mvPosition.xyz;\n#endif\n}",meshnormal_frag:"#define NORMAL\nuniform float opacity;\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )\n\tvarying vec3 vViewPosition;\n#endif\n#include <packing>\n#include <uv_pars_fragment>\n#include <normal_pars_fragment>\n#include <bumpmap_pars_fragment>\n#include <normalmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\tvec4 diffuseColor = vec4( 0.0, 0.0, 0.0, opacity );\n\t#include <clipping_planes_fragment>\n\t#include <logdepthbuf_fragment>\n\t#include <normal_fragment_begin>\n\t#include <normal_fragment_maps>\n\tgl_FragColor = vec4( packNormalToRGB( normal ), diffuseColor.a );\n\t#ifdef OPAQUE\n\t\tgl_FragColor.a = 1.0;\n\t#endif\n}",meshphong_vert:"#define PHONG\nvarying vec3 vViewPosition;\n#include <common>\n#include <batching_pars_vertex>\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <envmap_pars_vertex>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <normal_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <shadowmap_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <color_vertex>\n\t#include <morphcolor_vertex>\n\t#include <batching_vertex>\n\t#include <beginnormal_vertex>\n\t#include <morphinstance_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinbase_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n\t#include <normal_vertex>\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\tvViewPosition = - mvPosition.xyz;\n\t#include <worldpos_vertex>\n\t#include <envmap_vertex>\n\t#include <shadowmap_vertex>\n\t#include <fog_vertex>\n}",meshphong_frag:"#define PHONG\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform vec3 specular;\nuniform float shininess;\nuniform float opacity;\n#include <common>\n#include <packing>\n#include <dithering_pars_fragment>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <alphahash_pars_fragment>\n#include <aomap_pars_fragment>\n#include <lightmap_pars_fragment>\n#include <emissivemap_pars_fragment>\n#include <envmap_common_pars_fragment>\n#include <envmap_pars_fragment>\n#include <fog_pars_fragment>\n#include <bsdfs>\n#include <lights_pars_begin>\n#include <normal_pars_fragment>\n#include <lights_phong_pars_fragment>\n#include <shadowmap_pars_fragment>\n#include <bumpmap_pars_fragment>\n#include <normalmap_pars_fragment>\n#include <specularmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include <clipping_planes_fragment>\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <color_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <alphahash_fragment>\n\t#include <specularmap_fragment>\n\t#include <normal_fragment_begin>\n\t#include <normal_fragment_maps>\n\t#include <emissivemap_fragment>\n\t#include <lights_phong_fragment>\n\t#include <lights_fragment_begin>\n\t#include <lights_fragment_maps>\n\t#include <lights_fragment_end>\n\t#include <aomap_fragment>\n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\n\t#include <envmap_fragment>\n\t#include <opaque_fragment>\n\t#include <tonemapping_fragment>\n\t#include <colorspace_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n\t#include <dithering_fragment>\n}",meshphysical_vert:"#define STANDARD\nvarying vec3 vViewPosition;\n#ifdef USE_TRANSMISSION\n\tvarying vec3 vWorldPosition;\n#endif\n#include <common>\n#include <batching_pars_vertex>\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <normal_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <shadowmap_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <color_vertex>\n\t#include <morphinstance_vertex>\n\t#include <morphcolor_vertex>\n\t#include <batching_vertex>\n\t#include <beginnormal_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinbase_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n\t#include <normal_vertex>\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\tvViewPosition = - mvPosition.xyz;\n\t#include <worldpos_vertex>\n\t#include <shadowmap_vertex>\n\t#include <fog_vertex>\n#ifdef USE_TRANSMISSION\n\tvWorldPosition = worldPosition.xyz;\n#endif\n}",meshphysical_frag:"#define STANDARD\n#ifdef PHYSICAL\n\t#define IOR\n\t#define USE_SPECULAR\n#endif\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float roughness;\nuniform float metalness;\nuniform float opacity;\n#ifdef IOR\n\tuniform float ior;\n#endif\n#ifdef USE_SPECULAR\n\tuniform float specularIntensity;\n\tuniform vec3 specularColor;\n\t#ifdef USE_SPECULAR_COLORMAP\n\t\tuniform sampler2D specularColorMap;\n\t#endif\n\t#ifdef USE_SPECULAR_INTENSITYMAP\n\t\tuniform sampler2D specularIntensityMap;\n\t#endif\n#endif\n#ifdef USE_CLEARCOAT\n\tuniform float clearcoat;\n\tuniform float clearcoatRoughness;\n#endif\n#ifdef USE_DISPERSION\n\tuniform float dispersion;\n#endif\n#ifdef USE_IRIDESCENCE\n\tuniform float iridescence;\n\tuniform float iridescenceIOR;\n\tuniform float iridescenceThicknessMinimum;\n\tuniform float iridescenceThicknessMaximum;\n#endif\n#ifdef USE_SHEEN\n\tuniform vec3 sheenColor;\n\tuniform float sheenRoughness;\n\t#ifdef USE_SHEEN_COLORMAP\n\t\tuniform sampler2D sheenColorMap;\n\t#endif\n\t#ifdef USE_SHEEN_ROUGHNESSMAP\n\t\tuniform sampler2D sheenRoughnessMap;\n\t#endif\n#endif\n#ifdef USE_ANISOTROPY\n\tuniform vec2 anisotropyVector;\n\t#ifdef USE_ANISOTROPYMAP\n\t\tuniform sampler2D anisotropyMap;\n\t#endif\n#endif\nvarying vec3 vViewPosition;\n#include <common>\n#include <packing>\n#include <dithering_pars_fragment>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <alphahash_pars_fragment>\n#include <aomap_pars_fragment>\n#include <lightmap_pars_fragment>\n#include <emissivemap_pars_fragment>\n#include <iridescence_fragment>\n#include <cube_uv_reflection_fragment>\n#include <envmap_common_pars_fragment>\n#include <envmap_physical_pars_fragment>\n#include <fog_pars_fragment>\n#include <lights_pars_begin>\n#include <normal_pars_fragment>\n#include <lights_physical_pars_fragment>\n#include <transmission_pars_fragment>\n#include <shadowmap_pars_fragment>\n#include <bumpmap_pars_fragment>\n#include <normalmap_pars_fragment>\n#include <clearcoat_pars_fragment>\n#include <iridescence_pars_fragment>\n#include <roughnessmap_pars_fragment>\n#include <metalnessmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include <clipping_planes_fragment>\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <color_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <alphahash_fragment>\n\t#include <roughnessmap_fragment>\n\t#include <metalnessmap_fragment>\n\t#include <normal_fragment_begin>\n\t#include <normal_fragment_maps>\n\t#include <clearcoat_normal_fragment_begin>\n\t#include <clearcoat_normal_fragment_maps>\n\t#include <emissivemap_fragment>\n\t#include <lights_physical_fragment>\n\t#include <lights_fragment_begin>\n\t#include <lights_fragment_maps>\n\t#include <lights_fragment_end>\n\t#include <aomap_fragment>\n\tvec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;\n\tvec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular;\n\t#include <transmission_fragment>\n\tvec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance;\n\t#ifdef USE_SHEEN\n\t\tfloat sheenEnergyComp = 1.0 - 0.157 * max3( material.sheenColor );\n\t\toutgoingLight = outgoingLight * sheenEnergyComp + sheenSpecularDirect + sheenSpecularIndirect;\n\t#endif\n\t#ifdef USE_CLEARCOAT\n\t\tfloat dotNVcc = saturate( dot( geometryClearcoatNormal, geometryViewDir ) );\n\t\tvec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc );\n\t\toutgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + ( clearcoatSpecularDirect + clearcoatSpecularIndirect ) * material.clearcoat;\n\t#endif\n\t#include <opaque_fragment>\n\t#include <tonemapping_fragment>\n\t#include <colorspace_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n\t#include <dithering_fragment>\n}",meshtoon_vert:"#define TOON\nvarying vec3 vViewPosition;\n#include <common>\n#include <batching_pars_vertex>\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <normal_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <shadowmap_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <color_vertex>\n\t#include <morphinstance_vertex>\n\t#include <morphcolor_vertex>\n\t#include <batching_vertex>\n\t#include <beginnormal_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinbase_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n\t#include <normal_vertex>\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\tvViewPosition = - mvPosition.xyz;\n\t#include <worldpos_vertex>\n\t#include <shadowmap_vertex>\n\t#include <fog_vertex>\n}",meshtoon_frag:"#define TOON\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float opacity;\n#include <common>\n#include <packing>\n#include <dithering_pars_fragment>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <alphahash_pars_fragment>\n#include <aomap_pars_fragment>\n#include <lightmap_pars_fragment>\n#include <emissivemap_pars_fragment>\n#include <gradientmap_pars_fragment>\n#include <fog_pars_fragment>\n#include <bsdfs>\n#include <lights_pars_begin>\n#include <normal_pars_fragment>\n#include <lights_toon_pars_fragment>\n#include <shadowmap_pars_fragment>\n#include <bumpmap_pars_fragment>\n#include <normalmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include <clipping_planes_fragment>\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <color_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <alphahash_fragment>\n\t#include <normal_fragment_begin>\n\t#include <normal_fragment_maps>\n\t#include <emissivemap_fragment>\n\t#include <lights_toon_fragment>\n\t#include <lights_fragment_begin>\n\t#include <lights_fragment_maps>\n\t#include <lights_fragment_end>\n\t#include <aomap_fragment>\n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\n\t#include <opaque_fragment>\n\t#include <tonemapping_fragment>\n\t#include <colorspace_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n\t#include <dithering_fragment>\n}",points_vert:"uniform float size;\nuniform float scale;\n#include <common>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\n#ifdef USE_POINTS_UV\n\tvarying vec2 vUv;\n\tuniform mat3 uvTransform;\n#endif\nvoid main() {\n\t#ifdef USE_POINTS_UV\n\t\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n\t#endif\n\t#include <color_vertex>\n\t#include <morphinstance_vertex>\n\t#include <morphcolor_vertex>\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <project_vertex>\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 <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\t#include <worldpos_vertex>\n\t#include <fog_vertex>\n}",points_frag:"uniform vec3 diffuse;\nuniform float opacity;\n#include <common>\n#include <color_pars_fragment>\n#include <map_particle_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <alphahash_pars_fragment>\n#include <fog_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include <clipping_planes_fragment>\n\tvec3 outgoingLight = vec3( 0.0 );\n\t#include <logdepthbuf_fragment>\n\t#include <map_particle_fragment>\n\t#include <color_fragment>\n\t#include <alphatest_fragment>\n\t#include <alphahash_fragment>\n\toutgoingLight = diffuseColor.rgb;\n\t#include <opaque_fragment>\n\t#include <tonemapping_fragment>\n\t#include <colorspace_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n}",shadow_vert:"#include <common>\n#include <batching_pars_vertex>\n#include <fog_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <shadowmap_pars_vertex>\nvoid main() {\n\t#include <batching_vertex>\n\t#include <beginnormal_vertex>\n\t#include <morphinstance_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinbase_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <worldpos_vertex>\n\t#include <shadowmap_vertex>\n\t#include <fog_vertex>\n}",shadow_frag:"uniform vec3 color;\nuniform float opacity;\n#include <common>\n#include <packing>\n#include <fog_pars_fragment>\n#include <bsdfs>\n#include <lights_pars_begin>\n#include <logdepthbuf_pars_fragment>\n#include <shadowmap_pars_fragment>\n#include <shadowmask_pars_fragment>\nvoid main() {\n\t#include <logdepthbuf_fragment>\n\tgl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\n\t#include <tonemapping_fragment>\n\t#include <colorspace_fragment>\n\t#include <fog_fragment>\n}",sprite_vert:"uniform float rotation;\nuniform vec2 center;\n#include <common>\n#include <uv_pars_vertex>\n#include <fog_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\tvec4 mvPosition = modelViewMatrix[ 3 ];\n\tvec2 scale = vec2( length( modelMatrix[ 0 ].xyz ), length( modelMatrix[ 1 ].xyz ) );\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 <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\t#include <fog_vertex>\n}",sprite_frag:"uniform vec3 diffuse;\nuniform float opacity;\n#include <common>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <alphahash_pars_fragment>\n#include <fog_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include <clipping_planes_fragment>\n\tvec3 outgoingLight = vec3( 0.0 );\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <alphahash_fragment>\n\toutgoingLight = diffuseColor.rgb;\n\t#include <opaque_fragment>\n\t#include <tonemapping_fragment>\n\t#include <colorspace_fragment>\n\t#include <fog_fragment>\n}"},xc={common:{diffuse:{value:new Li(16777215)},opacity:{value:1},map:{value:null},mapTransform:{value:new De},alphaMap:{value:null},alphaMapTransform:{value:new De},alphaTest:{value:0}},specularmap:{specularMap:{value:null},specularMapTransform:{value:new De}},envmap:{envMap:{value:null},envMapRotation:{value:new De},flipEnvMap:{value:-1},reflectivity:{value:1},ior:{value:1.5},refractionRatio:{value:.98}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1},aoMapTransform:{value:new De}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1},lightMapTransform:{value:new De}},bumpmap:{bumpMap:{value:null},bumpMapTransform:{value:new De},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalMapTransform:{value:new De},normalScale:{value:new ke(1,1)}},displacementmap:{displacementMap:{value:null},displacementMapTransform:{value:new De},displacementScale:{value:1},displacementBias:{value:0}},emissivemap:{emissiveMap:{value:null},emissiveMapTransform:{value:new De}},metalnessmap:{metalnessMap:{value:null},metalnessMapTransform:{value:new De}},roughnessmap:{roughnessMap:{value:null},roughnessMapTransform:{value:new De}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new Li(16777215)}},lights:{ambientLightColor:{value:[]},lightProbe:{value:[]},directionalLights:{value:[],properties:{direction:{},color:{}}},directionalLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},directionalShadowMap:{value:[]},directionalShadowMatrix:{value:[]},spotLights:{value:[],properties:{color:{},position:{},direction:{},distance:{},coneCos:{},penumbraCos:{},decay:{}}},spotLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},spotLightMap:{value:[]},spotShadowMap:{value:[]},spotLightMatrix:{value:[]},pointLights:{value:[],properties:{color:{},position:{},decay:{},distance:{}}},pointLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{},shadowCameraNear:{},shadowCameraFar:{}}},pointShadowMap:{value:[]},pointShadowMatrix:{value:[]},hemisphereLights:{value:[],properties:{direction:{},skyColor:{},groundColor:{}}},rectAreaLights:{value:[],properties:{color:{},position:{},width:{},height:{}}},ltc_1:{value:null},ltc_2:{value:null}},points:{diffuse:{value:new Li(16777215)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},alphaMapTransform:{value:new De},alphaTest:{value:0},uvTransform:{value:new De}},sprite:{diffuse:{value:new Li(16777215)},opacity:{value:1},center:{value:new ke(.5,.5)},rotation:{value:0},map:{value:null},mapTransform:{value:new De},alphaMap:{value:null},alphaMapTransform:{value:new De},alphaTest:{value:0}}},_c={basic:{uniforms:_r([xc.common,xc.specularmap,xc.envmap,xc.aomap,xc.lightmap,xc.fog]),vertexShader:gc.meshbasic_vert,fragmentShader:gc.meshbasic_frag},lambert:{uniforms:_r([xc.common,xc.specularmap,xc.envmap,xc.aomap,xc.lightmap,xc.emissivemap,xc.bumpmap,xc.normalmap,xc.displacementmap,xc.fog,xc.lights,{emissive:{value:new Li(0)}}]),vertexShader:gc.meshlambert_vert,fragmentShader:gc.meshlambert_frag},phong:{uniforms:_r([xc.common,xc.specularmap,xc.envmap,xc.aomap,xc.lightmap,xc.emissivemap,xc.bumpmap,xc.normalmap,xc.displacementmap,xc.fog,xc.lights,{emissive:{value:new Li(0)},specular:{value:new Li(1118481)},shininess:{value:30}}]),vertexShader:gc.meshphong_vert,fragmentShader:gc.meshphong_frag},standard:{uniforms:_r([xc.common,xc.envmap,xc.aomap,xc.lightmap,xc.emissivemap,xc.bumpmap,xc.normalmap,xc.displacementmap,xc.roughnessmap,xc.metalnessmap,xc.fog,xc.lights,{emissive:{value:new Li(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:gc.meshphysical_vert,fragmentShader:gc.meshphysical_frag},toon:{uniforms:_r([xc.common,xc.aomap,xc.lightmap,xc.emissivemap,xc.bumpmap,xc.normalmap,xc.displacementmap,xc.gradientmap,xc.fog,xc.lights,{emissive:{value:new Li(0)}}]),vertexShader:gc.meshtoon_vert,fragmentShader:gc.meshtoon_frag},matcap:{uniforms:_r([xc.common,xc.bumpmap,xc.normalmap,xc.displacementmap,xc.fog,{matcap:{value:null}}]),vertexShader:gc.meshmatcap_vert,fragmentShader:gc.meshmatcap_frag},points:{uniforms:_r([xc.points,xc.fog]),vertexShader:gc.points_vert,fragmentShader:gc.points_frag},dashed:{uniforms:_r([xc.common,xc.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:gc.linedashed_vert,fragmentShader:gc.linedashed_frag},depth:{uniforms:_r([xc.common,xc.displacementmap]),vertexShader:gc.depth_vert,fragmentShader:gc.depth_frag},normal:{uniforms:_r([xc.common,xc.bumpmap,xc.normalmap,xc.displacementmap,{opacity:{value:1}}]),vertexShader:gc.meshnormal_vert,fragmentShader:gc.meshnormal_frag},sprite:{uniforms:_r([xc.sprite,xc.fog]),vertexShader:gc.sprite_vert,fragmentShader:gc.sprite_frag},background:{uniforms:{uvTransform:{value:new De},t2D:{value:null},backgroundIntensity:{value:1}},vertexShader:gc.background_vert,fragmentShader:gc.background_frag},backgroundCube:{uniforms:{envMap:{value:null},flipEnvMap:{value:-1},backgroundBlurriness:{value:0},backgroundIntensity:{value:1},backgroundRotation:{value:new De}},vertexShader:gc.backgroundCube_vert,fragmentShader:gc.backgroundCube_frag},cube:{uniforms:{tCube:{value:null},tFlip:{value:-1},opacity:{value:1}},vertexShader:gc.cube_vert,fragmentShader:gc.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:gc.equirect_vert,fragmentShader:gc.equirect_frag},distanceRGBA:{uniforms:_r([xc.common,xc.displacementmap,{referencePosition:{value:new un},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:gc.distanceRGBA_vert,fragmentShader:gc.distanceRGBA_frag},shadow:{uniforms:_r([xc.lights,xc.fog,{color:{value:new Li(0)},opacity:{value:1}}]),vertexShader:gc.shadow_vert,fragmentShader:gc.shadow_frag}};_c.physical={uniforms:_r([_c.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatMapTransform:{value:new De},clearcoatNormalMap:{value:null},clearcoatNormalMapTransform:{value:new De},clearcoatNormalScale:{value:new ke(1,1)},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatRoughnessMapTransform:{value:new De},dispersion:{value:0},iridescence:{value:0},iridescenceMap:{value:null},iridescenceMapTransform:{value:new De},iridescenceIOR:{value:1.3},iridescenceThicknessMinimum:{value:100},iridescenceThicknessMaximum:{value:400},iridescenceThicknessMap:{value:null},iridescenceThicknessMapTransform:{value:new De},sheen:{value:0},sheenColor:{value:new Li(0)},sheenColorMap:{value:null},sheenColorMapTransform:{value:new De},sheenRoughness:{value:1},sheenRoughnessMap:{value:null},sheenRoughnessMapTransform:{value:new De},transmission:{value:0},transmissionMap:{value:null},transmissionMapTransform:{value:new De},transmissionSamplerSize:{value:new ke},transmissionSamplerMap:{value:null},thickness:{value:0},thicknessMap:{value:null},thicknessMapTransform:{value:new De},attenuationDistance:{value:0},attenuationColor:{value:new Li(0)},specularColor:{value:new Li(1,1,1)},specularColorMap:{value:null},specularColorMapTransform:{value:new De},specularIntensity:{value:1},specularIntensityMap:{value:null},specularIntensityMapTransform:{value:new De},anisotropyVector:{value:new ke},anisotropyMap:{value:null},anisotropyMapTransform:{value:new De}}]),vertexShader:gc.meshphysical_vert,fragmentShader:gc.meshphysical_frag};const yc={r:0,b:0,g:0},vc=new Kn,wc=new Vn;function bc(t,e,n,i,r,s,a){const o=new Li(0);let l,h,c=!0===s?0:1,q=null,u=0,d=null;function m(t){let i=!0===t.isScene?t.background:null;if(i&&i.isTexture){i=(t.backgroundBlurriness>0?n:e).get(i)}return i}function p(e,n){e.getRGB(yc,yr(t)),i.buffers.color.setClear(yc.r,yc.g,yc.b,n,a)}return{getClearColor:function(){return o},setClearColor:function(t,e=1){o.set(t),c=e,p(o,c)},getClearAlpha:function(){return c},setClearAlpha:function(t){c=t,p(o,c)},render:function(e){let n=!1;const r=m(e);null===r?p(o,c):r&&r.isColor&&(p(r,1),n=!0);const s=t.xr.getEnvironmentBlendMode();"additive"===s?i.buffers.color.setClear(0,0,0,1,a):"alpha-blend"===s&&i.buffers.color.setClear(0,0,0,0,a),(t.autoClear||n)&&(i.buffers.depth.setTest(!0),i.buffers.depth.setMask(!0),i.buffers.color.setMask(!0),t.clear(t.autoClearColor,t.autoClearDepth,t.autoClearStencil))},addToRenderList:function(e,n){const i=m(n);i&&(i.isCubeTexture||i.mapping===F)?(void 0===h&&(h=new pr(new gr(1,1,1),new wr({name:"BackgroundCubeMaterial",uniforms:xr(_c.backgroundCube.uniforms),vertexShader:_c.backgroundCube.vertexShader,fragmentShader:_c.backgroundCube.fragmentShader,side:1,depthTest:!1,depthWrite:!1,fog:!1})),h.geometry.deleteAttribute("normal"),h.geometry.deleteAttribute("uv"),h.onBeforeRender=function(t,e,n){this.matrixWorld.copyPosition(n.matrixWorld)},Object.defineProperty(h.material,"envMap",{get:function(){return this.uniforms.envMap.value}}),r.update(h)),vc.copy(n.backgroundRotation),vc.x*=-1,vc.y*=-1,vc.z*=-1,i.isCubeTexture&&!1===i.isRenderTargetTexture&&(vc.y*=-1,vc.z*=-1),h.material.uniforms.envMap.value=i,h.material.uniforms.flipEnvMap.value=i.isCubeTexture&&!1===i.isRenderTargetTexture?-1:1,h.material.uniforms.backgroundBlurriness.value=n.backgroundBlurriness,h.material.uniforms.backgroundIntensity.value=n.backgroundIntensity,h.material.uniforms.backgroundRotation.value.setFromMatrix4(wc.makeRotationFromEuler(vc)),h.material.toneMapped=Ze.getTransfer(i.colorSpace)!==ce,q===i&&u===i.version&&d===t.toneMapping||(h.material.needsUpdate=!0,q=i,u=i.version,d=t.toneMapping),h.layers.enableAll(),e.unshift(h,h.geometry,h.material,0,0,null)):i&&i.isTexture&&(void 0===l&&(l=new pr(new ko(2,2),new wr({name:"BackgroundMaterial",uniforms:xr(_c.background.uniforms),vertexShader:_c.background.vertexShader,fragmentShader:_c.background.fragmentShader,side:0,depthTest:!1,depthWrite:!1,fog:!1})),l.geometry.deleteAttribute("normal"),Object.defineProperty(l.material,"map",{get:function(){return this.uniforms.t2D.value}}),r.update(l)),l.material.uniforms.t2D.value=i,l.material.uniforms.backgroundIntensity.value=n.backgroundIntensity,l.material.toneMapped=Ze.getTransfer(i.colorSpace)!==ce,!0===i.matrixAutoUpdate&&i.updateMatrix(),l.material.uniforms.uvTransform.value.copy(i.matrix),q===i&&u===i.version&&d===t.toneMapping||(l.material.needsUpdate=!0,q=i,u=i.version,d=t.toneMapping),l.layers.enableAll(),e.unshift(l,l.geometry,l.material,0,0,null))},dispose:function(){void 0!==h&&(h.geometry.dispose(),h.material.dispose()),void 0!==l&&(l.geometry.dispose(),l.material.dispose())}}}function Mc(t,e){const n=t.getParameter(t.MAX_VERTEX_ATTRIBS),i={},r=h(null);let s=r,a=!1;function o(e){return t.bindVertexArray(e)}function l(e){return t.deleteVertexArray(e)}function h(t){const e=[],i=[],r=[];for(let s=0;s<n;s++)e[s]=0,i[s]=0,r[s]=0;return{geometry:null,program:null,wireframe:!1,newAttributes:e,enabledAttributes:i,attributeDivisors:r,object:t,attributes:{},index:null}}function c(){const t=s.newAttributes;for(let e=0,n=t.length;e<n;e++)t[e]=0}function q(t){u(t,0)}function u(e,n){const i=s.newAttributes,r=s.enabledAttributes,a=s.attributeDivisors;i[e]=1,0===r[e]&&(t.enableVertexAttribArray(e),r[e]=1),a[e]!==n&&(t.vertexAttribDivisor(e,n),a[e]=n)}function d(){const e=s.newAttributes,n=s.enabledAttributes;for(let i=0,r=n.length;i<r;i++)n[i]!==e[i]&&(t.disableVertexAttribArray(i),n[i]=0)}function m(e,n,i,r,s,a,o){!0===o?t.vertexAttribIPointer(e,n,i,s,a):t.vertexAttribPointer(e,n,i,r,s,a)}function p(){f(),a=!0,s!==r&&(s=r,o(s.object))}function f(){r.geometry=null,r.program=null,r.wireframe=!1}return{setup:function(n,r,l,p,f){let g=!1;const x=function(e,n,r){const s=!0===r.wireframe;let a=i[e.id];void 0===a&&(a={},i[e.id]=a);let o=a[n.id];void 0===o&&(o={},a[n.id]=o);let l=o[s];void 0===l&&(l=h(t.createVertexArray()),o[s]=l);return l}(p,l,r);s!==x&&(s=x,o(s.object)),g=function(t,e,n,i){const r=s.attributes,a=e.attributes;let o=0;const l=n.getAttributes();for(const s in l){if(l[s].location>=0){const e=r[s];let n=a[s];if(void 0===n&&("instanceMatrix"===s&&t.instanceMatrix&&(n=t.instanceMatrix),"instanceColor"===s&&t.instanceColor&&(n=t.instanceColor)),void 0===e)return!0;if(e.attribute!==n)return!0;if(n&&e.data!==n.data)return!0;o++}}return s.attributesNum!==o||s.index!==i}(n,p,l,f),g&&function(t,e,n,i){const r={},a=e.attributes;let o=0;const l=n.getAttributes();for(const s in l){if(l[s].location>=0){let e=a[s];void 0===e&&("instanceMatrix"===s&&t.instanceMatrix&&(e=t.instanceMatrix),"instanceColor"===s&&t.instanceColor&&(e=t.instanceColor));const n={};n.attribute=e,e&&e.data&&(n.data=e.data),r[s]=n,o++}}s.attributes=r,s.attributesNum=o,s.index=i}(n,p,l,f),null!==f&&e.update(f,t.ELEMENT_ARRAY_BUFFER),(g||a)&&(a=!1,function(n,i,r,s){c();const a=s.attributes,o=r.getAttributes(),l=i.defaultAttributeValues;for(const h in o){const i=o[h];if(i.location>=0){let r=a[h];if(void 0===r&&("instanceMatrix"===h&&n.instanceMatrix&&(r=n.instanceMatrix),"instanceColor"===h&&n.instanceColor&&(r=n.instanceColor)),void 0!==r){const a=r.normalized,o=r.itemSize,l=e.get(r);if(void 0===l)continue;const h=l.buffer,c=l.type,d=l.bytesPerElement,p=c===t.INT||c===t.UNSIGNED_INT||r.gpuType===tt;if(r.isInterleavedBufferAttribute){const e=r.data,l=e.stride,f=r.offset;if(e.isInstancedInterleavedBuffer){for(let t=0;t<i.locationSize;t++)u(i.location+t,e.meshPerAttribute);!0!==n.isInstancedMesh&&void 0===s._maxInstanceCount&&(s._maxInstanceCount=e.meshPerAttribute*e.count)}else for(let t=0;t<i.locationSize;t++)q(i.location+t);t.bindBuffer(t.ARRAY_BUFFER,h);for(let t=0;t<i.locationSize;t++)m(i.location+t,o/i.locationSize,c,a,l*d,(f+o/i.locationSize*t)*d,p)}else{if(r.isInstancedBufferAttribute){for(let t=0;t<i.locationSize;t++)u(i.location+t,r.meshPerAttribute);!0!==n.isInstancedMesh&&void 0===s._maxInstanceCount&&(s._maxInstanceCount=r.meshPerAttribute*r.count)}else for(let t=0;t<i.locationSize;t++)q(i.location+t);t.bindBuffer(t.ARRAY_BUFFER,h);for(let t=0;t<i.locationSize;t++)m(i.location+t,o/i.locationSize,c,a,o*d,o/i.locationSize*t*d,p)}}else if(void 0!==l){const e=l[h];if(void 0!==e)switch(e.length){case 2:t.vertexAttrib2fv(i.location,e);break;case 3:t.vertexAttrib3fv(i.location,e);break;case 4:t.vertexAttrib4fv(i.location,e);break;default:t.vertexAttrib1fv(i.location,e)}}}}d()}(n,r,l,p),null!==f&&t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,e.get(f).buffer))},reset:p,resetDefaultState:f,dispose:function(){p();for(const t in i){const e=i[t];for(const t in e){const n=e[t];for(const t in n)l(n[t].object),delete n[t];delete e[t]}delete i[t]}},releaseStatesOfGeometry:function(t){if(void 0===i[t.id])return;const e=i[t.id];for(const n in e){const t=e[n];for(const e in t)l(t[e].object),delete t[e];delete e[n]}delete i[t.id]},releaseStatesOfProgram:function(t){for(const e in i){const n=i[e];if(void 0===n[t.id])continue;const r=n[t.id];for(const t in r)l(r[t].object),delete r[t];delete n[t.id]}},initAttributes:c,enableAttribute:q,disableUnusedAttributes:d}}function Sc(t,e,n){let i;function r(e,r,s){0!==s&&(t.drawArraysInstanced(i,e,r,s),n.update(r,i,s))}this.setMode=function(t){i=t},this.render=function(e,r){t.drawArrays(i,e,r),n.update(r,i,1)},this.renderInstances=r,this.renderMultiDraw=function(t,r,s){if(0===s)return;e.get("WEBGL_multi_draw").multiDrawArraysWEBGL(i,t,0,r,0,s);let a=0;for(let e=0;e<s;e++)a+=r[e];n.update(a,i,1)},this.renderMultiDrawInstances=function(t,s,a,o){if(0===a)return;const l=e.get("WEBGL_multi_draw");if(null===l)for(let e=0;e<t.length;e++)r(t[e],s[e],o[e]);else{l.multiDrawArraysInstancedWEBGL(i,t,0,s,0,o,0,a);let e=0;for(let t=0;t<a;t++)e+=s[t]*o[t];n.update(e,i,1)}}}function Tc(t,e,n,i){let r;function s(e){if("highp"===e){if(t.getShaderPrecisionFormat(t.VERTEX_SHADER,t.HIGH_FLOAT).precision>0&&t.getShaderPrecisionFormat(t.FRAGMENT_SHADER,t.HIGH_FLOAT).precision>0)return"highp";e="mediump"}return"mediump"===e&&t.getShaderPrecisionFormat(t.VERTEX_SHADER,t.MEDIUM_FLOAT).precision>0&&t.getShaderPrecisionFormat(t.FRAGMENT_SHADER,t.MEDIUM_FLOAT).precision>0?"mediump":"lowp"}let a=void 0!==n.precision?n.precision:"highp";const o=s(a);o!==a&&(console.warn("THREE.WebGLRenderer:",a,"not supported, using",o,"instead."),a=o);const l=!0===n.logarithmicDepthBuffer,h=!0===n.reverseDepthBuffer&&e.has("EXT_clip_control"),c=t.getParameter(t.MAX_TEXTURE_IMAGE_UNITS),q=t.getParameter(t.MAX_VERTEX_TEXTURE_IMAGE_UNITS);return{isWebGL2:!0,getMaxAnisotropy:function(){if(void 0!==r)return r;if(!0===e.has("EXT_texture_filter_anisotropic")){const n=e.get("EXT_texture_filter_anisotropic");r=t.getParameter(n.MAX_TEXTURE_MAX_ANISOTROPY_EXT)}else r=0;return r},getMaxPrecision:s,textureFormatReadable:function(e){return e===ct||i.convert(e)===t.getParameter(t.IMPLEMENTATION_COLOR_READ_FORMAT)},textureTypeReadable:function(n){const r=n===it&&(e.has("EXT_color_buffer_half_float")||e.has("EXT_color_buffer_float"));return!(n!==J&&i.convert(n)!==t.getParameter(t.IMPLEMENTATION_COLOR_READ_TYPE)&&n!==nt&&!r)},precision:a,logarithmicDepthBuffer:l,reverseDepthBuffer:h,maxTextures:c,maxVertexTextures:q,maxTextureSize:t.getParameter(t.MAX_TEXTURE_SIZE),maxCubemapSize:t.getParameter(t.MAX_CUBE_MAP_TEXTURE_SIZE),maxAttributes:t.getParameter(t.MAX_VERTEX_ATTRIBS),maxVertexUniforms:t.getParameter(t.MAX_VERTEX_UNIFORM_VECTORS),maxVaryings:t.getParameter(t.MAX_VARYING_VECTORS),maxFragmentUniforms:t.getParameter(t.MAX_FRAGMENT_UNIFORM_VECTORS),vertexTextures:q>0,maxSamples:t.getParameter(t.MAX_SAMPLES)}}function Ec(t){const e=this;let n=null,i=0,r=!1,s=!1;const a=new Rs,o=new De,l={value:null,needsUpdate:!1};function h(t,n,i,r){const s=null!==t?t.length:0;let h=null;if(0!==s){if(h=l.value,!0!==r||null===h){const e=i+4*s,r=n.matrixWorldInverse;o.getNormalMatrix(r),(null===h||h.length<e)&&(h=new Float32Array(e));for(let n=0,l=i;n!==s;++n,l+=4)a.copy(t[n]).applyMatrix4(r,o),a.normal.toArray(h,l),h[l+3]=a.constant}l.value=h,l.needsUpdate=!0}return e.numPlanes=s,e.numIntersection=0,h}this.uniform=l,this.numPlanes=0,this.numIntersection=0,this.init=function(t,e){const n=0!==t.length||e||0!==i||r;return r=e,i=t.length,n},this.beginShadows=function(){s=!0,h(null)},this.endShadows=function(){s=!1},this.setGlobalState=function(t,e){n=h(t,e,0)},this.setState=function(a,o,c){const q=a.clippingPlanes,u=a.clipIntersection,d=a.clipShadows,m=t.get(a);if(!r||null===q||0===q.length||s&&!d)s?h(null):function(){l.value!==n&&(l.value=n,l.needsUpdate=i>0);e.numPlanes=i,e.numIntersection=0}();else{const t=s?0:i,e=4*t;let r=m.clippingState||null;l.value=r,r=h(q,o,e,c);for(let i=0;i!==e;++i)r[i]=n[i];m.clippingState=r,this.numIntersection=u?this.numPlanes:0,this.numPlanes+=t}}}function Ac(t){let e=new WeakMap;function n(t,e){return e===U?t.mapping=k:e===O&&(t.mapping=D),t}function i(t){const n=t.target;n.removeEventListener("dispose",i);const r=e.get(n);void 0!==r&&(e.delete(n),r.dispose())}return{get:function(r){if(r&&r.isTexture){const s=r.mapping;if(s===U||s===O){if(e.has(r)){return n(e.get(r).texture,r.mapping)}{const s=r.image;if(s&&s.height>0){const a=new zr(s.height);return a.fromEquirectangularTexture(t,r),e.set(r,a),r.addEventListener("dispose",i),n(a.texture,r.mapping)}return null}}}return r},dispose:function(){e=new WeakMap}}}const Cc=[.125,.215,.35,.446,.526,.582],Rc=20,zc=new jl,Ic=new Li;let Pc=null,Lc=0,Nc=0,kc=!1;const Dc=(1+Math.sqrt(5))/2,Uc=1/Dc,Oc=[new un(-Dc,Uc,0),new un(Dc,Uc,0),new un(-Uc,0,Dc),new un(Uc,0,Dc),new un(0,Dc,-Uc),new un(0,Dc,Uc),new un(-1,1,-1),new un(1,1,-1),new un(-1,1,1),new un(1,1,1)];class Fc{constructor(t){this._renderer=t,this._pingPongRenderTarget=null,this._lodMax=0,this._cubeSize=0,this._lodPlanes=[],this._sizeLods=[],this._sigmas=[],this._blurMaterial=null,this._cubemapMaterial=null,this._equirectMaterial=null,this._compileMaterial(this._blurMaterial)}fromScene(t,e=0,n=.1,i=100){Pc=this._renderer.getRenderTarget(),Lc=this._renderer.getActiveCubeFace(),Nc=this._renderer.getActiveMipmapLevel(),kc=this._renderer.xr.enabled,this._renderer.xr.enabled=!1,this._setSize(256);const r=this._allocateTargets();return r.depthBuffer=!0,this._sceneToCubeUV(t,n,i,r),e>0&&this._blur(r,0,0,e),this._applyPMREM(r),this._cleanup(r),r}fromEquirectangular(t,e=null){return this._fromTexture(t,e)}fromCubemap(t,e=null){return this._fromTexture(t,e)}compileCubemapShader(){null===this._cubemapMaterial&&(this._cubemapMaterial=Gc(),this._compileMaterial(this._cubemapMaterial))}compileEquirectangularShader(){null===this._equirectMaterial&&(this._equirectMaterial=Hc(),this._compileMaterial(this._equirectMaterial))}dispose(){this._dispose(),null!==this._cubemapMaterial&&this._cubemapMaterial.dispose(),null!==this._equirectMaterial&&this._equirectMaterial.dispose()}_setSize(t){this._lodMax=Math.floor(Math.log2(t)),this._cubeSize=Math.pow(2,this._lodMax)}_dispose(){null!==this._blurMaterial&&this._blurMaterial.dispose(),null!==this._pingPongRenderTarget&&this._pingPongRenderTarget.dispose();for(let t=0;t<this._lodPlanes.length;t++)this._lodPlanes[t].dispose()}_cleanup(t){this._renderer.setRenderTarget(Pc,Lc,Nc),this._renderer.xr.enabled=kc,t.scissorTest=!1,Vc(t,0,0,t.width,t.height)}_fromTexture(t,e){t.mapping===k||t.mapping===D?this._setSize(0===t.image.length?16:t.image[0].width||t.image[0].image.width):this._setSize(t.image.width/4),Pc=this._renderer.getRenderTarget(),Lc=this._renderer.getActiveCubeFace(),Nc=this._renderer.getActiveMipmapLevel(),kc=this._renderer.xr.enabled,this._renderer.xr.enabled=!1;const n=e||this._allocateTargets();return this._textureToCubeUV(t,n),this._applyPMREM(n),this._cleanup(n),n}_allocateTargets(){const t=3*Math.max(this._cubeSize,112),e=4*this._cubeSize,n={magFilter:X,minFilter:X,generateMipmaps:!1,type:it,format:ct,colorSpace:le,depthBuffer:!1},i=Bc(t,e,n);if(null===this._pingPongRenderTarget||this._pingPongRenderTarget.width!==t||this._pingPongRenderTarget.height!==e){null!==this._pingPongRenderTarget&&this._dispose(),this._pingPongRenderTarget=Bc(t,e,n);const{_lodMax:i}=this;({sizeLods:this._sizeLods,lodPlanes:this._lodPlanes,sigmas:this._sigmas}=function(t){const e=[],n=[],i=[];let r=t;const s=t-4+1+Cc.length;for(let a=0;a<s;a++){const s=Math.pow(2,r);n.push(s);let o=1/s;a>t-4?o=Cc[a-t+4-1]:0===a&&(o=0),i.push(o);const l=1/(s-2),h=-l,c=1+l,q=[h,h,c,h,c,c,h,h,c,c,h,c],u=6,d=6,m=3,p=2,f=1,g=new Float32Array(m*d*u),x=new Float32Array(p*d*u),_=new Float32Array(f*d*u);for(let t=0;t<u;t++){const e=t%3*2/3-1,n=t>2?0:-1,i=[e,n,0,e+2/3,n,0,e+2/3,n+1,0,e,n,0,e+2/3,n+1,0,e,n+1,0];g.set(i,m*d*t),x.set(q,p*d*t);const r=[t,t,t,t,t,t];_.set(r,f*d*t)}const y=new ir;y.setAttribute("position",new ji(g,m)),y.setAttribute("uv",new ji(x,p)),y.setAttribute("faceIndex",new ji(_,f)),e.push(y),r>4&&r--}return{lodPlanes:e,sizeLods:n,sigmas:i}}(i)),this._blurMaterial=function(t,e,n){const i=new Float32Array(Rc),r=new un(0,1,0),s=new wr({name:"SphericalGaussianBlur",defines:{n:Rc,CUBEUV_TEXEL_WIDTH:1/e,CUBEUV_TEXEL_HEIGHT:1/n,CUBEUV_MAX_MIP:`${t}.0`},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:i},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:r}},vertexShader:Wc(),fragmentShader:"\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\t\t\tuniform int samples;\n\t\t\tuniform float weights[ n ];\n\t\t\tuniform bool latitudinal;\n\t\t\tuniform float dTheta;\n\t\t\tuniform float mipInt;\n\t\t\tuniform vec3 poleAxis;\n\n\t\t\t#define ENVMAP_TYPE_CUBE_UV\n\t\t\t#include <cube_uv_reflection_fragment>\n\n\t\t\tvec3 getSample( float theta, vec3 axis ) {\n\n\t\t\t\tfloat cosTheta = cos( theta );\n\t\t\t\t// Rodrigues' axis-angle rotation\n\t\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\n\t\t\t\treturn bilinearCubeUV( envMap, sampleDirection, mipInt );\n\n\t\t\t}\n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection );\n\n\t\t\t\tif ( all( equal( axis, vec3( 0.0 ) ) ) ) {\n\n\t\t\t\t\taxis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x );\n\n\t\t\t\t}\n\n\t\t\t\taxis = normalize( axis );\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t\t\t\tgl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis );\n\n\t\t\t\tfor ( int i = 1; i < n; i++ ) {\n\n\t\t\t\t\tif ( i >= samples ) {\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfloat theta = dTheta * float( i );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( theta, axis );\n\n\t\t\t\t}\n\n\t\t\t}\n\t\t",blending:0,depthTest:!1,depthWrite:!1});return s}(i,t,e)}return i}_compileMaterial(t){const e=new pr(this._lodPlanes[0],t);this._renderer.compile(e,zc)}_sceneToCubeUV(t,e,n,i){const r=new Er(90,1,e,n),s=[1,-1,1,1,1,1],a=[1,1,1,-1,-1,-1],o=this._renderer,l=o.autoClear,h=o.toneMapping;o.getClearColor(Ic),o.toneMapping=0,o.autoClear=!1;const c=new Ui({name:"PMREM.Background",side:1,depthWrite:!1,depthTest:!1}),q=new pr(new gr,c);let u=!1;const d=t.background;d?d.isColor&&(c.color.copy(d),t.background=null,u=!0):(c.color.copy(Ic),u=!0);for(let m=0;m<6;m++){const e=m%3;0===e?(r.up.set(0,s[m],0),r.lookAt(a[m],0,0)):1===e?(r.up.set(0,0,s[m]),r.lookAt(0,a[m],0)):(r.up.set(0,s[m],0),r.lookAt(0,0,a[m]));const n=this._cubeSize;Vc(i,e*n,m>2?n:0,n,n),o.setRenderTarget(i),u&&o.render(q,r),o.render(t,r)}q.geometry.dispose(),q.material.dispose(),o.toneMapping=h,o.autoClear=l,t.background=d}_textureToCubeUV(t,e){const n=this._renderer,i=t.mapping===k||t.mapping===D;i?(null===this._cubemapMaterial&&(this._cubemapMaterial=Gc()),this._cubemapMaterial.uniforms.flipEnvMap.value=!1===t.isRenderTargetTexture?-1:1):null===this._equirectMaterial&&(this._equirectMaterial=Hc());const r=i?this._cubemapMaterial:this._equirectMaterial,s=new pr(this._lodPlanes[0],r);r.uniforms.envMap.value=t;const a=this._cubeSize;Vc(e,0,0,3*a,2*a),n.setRenderTarget(e),n.render(s,zc)}_applyPMREM(t){const e=this._renderer,n=e.autoClear;e.autoClear=!1;const i=this._lodPlanes.length;for(let r=1;r<i;r++){const e=Math.sqrt(this._sigmas[r]*this._sigmas[r]-this._sigmas[r-1]*this._sigmas[r-1]),n=Oc[(i-r-1)%Oc.length];this._blur(t,r-1,r,e,n)}e.autoClear=n}_blur(t,e,n,i,r){const s=this._pingPongRenderTarget;this._halfBlur(t,s,e,n,i,"latitudinal",r),this._halfBlur(s,t,n,n,i,"longitudinal",r)}_halfBlur(t,e,n,i,r,s,a){const o=this._renderer,l=this._blurMaterial;"latitudinal"!==s&&"longitudinal"!==s&&console.error("blur direction must be either latitudinal or longitudinal!");const h=new pr(this._lodPlanes[i],l),c=l.uniforms,q=this._sizeLods[n]-1,u=isFinite(r)?Math.PI/(2*q):2*Math.PI/39,d=r/u,m=isFinite(r)?1+Math.floor(3*d):Rc;m>Rc&&console.warn(`sigmaRadians, ${r}, is too large and will clip, as it requested ${m} samples when the maximum is set to 20`);const p=[];let f=0;for(let _=0;_<Rc;++_){const t=_/d,e=Math.exp(-t*t/2);p.push(e),0===_?f+=e:_<m&&(f+=2*e)}for(let _=0;_<p.length;_++)p[_]=p[_]/f;c.envMap.value=t.texture,c.samples.value=m,c.weights.value=p,c.latitudinal.value="latitudinal"===s,a&&(c.poleAxis.value=a);const{_lodMax:g}=this;c.dTheta.value=u,c.mipInt.value=g-n;const x=this._sizeLods[i];Vc(e,3*x*(i>g-4?i-g+4:0),4*(this._cubeSize-x),3*x,2*x),o.setRenderTarget(e),o.render(h,zc)}}function Bc(t,e,n){const i=new ln(t,e,n);return i.texture.mapping=F,i.texture.name="PMREM.cubeUv",i.scissorTest=!0,i}function Vc(t,e,n,i,r){t.viewport.set(e,n,i,r),t.scissor.set(e,n,i,r)}function Hc(){return new wr({name:"EquirectangularToCubeUV",uniforms:{envMap:{value:null}},vertexShader:Wc(),fragmentShader:"\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\n\t\t\t#include <common>\n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 outputDirection = normalize( vOutputDirection );\n\t\t\t\tvec2 uv = equirectUv( outputDirection );\n\n\t\t\t\tgl_FragColor = vec4( texture2D ( envMap, uv ).rgb, 1.0 );\n\n\t\t\t}\n\t\t",blending:0,depthTest:!1,depthWrite:!1})}function Gc(){return new wr({name:"CubemapToCubeUV",uniforms:{envMap:{value:null},flipEnvMap:{value:-1}},vertexShader:Wc(),fragmentShader:"\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tuniform float flipEnvMap;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform samplerCube envMap;\n\n\t\t\tvoid main() {\n\n\t\t\t\tgl_FragColor = textureCube( envMap, vec3( flipEnvMap * vOutputDirection.x, vOutputDirection.yz ) );\n\n\t\t\t}\n\t\t",blending:0,depthTest:!1,depthWrite:!1})}function Wc(){return"\n\n\t\tprecision mediump float;\n\t\tprecision mediump int;\n\n\t\tattribute float faceIndex;\n\n\t\tvarying vec3 vOutputDirection;\n\n\t\t// RH coordinate system; PMREM face-indexing convention\n\t\tvec3 getDirection( vec2 uv, float face ) {\n\n\t\t\tuv = 2.0 * uv - 1.0;\n\n\t\t\tvec3 direction = vec3( uv, 1.0 );\n\n\t\t\tif ( face == 0.0 ) {\n\n\t\t\t\tdirection = direction.zyx; // ( 1, v, u ) pos x\n\n\t\t\t} else if ( face == 1.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xz *= -1.0; // ( -u, 1, -v ) pos y\n\n\t\t\t} else if ( face == 2.0 ) {\n\n\t\t\t\tdirection.x *= -1.0; // ( -u, v, 1 ) pos z\n\n\t\t\t} else if ( face == 3.0 ) {\n\n\t\t\t\tdirection = direction.zyx;\n\t\t\t\tdirection.xz *= -1.0; // ( -1, v, -u ) neg x\n\n\t\t\t} else if ( face == 4.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xy *= -1.0; // ( -u, -1, v ) neg y\n\n\t\t\t} else if ( face == 5.0 ) {\n\n\t\t\t\tdirection.z *= -1.0; // ( u, v, -1 ) neg z\n\n\t\t\t}\n\n\t\t\treturn direction;\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tvOutputDirection = getDirection( uv, faceIndex );\n\t\t\tgl_Position = vec4( position, 1.0 );\n\n\t\t}\n\t"}function jc(t){let e=new WeakMap,n=null;function i(t){const n=t.target;n.removeEventListener("dispose",i);const r=e.get(n);void 0!==r&&(e.delete(n),r.dispose())}return{get:function(r){if(r&&r.isTexture){const s=r.mapping,a=s===U||s===O,o=s===k||s===D;if(a||o){let s=e.get(r);const l=void 0!==s?s.texture.pmremVersion:0;if(r.isRenderTargetTexture&&r.pmremVersion!==l)return null===n&&(n=new Fc(t)),s=a?n.fromEquirectangular(r,s):n.fromCubemap(r,s),s.texture.pmremVersion=r.pmremVersion,e.set(r,s),s.texture;if(void 0!==s)return s.texture;{const l=r.image;return a&&l&&l.height>0||o&&l&&function(t){let e=0;const n=6;for(let i=0;i<n;i++)void 0!==t[i]&&e++;return e===n}(l)?(null===n&&(n=new Fc(t)),s=a?n.fromEquirectangular(r):n.fromCubemap(r),s.texture.pmremVersion=r.pmremVersion,e.set(r,s),r.addEventListener("dispose",i),s.texture):null}}}return r},dispose:function(){e=new WeakMap,null!==n&&(n.dispose(),n=null)}}}function Xc(t){const e={};function n(n){if(void 0!==e[n])return e[n];let i;switch(n){case"WEBGL_depth_texture":i=t.getExtension("WEBGL_depth_texture")||t.getExtension("MOZ_WEBGL_depth_texture")||t.getExtension("WEBKIT_WEBGL_depth_texture");break;case"EXT_texture_filter_anisotropic":i=t.getExtension("EXT_texture_filter_anisotropic")||t.getExtension("MOZ_EXT_texture_filter_anisotropic")||t.getExtension("WEBKIT_EXT_texture_filter_anisotropic");break;case"WEBGL_compressed_texture_s3tc":i=t.getExtension("WEBGL_compressed_texture_s3tc")||t.getExtension("MOZ_WEBGL_compressed_texture_s3tc")||t.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc");break;case"WEBGL_compressed_texture_pvrtc":i=t.getExtension("WEBGL_compressed_texture_pvrtc")||t.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc");break;default:i=t.getExtension(n)}return e[n]=i,i}return{has:function(t){return null!==n(t)},init:function(){n("EXT_color_buffer_float"),n("WEBGL_clip_cull_distance"),n("OES_texture_float_linear"),n("EXT_color_buffer_half_float"),n("WEBGL_multisampled_render_to_texture"),n("WEBGL_render_shared_exponent")},get:function(t){const e=n(t);return null===e&&We("THREE.WebGLRenderer: "+t+" extension not supported."),e}}}function Yc(t,e,n,i){const r={},s=new WeakMap;function a(t){const o=t.target;null!==o.index&&e.remove(o.index);for(const n in o.attributes)e.remove(o.attributes[n]);o.removeEventListener("dispose",a),delete r[o.id];const l=s.get(o);l&&(e.remove(l),s.delete(o)),i.releaseStatesOfGeometry(o),!0===o.isInstancedBufferGeometry&&delete o._maxInstanceCount,n.memory.geometries--}function o(t){const n=[],i=t.index,r=t.attributes.position;let a=0;if(null!==i){const t=i.array;a=i.version;for(let e=0,i=t.length;e<i;e+=3){const i=t[e+0],r=t[e+1],s=t[e+2];n.push(i,r,r,s,s,i)}}else{if(void 0===r)return;{const t=r.array;a=r.version;for(let e=0,i=t.length/3-1;e<i;e+=3){const t=e+0,i=e+1,r=e+2;n.push(t,i,i,r,r,t)}}}const o=new(Oe(n)?Yi:Xi)(n,1);o.version=a;const l=s.get(t);l&&e.remove(l),s.set(t,o)}return{get:function(t,e){return!0===r[e.id]||(e.addEventListener("dispose",a),r[e.id]=!0,n.memory.geometries++),e},update:function(n){const i=n.attributes;for(const r in i)e.update(i[r],t.ARRAY_BUFFER)},getWireframeAttribute:function(t){const e=s.get(t);if(e){const n=t.index;null!==n&&e.version<n.version&&o(t)}else o(t);return s.get(t)}}}function Zc(t,e,n){let i,r,s;function a(e,a,o){0!==o&&(t.drawElementsInstanced(i,a,r,e*s,o),n.update(a,i,o))}this.setMode=function(t){i=t},this.setIndex=function(t){r=t.type,s=t.bytesPerElement},this.render=function(e,a){t.drawElements(i,a,r,e*s),n.update(a,i,1)},this.renderInstances=a,this.renderMultiDraw=function(t,s,a){if(0===a)return;e.get("WEBGL_multi_draw").multiDrawElementsWEBGL(i,s,0,r,t,0,a);let o=0;for(let e=0;e<a;e++)o+=s[e];n.update(o,i,1)},this.renderMultiDrawInstances=function(t,o,l,h){if(0===l)return;const c=e.get("WEBGL_multi_draw");if(null===c)for(let e=0;e<t.length;e++)a(t[e]/s,o[e],h[e]);else{c.multiDrawElementsInstancedWEBGL(i,o,0,r,t,0,h,0,l);let e=0;for(let t=0;t<l;t++)e+=o[t]*h[t];n.update(e,i,1)}}}function Jc(t){const e={frame:0,calls:0,triangles:0,points:0,lines:0};return{memory:{geometries:0,textures:0},render:e,programs:null,autoReset:!0,reset:function(){e.calls=0,e.triangles=0,e.points=0,e.lines=0},update:function(n,i,r){switch(e.calls++,i){case t.TRIANGLES:e.triangles+=r*(n/3);break;case t.LINES:e.lines+=r*(n/2);break;case t.LINE_STRIP:e.lines+=r*(n-1);break;case t.LINE_LOOP:e.lines+=r*n;break;case t.POINTS:e.points+=r*n;break;default:console.error("THREE.WebGLInfo: Unknown draw mode:",i)}}}}function $c(t,e,n){const i=new WeakMap,r=new an;return{update:function(s,a,o){const l=s.morphTargetInfluences,h=a.morphAttributes.position||a.morphAttributes.normal||a.morphAttributes.color,c=void 0!==h?h.length:0;let q=i.get(a);if(void 0===q||q.count!==c){let t=function(){g.dispose(),i.delete(a),a.removeEventListener("dispose",t)};void 0!==q&&q.texture.dispose();const n=void 0!==a.morphAttributes.position,s=void 0!==a.morphAttributes.normal,o=void 0!==a.morphAttributes.color,l=a.morphAttributes.position||[],h=a.morphAttributes.normal||[],u=a.morphAttributes.color||[];let d=0;!0===n&&(d=1),!0===s&&(d=2),!0===o&&(d=3);let m=a.attributes.position.count*d,p=1;m>e.maxTextureSize&&(p=Math.ceil(m/e.maxTextureSize),m=e.maxTextureSize);const f=new Float32Array(m*p*4*c),g=new hn(f,m,p,c);g.type=nt,g.needsUpdate=!0;const x=4*d;for(let e=0;e<c;e++){const t=l[e],i=h[e],a=u[e],c=m*p*4*e;for(let e=0;e<t.count;e++){const l=e*x;!0===n&&(r.fromBufferAttribute(t,e),f[c+l+0]=r.x,f[c+l+1]=r.y,f[c+l+2]=r.z,f[c+l+3]=0),!0===s&&(r.fromBufferAttribute(i,e),f[c+l+4]=r.x,f[c+l+5]=r.y,f[c+l+6]=r.z,f[c+l+7]=0),!0===o&&(r.fromBufferAttribute(a,e),f[c+l+8]=r.x,f[c+l+9]=r.y,f[c+l+10]=r.z,f[c+l+11]=4===a.itemSize?r.w:1)}}q={count:c,texture:g,size:new ke(m,p)},i.set(a,q),a.addEventListener("dispose",t)}if(!0===s.isInstancedMesh&&null!==s.morphTexture)o.getUniforms().setValue(t,"morphTexture",s.morphTexture,n);else{let e=0;for(let t=0;t<l.length;t++)e+=l[t];const n=a.morphTargetsRelative?1:1-e;o.getUniforms().setValue(t,"morphTargetBaseInfluence",n),o.getUniforms().setValue(t,"morphTargetInfluences",l)}o.getUniforms().setValue(t,"morphTargetsTexture",q.texture,n),o.getUniforms().setValue(t,"morphTargetsTextureSize",q.size)}}}function Kc(t,e,n,i){let r=new WeakMap;function s(t){const e=t.target;e.removeEventListener("dispose",s),n.remove(e.instanceMatrix),null!==e.instanceColor&&n.remove(e.instanceColor)}return{update:function(a){const o=i.render.frame,l=a.geometry,h=e.get(a,l);if(r.get(h)!==o&&(e.update(h),r.set(h,o)),a.isInstancedMesh&&(!1===a.hasEventListener("dispose",s)&&a.addEventListener("dispose",s),r.get(a)!==o&&(n.update(a.instanceMatrix,t.ARRAY_BUFFER),null!==a.instanceColor&&n.update(a.instanceColor,t.ARRAY_BUFFER),r.set(a,o))),a.isSkinnedMesh){const t=a.skeleton;r.get(t)!==o&&(t.update(),r.set(t,o))}return h},dispose:function(){r=new WeakMap}}}const Qc=new sn,tq=new va(1,1),eq=new hn,nq=new cn,iq=new Rr,rq=[],sq=[],aq=new Float32Array(16),oq=new Float32Array(9),lq=new Float32Array(4);function hq(t,e,n){const i=t[0];if(i<=0||i>0)return t;const r=e*n;let s=rq[r];if(void 0===s&&(s=new Float32Array(r),rq[r]=s),0!==e){i.toArray(s,0);for(let i=1,r=0;i!==e;++i)r+=n,t[i].toArray(s,r)}return s}function cq(t,e){if(t.length!==e.length)return!1;for(let n=0,i=t.length;n<i;n++)if(t[n]!==e[n])return!1;return!0}function qq(t,e){for(let n=0,i=e.length;n<i;n++)t[n]=e[n]}function uq(t,e){let n=sq[e];void 0===n&&(n=new Int32Array(e),sq[e]=n);for(let i=0;i!==e;++i)n[i]=t.allocateTextureUnit();return n}function dq(t,e){const n=this.cache;n[0]!==e&&(t.uniform1f(this.addr,e),n[0]=e)}function mq(t,e){const n=this.cache;if(void 0!==e.x)n[0]===e.x&&n[1]===e.y||(t.uniform2f(this.addr,e.x,e.y),n[0]=e.x,n[1]=e.y);else{if(cq(n,e))return;t.uniform2fv(this.addr,e),qq(n,e)}}function pq(t,e){const n=this.cache;if(void 0!==e.x)n[0]===e.x&&n[1]===e.y&&n[2]===e.z||(t.uniform3f(this.addr,e.x,e.y,e.z),n[0]=e.x,n[1]=e.y,n[2]=e.z);else if(void 0!==e.r)n[0]===e.r&&n[1]===e.g&&n[2]===e.b||(t.uniform3f(this.addr,e.r,e.g,e.b),n[0]=e.r,n[1]=e.g,n[2]=e.b);else{if(cq(n,e))return;t.uniform3fv(this.addr,e),qq(n,e)}}function fq(t,e){const n=this.cache;if(void 0!==e.x)n[0]===e.x&&n[1]===e.y&&n[2]===e.z&&n[3]===e.w||(t.uniform4f(this.addr,e.x,e.y,e.z,e.w),n[0]=e.x,n[1]=e.y,n[2]=e.z,n[3]=e.w);else{if(cq(n,e))return;t.uniform4fv(this.addr,e),qq(n,e)}}function gq(t,e){const n=this.cache,i=e.elements;if(void 0===i){if(cq(n,e))return;t.uniformMatrix2fv(this.addr,!1,e),qq(n,e)}else{if(cq(n,i))return;lq.set(i),t.uniformMatrix2fv(this.addr,!1,lq),qq(n,i)}}function xq(t,e){const n=this.cache,i=e.elements;if(void 0===i){if(cq(n,e))return;t.uniformMatrix3fv(this.addr,!1,e),qq(n,e)}else{if(cq(n,i))return;oq.set(i),t.uniformMatrix3fv(this.addr,!1,oq),qq(n,i)}}function _q(t,e){const n=this.cache,i=e.elements;if(void 0===i){if(cq(n,e))return;t.uniformMatrix4fv(this.addr,!1,e),qq(n,e)}else{if(cq(n,i))return;aq.set(i),t.uniformMatrix4fv(this.addr,!1,aq),qq(n,i)}}function yq(t,e){const n=this.cache;n[0]!==e&&(t.uniform1i(this.addr,e),n[0]=e)}function vq(t,e){const n=this.cache;if(void 0!==e.x)n[0]===e.x&&n[1]===e.y||(t.uniform2i(this.addr,e.x,e.y),n[0]=e.x,n[1]=e.y);else{if(cq(n,e))return;t.uniform2iv(this.addr,e),qq(n,e)}}function wq(t,e){const n=this.cache;if(void 0!==e.x)n[0]===e.x&&n[1]===e.y&&n[2]===e.z||(t.uniform3i(this.addr,e.x,e.y,e.z),n[0]=e.x,n[1]=e.y,n[2]=e.z);else{if(cq(n,e))return;t.uniform3iv(this.addr,e),qq(n,e)}}function bq(t,e){const n=this.cache;if(void 0!==e.x)n[0]===e.x&&n[1]===e.y&&n[2]===e.z&&n[3]===e.w||(t.uniform4i(this.addr,e.x,e.y,e.z,e.w),n[0]=e.x,n[1]=e.y,n[2]=e.z,n[3]=e.w);else{if(cq(n,e))return;t.uniform4iv(this.addr,e),qq(n,e)}}function Mq(t,e){const n=this.cache;n[0]!==e&&(t.uniform1ui(this.addr,e),n[0]=e)}function Sq(t,e){const n=this.cache;if(void 0!==e.x)n[0]===e.x&&n[1]===e.y||(t.uniform2ui(this.addr,e.x,e.y),n[0]=e.x,n[1]=e.y);else{if(cq(n,e))return;t.uniform2uiv(this.addr,e),qq(n,e)}}function Tq(t,e){const n=this.cache;if(void 0!==e.x)n[0]===e.x&&n[1]===e.y&&n[2]===e.z||(t.uniform3ui(this.addr,e.x,e.y,e.z),n[0]=e.x,n[1]=e.y,n[2]=e.z);else{if(cq(n,e))return;t.uniform3uiv(this.addr,e),qq(n,e)}}function Eq(t,e){const n=this.cache;if(void 0!==e.x)n[0]===e.x&&n[1]===e.y&&n[2]===e.z&&n[3]===e.w||(t.uniform4ui(this.addr,e.x,e.y,e.z,e.w),n[0]=e.x,n[1]=e.y,n[2]=e.z,n[3]=e.w);else{if(cq(n,e))return;t.uniform4uiv(this.addr,e),qq(n,e)}}function Aq(t,e,n){const i=this.cache,r=n.allocateTextureUnit();let s;i[0]!==r&&(t.uniform1i(this.addr,r),i[0]=r),this.type===t.SAMPLER_2D_SHADOW?(tq.compareFunction=515,s=tq):s=Qc,n.setTexture2D(e||s,r)}function Cq(t,e,n){const i=this.cache,r=n.allocateTextureUnit();i[0]!==r&&(t.uniform1i(this.addr,r),i[0]=r),n.setTexture3D(e||nq,r)}function Rq(t,e,n){const i=this.cache,r=n.allocateTextureUnit();i[0]!==r&&(t.uniform1i(this.addr,r),i[0]=r),n.setTextureCube(e||iq,r)}function zq(t,e,n){const i=this.cache,r=n.allocateTextureUnit();i[0]!==r&&(t.uniform1i(this.addr,r),i[0]=r),n.setTexture2DArray(e||eq,r)}function Iq(t,e){t.uniform1fv(this.addr,e)}function Pq(t,e){const n=hq(e,this.size,2);t.uniform2fv(this.addr,n)}function Lq(t,e){const n=hq(e,this.size,3);t.uniform3fv(this.addr,n)}function Nq(t,e){const n=hq(e,this.size,4);t.uniform4fv(this.addr,n)}function kq(t,e){const n=hq(e,this.size,4);t.uniformMatrix2fv(this.addr,!1,n)}function Dq(t,e){const n=hq(e,this.size,9);t.uniformMatrix3fv(this.addr,!1,n)}function Uq(t,e){const n=hq(e,this.size,16);t.uniformMatrix4fv(this.addr,!1,n)}function Oq(t,e){t.uniform1iv(this.addr,e)}function Fq(t,e){t.uniform2iv(this.addr,e)}function Bq(t,e){t.uniform3iv(this.addr,e)}function Vq(t,e){t.uniform4iv(this.addr,e)}function Hq(t,e){t.uniform1uiv(this.addr,e)}function Gq(t,e){t.uniform2uiv(this.addr,e)}function Wq(t,e){t.uniform3uiv(this.addr,e)}function jq(t,e){t.uniform4uiv(this.addr,e)}function Xq(t,e,n){const i=this.cache,r=e.length,s=uq(n,r);cq(i,s)||(t.uniform1iv(this.addr,s),qq(i,s));for(let a=0;a!==r;++a)n.setTexture2D(e[a]||Qc,s[a])}function Yq(t,e,n){const i=this.cache,r=e.length,s=uq(n,r);cq(i,s)||(t.uniform1iv(this.addr,s),qq(i,s));for(let a=0;a!==r;++a)n.setTexture3D(e[a]||nq,s[a])}function Zq(t,e,n){const i=this.cache,r=e.length,s=uq(n,r);cq(i,s)||(t.uniform1iv(this.addr,s),qq(i,s));for(let a=0;a!==r;++a)n.setTextureCube(e[a]||iq,s[a])}function Jq(t,e,n){const i=this.cache,r=e.length,s=uq(n,r);cq(i,s)||(t.uniform1iv(this.addr,s),qq(i,s));for(let a=0;a!==r;++a)n.setTexture2DArray(e[a]||eq,s[a])}class $q{constructor(t,e,n){this.id=t,this.addr=n,this.cache=[],this.type=e.type,this.setValue=function(t){switch(t){case 5126:return dq;case 35664:return mq;case 35665:return pq;case 35666:return fq;case 35674:return gq;case 35675:return xq;case 35676:return _q;case 5124:case 35670:return yq;case 35667:case 35671:return vq;case 35668:case 35672:return wq;case 35669:case 35673:return bq;case 5125:return Mq;case 36294:return Sq;case 36295:return Tq;case 36296:return Eq;case 35678:case 36198:case 36298:case 36306:case 35682:return Aq;case 35679:case 36299:case 36307:return Cq;case 35680:case 36300:case 36308:case 36293:return Rq;case 36289:case 36303:case 36311:case 36292:return zq}}(e.type)}}class Kq{constructor(t,e,n){this.id=t,this.addr=n,this.cache=[],this.type=e.type,this.size=e.size,this.setValue=function(t){switch(t){case 5126:return Iq;case 35664:return Pq;case 35665:return Lq;case 35666:return Nq;case 35674:return kq;case 35675:return Dq;case 35676:return Uq;case 5124:case 35670:return Oq;case 35667:case 35671:return Fq;case 35668:case 35672:return Bq;case 35669:case 35673:return Vq;case 5125:return Hq;case 36294:return Gq;case 36295:return Wq;case 36296:return jq;case 35678:case 36198:case 36298:case 36306:case 35682:return Xq;case 35679:case 36299:case 36307:return Yq;case 35680:case 36300:case 36308:case 36293:return Zq;case 36289:case 36303:case 36311:case 36292:return Jq}}(e.type)}}class Qq{constructor(t){this.id=t,this.seq=[],this.map={}}setValue(t,e,n){const i=this.seq;for(let r=0,s=i.length;r!==s;++r){const s=i[r];s.setValue(t,e[s.id],n)}}}const tu=/(\w+)(\])?(\[|\.)?/g;function eu(t,e){t.seq.push(e),t.map[e.id]=e}function nu(t,e,n){const i=t.name,r=i.length;for(tu.lastIndex=0;;){const s=tu.exec(i),a=tu.lastIndex;let o=s[1];const l="]"===s[2],h=s[3];if(l&&(o|=0),void 0===h||"["===h&&a+2===r){eu(n,void 0===h?new $q(o,t,e):new Kq(o,t,e));break}{let t=n.map[o];void 0===t&&(t=new Qq(o),eu(n,t)),n=t}}}class iu{constructor(t,e){this.seq=[],this.map={};const n=t.getProgramParameter(e,t.ACTIVE_UNIFORMS);for(let i=0;i<n;++i){const n=t.getActiveUniform(e,i);nu(n,t.getUniformLocation(e,n.name),this)}}setValue(t,e,n,i){const r=this.map[e];void 0!==r&&r.setValue(t,n,i)}setOptional(t,e,n){const i=e[n];void 0!==i&&this.setValue(t,n,i)}static upload(t,e,n,i){for(let r=0,s=e.length;r!==s;++r){const s=e[r],a=n[s.id];!1!==a.needsUpdate&&s.setValue(t,a.value,i)}}static seqWithValue(t,e){const n=[];for(let i=0,r=t.length;i!==r;++i){const r=t[i];r.id in e&&n.push(r)}return n}}function ru(t,e,n){const i=t.createShader(e);return t.shaderSource(i,n),t.compileShader(i),i}let su=0;const au=new De;function ou(t,e,n){const i=t.getShaderParameter(e,t.COMPILE_STATUS),r=t.getShaderInfoLog(e).trim();if(i&&""===r)return"";const s=/ERROR: 0:(\d+)/.exec(r);if(s){const i=parseInt(s[1]);return n.toUpperCase()+"\n\n"+r+"\n\n"+function(t,e){const n=t.split("\n"),i=[],r=Math.max(e-6,0),s=Math.min(e+6,n.length);for(let a=r;a<s;a++){const t=a+1;i.push(`${t===e?">":" "} ${t}: ${n[a]}`)}return i.join("\n")}(t.getShaderSource(e),i)}return r}function lu(t,e){const n=function(t){Ze._getMatrix(au,Ze.workingColorSpace,t);const e=`mat3( ${au.elements.map((t=>t.toFixed(4)))} )`;switch(Ze.getTransfer(t)){case he:return[e,"LinearTransferOETF"];case ce:return[e,"sRGBTransferOETF"];default:return console.warn("THREE.WebGLProgram: Unsupported color space: ",t),[e,"LinearTransferOETF"]}}(e);return[`vec4 ${t}( vec4 value ) {`,`\treturn ${n[1]}( vec4( value.rgb * ${n[0]}, value.a ) );`,"}"].join("\n")}function hu(t,e){let n;switch(e){case 1:n="Linear";break;case 2:n="Reinhard";break;case 3:n="Cineon";break;case 4:n="ACESFilmic";break;case 6:n="AgX";break;case 7:n="Neutral";break;case 5:n="Custom";break;default:console.warn("THREE.WebGLProgram: Unsupported toneMapping:",e),n="Linear"}return"vec3 "+t+"( vec3 color ) { return "+n+"ToneMapping( color ); }"}const cu=new un;function qu(){Ze.getLuminanceCoefficients(cu);return["float luminance( const in vec3 rgb ) {",`\tconst vec3 weights = vec3( ${cu.x.toFixed(4)}, ${cu.y.toFixed(4)}, ${cu.z.toFixed(4)} );`,"\treturn dot( weights, rgb );","}"].join("\n")}function uu(t){return""!==t}function du(t,e){const n=e.numSpotLightShadows+e.numSpotLightMaps-e.numSpotLightShadowsWithMaps;return t.replace(/NUM_DIR_LIGHTS/g,e.numDirLights).replace(/NUM_SPOT_LIGHTS/g,e.numSpotLights).replace(/NUM_SPOT_LIGHT_MAPS/g,e.numSpotLightMaps).replace(/NUM_SPOT_LIGHT_COORDS/g,n).replace(/NUM_RECT_AREA_LIGHTS/g,e.numRectAreaLights).replace(/NUM_POINT_LIGHTS/g,e.numPointLights).replace(/NUM_HEMI_LIGHTS/g,e.numHemiLights).replace(/NUM_DIR_LIGHT_SHADOWS/g,e.numDirLightShadows).replace(/NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS/g,e.numSpotLightShadowsWithMaps).replace(/NUM_SPOT_LIGHT_SHADOWS/g,e.numSpotLightShadows).replace(/NUM_POINT_LIGHT_SHADOWS/g,e.numPointLightShadows)}function mu(t,e){return t.replace(/NUM_CLIPPING_PLANES/g,e.numClippingPlanes).replace(/UNION_CLIPPING_PLANES/g,e.numClippingPlanes-e.numClipIntersection)}const pu=/^[ \t]*#include +<([\w\d./]+)>/gm;function fu(t){return t.replace(pu,xu)}const gu=new Map;function xu(t,e){let n=gc[e];if(void 0===n){const t=gu.get(e);if(void 0===t)throw new Error("Can not resolve #include <"+e+">");n=gc[t],console.warn('THREE.WebGLRenderer: Shader chunk "%s" has been deprecated. Use "%s" instead.',e,t)}return fu(n)}const _u=/#pragma unroll_loop_start\s+for\s*\(\s*int\s+i\s*=\s*(\d+)\s*;\s*i\s*<\s*(\d+)\s*;\s*i\s*\+\+\s*\)\s*{([\s\S]+?)}\s+#pragma unroll_loop_end/g;function yu(t){return t.replace(_u,vu)}function vu(t,e,n,i){let r="";for(let s=parseInt(e);s<parseInt(n);s++)r+=i.replace(/\[\s*i\s*\]/g,"[ "+s+" ]").replace(/UNROLLED_LOOP_INDEX/g,s);return r}function wu(t){let e=`precision ${t.precision} float;\n\tprecision ${t.precision} int;\n\tprecision ${t.precision} sampler2D;\n\tprecision ${t.precision} samplerCube;\n\tprecision ${t.precision} sampler3D;\n\tprecision ${t.precision} sampler2DArray;\n\tprecision ${t.precision} sampler2DShadow;\n\tprecision ${t.precision} samplerCubeShadow;\n\tprecision ${t.precision} sampler2DArrayShadow;\n\tprecision ${t.precision} isampler2D;\n\tprecision ${t.precision} isampler3D;\n\tprecision ${t.precision} isamplerCube;\n\tprecision ${t.precision} isampler2DArray;\n\tprecision ${t.precision} usampler2D;\n\tprecision ${t.precision} usampler3D;\n\tprecision ${t.precision} usamplerCube;\n\tprecision ${t.precision} usampler2DArray;\n\t`;return"highp"===t.precision?e+="\n#define HIGH_PRECISION":"mediump"===t.precision?e+="\n#define MEDIUM_PRECISION":"lowp"===t.precision&&(e+="\n#define LOW_PRECISION"),e}function bu(t,e,n,i){const r=t.getContext(),s=n.defines;let a=n.vertexShader,o=n.fragmentShader;const l=function(t){let e="SHADOWMAP_TYPE_BASIC";return 1===t.shadowMapType?e="SHADOWMAP_TYPE_PCF":2===t.shadowMapType?e="SHADOWMAP_TYPE_PCF_SOFT":3===t.shadowMapType&&(e="SHADOWMAP_TYPE_VSM"),e}(n),h=function(t){let e="ENVMAP_TYPE_CUBE";if(t.envMap)switch(t.envMapMode){case k:case D:e="ENVMAP_TYPE_CUBE";break;case F:e="ENVMAP_TYPE_CUBE_UV"}return e}(n),c=function(t){let e="ENVMAP_MODE_REFLECTION";t.envMap&&t.envMapMode===D&&(e="ENVMAP_MODE_REFRACTION");return e}(n),q=function(t){let e="ENVMAP_BLENDING_NONE";if(t.envMap)switch(t.combine){case 0:e="ENVMAP_BLENDING_MULTIPLY";break;case 1:e="ENVMAP_BLENDING_MIX";break;case 2:e="ENVMAP_BLENDING_ADD"}return e}(n),u=function(t){const e=t.envMapCubeUVHeight;if(null===e)return null;const n=Math.log2(e)-2,i=1/e;return{texelWidth:1/(3*Math.max(Math.pow(2,n),112)),texelHeight:i,maxMip:n}}(n),d=function(t){return[t.extensionClipCullDistance?"#extension GL_ANGLE_clip_cull_distance : require":"",t.extensionMultiDraw?"#extension GL_ANGLE_multi_draw : require":""].filter(uu).join("\n")}(n),m=function(t){const e=[];for(const n in t){const i=t[n];!1!==i&&e.push("#define "+n+" "+i)}return e.join("\n")}(s),p=r.createProgram();let f,g,x=n.glslVersion?"#version "+n.glslVersion+"\n":"";n.isRawShaderMaterial?(f=["#define SHADER_TYPE "+n.shaderType,"#define SHADER_NAME "+n.shaderName,m].filter(uu).join("\n"),f.length>0&&(f+="\n"),g=["#define SHADER_TYPE "+n.shaderType,"#define SHADER_NAME "+n.shaderName,m].filter(uu).join("\n"),g.length>0&&(g+="\n")):(f=[wu(n),"#define SHADER_TYPE "+n.shaderType,"#define SHADER_NAME "+n.shaderName,m,n.extensionClipCullDistance?"#define USE_CLIP_DISTANCE":"",n.batching?"#define USE_BATCHING":"",n.batchingColor?"#define USE_BATCHING_COLOR":"",n.instancing?"#define USE_INSTANCING":"",n.instancingColor?"#define USE_INSTANCING_COLOR":"",n.instancingMorph?"#define USE_INSTANCING_MORPH":"",n.useFog&&n.fog?"#define USE_FOG":"",n.useFog&&n.fogExp2?"#define FOG_EXP2":"",n.map?"#define USE_MAP":"",n.envMap?"#define USE_ENVMAP":"",n.envMap?"#define "+c:"",n.lightMap?"#define USE_LIGHTMAP":"",n.aoMap?"#define USE_AOMAP":"",n.bumpMap?"#define USE_BUMPMAP":"",n.normalMap?"#define USE_NORMALMAP":"",n.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",n.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",n.displacementMap?"#define USE_DISPLACEMENTMAP":"",n.emissiveMap?"#define USE_EMISSIVEMAP":"",n.anisotropy?"#define USE_ANISOTROPY":"",n.anisotropyMap?"#define USE_ANISOTROPYMAP":"",n.clearcoatMap?"#define USE_CLEARCOATMAP":"",n.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",n.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",n.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",n.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",n.specularMap?"#define USE_SPECULARMAP":"",n.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",n.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",n.roughnessMap?"#define USE_ROUGHNESSMAP":"",n.metalnessMap?"#define USE_METALNESSMAP":"",n.alphaMap?"#define USE_ALPHAMAP":"",n.alphaHash?"#define USE_ALPHAHASH":"",n.transmission?"#define USE_TRANSMISSION":"",n.transmissionMap?"#define USE_TRANSMISSIONMAP":"",n.thicknessMap?"#define USE_THICKNESSMAP":"",n.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",n.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",n.mapUv?"#define MAP_UV "+n.mapUv:"",n.alphaMapUv?"#define ALPHAMAP_UV "+n.alphaMapUv:"",n.lightMapUv?"#define LIGHTMAP_UV "+n.lightMapUv:"",n.aoMapUv?"#define AOMAP_UV "+n.aoMapUv:"",n.emissiveMapUv?"#define EMISSIVEMAP_UV "+n.emissiveMapUv:"",n.bumpMapUv?"#define BUMPMAP_UV "+n.bumpMapUv:"",n.normalMapUv?"#define NORMALMAP_UV "+n.normalMapUv:"",n.displacementMapUv?"#define DISPLACEMENTMAP_UV "+n.displacementMapUv:"",n.metalnessMapUv?"#define METALNESSMAP_UV "+n.metalnessMapUv:"",n.roughnessMapUv?"#define ROUGHNESSMAP_UV "+n.roughnessMapUv:"",n.anisotropyMapUv?"#define ANISOTROPYMAP_UV "+n.anisotropyMapUv:"",n.clearcoatMapUv?"#define CLEARCOATMAP_UV "+n.clearcoatMapUv:"",n.clearcoatNormalMapUv?"#define CLEARCOAT_NORMALMAP_UV "+n.clearcoatNormalMapUv:"",n.clearcoatRoughnessMapUv?"#define CLEARCOAT_ROUGHNESSMAP_UV "+n.clearcoatRoughnessMapUv:"",n.iridescenceMapUv?"#define IRIDESCENCEMAP_UV "+n.iridescenceMapUv:"",n.iridescenceThicknessMapUv?"#define IRIDESCENCE_THICKNESSMAP_UV "+n.iridescenceThicknessMapUv:"",n.sheenColorMapUv?"#define SHEEN_COLORMAP_UV "+n.sheenColorMapUv:"",n.sheenRoughnessMapUv?"#define SHEEN_ROUGHNESSMAP_UV "+n.sheenRoughnessMapUv:"",n.specularMapUv?"#define SPECULARMAP_UV "+n.specularMapUv:"",n.specularColorMapUv?"#define SPECULAR_COLORMAP_UV "+n.specularColorMapUv:"",n.specularIntensityMapUv?"#define SPECULAR_INTENSITYMAP_UV "+n.specularIntensityMapUv:"",n.transmissionMapUv?"#define TRANSMISSIONMAP_UV "+n.transmissionMapUv:"",n.thicknessMapUv?"#define THICKNESSMAP_UV "+n.thicknessMapUv:"",n.vertexTangents&&!1===n.flatShading?"#define USE_TANGENT":"",n.vertexColors?"#define USE_COLOR":"",n.vertexAlphas?"#define USE_COLOR_ALPHA":"",n.vertexUv1s?"#define USE_UV1":"",n.vertexUv2s?"#define USE_UV2":"",n.vertexUv3s?"#define USE_UV3":"",n.pointsUvs?"#define USE_POINTS_UV":"",n.flatShading?"#define FLAT_SHADED":"",n.skinning?"#define USE_SKINNING":"",n.morphTargets?"#define USE_MORPHTARGETS":"",n.morphNormals&&!1===n.flatShading?"#define USE_MORPHNORMALS":"",n.morphColors?"#define USE_MORPHCOLORS":"",n.morphTargetsCount>0?"#define MORPHTARGETS_TEXTURE_STRIDE "+n.morphTextureStride:"",n.morphTargetsCount>0?"#define MORPHTARGETS_COUNT "+n.morphTargetsCount:"",n.doubleSided?"#define DOUBLE_SIDED":"",n.flipSided?"#define FLIP_SIDED":"",n.shadowMapEnabled?"#define USE_SHADOWMAP":"",n.shadowMapEnabled?"#define "+l:"",n.sizeAttenuation?"#define USE_SIZEATTENUATION":"",n.numLightProbes>0?"#define USE_LIGHT_PROBES":"",n.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",n.reverseDepthBuffer?"#define USE_REVERSEDEPTHBUF":"","uniform mat4 modelMatrix;","uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform mat4 viewMatrix;","uniform mat3 normalMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;","#ifdef USE_INSTANCING","\tattribute mat4 instanceMatrix;","#endif","#ifdef USE_INSTANCING_COLOR","\tattribute vec3 instanceColor;","#endif","#ifdef USE_INSTANCING_MORPH","\tuniform sampler2D morphTexture;","#endif","attribute vec3 position;","attribute vec3 normal;","attribute vec2 uv;","#ifdef USE_UV1","\tattribute vec2 uv1;","#endif","#ifdef USE_UV2","\tattribute vec2 uv2;","#endif","#ifdef USE_UV3","\tattribute vec2 uv3;","#endif","#ifdef USE_TANGENT","\tattribute vec4 tangent;","#endif","#if defined( USE_COLOR_ALPHA )","\tattribute vec4 color;","#elif defined( USE_COLOR )","\tattribute vec3 color;","#endif","#ifdef USE_SKINNING","\tattribute vec4 skinIndex;","\tattribute vec4 skinWeight;","#endif","\n"].filter(uu).join("\n"),g=[wu(n),"#define SHADER_TYPE "+n.shaderType,"#define SHADER_NAME "+n.shaderName,m,n.useFog&&n.fog?"#define USE_FOG":"",n.useFog&&n.fogExp2?"#define FOG_EXP2":"",n.alphaToCoverage?"#define ALPHA_TO_COVERAGE":"",n.map?"#define USE_MAP":"",n.matcap?"#define USE_MATCAP":"",n.envMap?"#define USE_ENVMAP":"",n.envMap?"#define "+h:"",n.envMap?"#define "+c:"",n.envMap?"#define "+q:"",u?"#define CUBEUV_TEXEL_WIDTH "+u.texelWidth:"",u?"#define CUBEUV_TEXEL_HEIGHT "+u.texelHeight:"",u?"#define CUBEUV_MAX_MIP "+u.maxMip+".0":"",n.lightMap?"#define USE_LIGHTMAP":"",n.aoMap?"#define USE_AOMAP":"",n.bumpMap?"#define USE_BUMPMAP":"",n.normalMap?"#define USE_NORMALMAP":"",n.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",n.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",n.emissiveMap?"#define USE_EMISSIVEMAP":"",n.anisotropy?"#define USE_ANISOTROPY":"",n.anisotropyMap?"#define USE_ANISOTROPYMAP":"",n.clearcoat?"#define USE_CLEARCOAT":"",n.clearcoatMap?"#define USE_CLEARCOATMAP":"",n.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",n.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",n.dispersion?"#define USE_DISPERSION":"",n.iridescence?"#define USE_IRIDESCENCE":"",n.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",n.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",n.specularMap?"#define USE_SPECULARMAP":"",n.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",n.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",n.roughnessMap?"#define USE_ROUGHNESSMAP":"",n.metalnessMap?"#define USE_METALNESSMAP":"",n.alphaMap?"#define USE_ALPHAMAP":"",n.alphaTest?"#define USE_ALPHATEST":"",n.alphaHash?"#define USE_ALPHAHASH":"",n.sheen?"#define USE_SHEEN":"",n.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",n.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",n.transmission?"#define USE_TRANSMISSION":"",n.transmissionMap?"#define USE_TRANSMISSIONMAP":"",n.thicknessMap?"#define USE_THICKNESSMAP":"",n.vertexTangents&&!1===n.flatShading?"#define USE_TANGENT":"",n.vertexColors||n.instancingColor||n.batchingColor?"#define USE_COLOR":"",n.vertexAlphas?"#define USE_COLOR_ALPHA":"",n.vertexUv1s?"#define USE_UV1":"",n.vertexUv2s?"#define USE_UV2":"",n.vertexUv3s?"#define USE_UV3":"",n.pointsUvs?"#define USE_POINTS_UV":"",n.gradientMap?"#define USE_GRADIENTMAP":"",n.flatShading?"#define FLAT_SHADED":"",n.doubleSided?"#define DOUBLE_SIDED":"",n.flipSided?"#define FLIP_SIDED":"",n.shadowMapEnabled?"#define USE_SHADOWMAP":"",n.shadowMapEnabled?"#define "+l:"",n.premultipliedAlpha?"#define PREMULTIPLIED_ALPHA":"",n.numLightProbes>0?"#define USE_LIGHT_PROBES":"",n.decodeVideoTexture?"#define DECODE_VIDEO_TEXTURE":"",n.decodeVideoTextureEmissive?"#define DECODE_VIDEO_TEXTURE_EMISSIVE":"",n.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",n.reverseDepthBuffer?"#define USE_REVERSEDEPTHBUF":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;",0!==n.toneMapping?"#define TONE_MAPPING":"",0!==n.toneMapping?gc.tonemapping_pars_fragment:"",0!==n.toneMapping?hu("toneMapping",n.toneMapping):"",n.dithering?"#define DITHERING":"",n.opaque?"#define OPAQUE":"",gc.colorspace_pars_fragment,lu("linearToOutputTexel",n.outputColorSpace),qu(),n.useDepthPacking?"#define DEPTH_PACKING "+n.depthPacking:"","\n"].filter(uu).join("\n")),a=fu(a),a=du(a,n),a=mu(a,n),o=fu(o),o=du(o,n),o=mu(o,n),a=yu(a),o=yu(o),!0!==n.isRawShaderMaterial&&(x="#version 300 es\n",f=[d,"#define attribute in","#define varying out","#define texture2D texture"].join("\n")+"\n"+f,g=["#define varying in",n.glslVersion===ve?"":"layout(location = 0) out highp vec4 pc_fragColor;",n.glslVersion===ve?"":"#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"+g);const _=x+f+a,y=x+g+o,v=ru(r,r.VERTEX_SHADER,_),w=ru(r,r.FRAGMENT_SHADER,y);function b(e){if(t.debug.checkShaderErrors){const n=r.getProgramInfoLog(p).trim(),i=r.getShaderInfoLog(v).trim(),s=r.getShaderInfoLog(w).trim();let a=!0,o=!0;if(!1===r.getProgramParameter(p,r.LINK_STATUS))if(a=!1,"function"==typeof t.debug.onShaderError)t.debug.onShaderError(r,p,v,w);else{const t=ou(r,v,"vertex"),i=ou(r,w,"fragment");console.error("THREE.WebGLProgram: Shader Error "+r.getError()+" - VALIDATE_STATUS "+r.getProgramParameter(p,r.VALIDATE_STATUS)+"\n\nMaterial Name: "+e.name+"\nMaterial Type: "+e.type+"\n\nProgram Info Log: "+n+"\n"+t+"\n"+i)}else""!==n?console.warn("THREE.WebGLProgram: Program Info Log:",n):""!==i&&""!==s||(o=!1);o&&(e.diagnostics={runnable:a,programLog:n,vertexShader:{log:i,prefix:f},fragmentShader:{log:s,prefix:g}})}r.deleteShader(v),r.deleteShader(w),M=new iu(r,p),S=function(t,e){const n={},i=t.getProgramParameter(e,t.ACTIVE_ATTRIBUTES);for(let r=0;r<i;r++){const i=t.getActiveAttrib(e,r),s=i.name;let a=1;i.type===t.FLOAT_MAT2&&(a=2),i.type===t.FLOAT_MAT3&&(a=3),i.type===t.FLOAT_MAT4&&(a=4),n[s]={type:i.type,location:t.getAttribLocation(e,s),locationSize:a}}return n}(r,p)}let M,S;r.attachShader(p,v),r.attachShader(p,w),void 0!==n.index0AttributeName?r.bindAttribLocation(p,0,n.index0AttributeName):!0===n.morphTargets&&r.bindAttribLocation(p,0,"position"),r.linkProgram(p),this.getUniforms=function(){return void 0===M&&b(this),M},this.getAttributes=function(){return void 0===S&&b(this),S};let T=!1===n.rendererExtensionParallelShaderCompile;return this.isReady=function(){return!1===T&&(T=r.getProgramParameter(p,37297)),T},this.destroy=function(){i.releaseStatesOfProgram(this),r.deleteProgram(p),this.program=void 0},this.type=n.shaderType,this.name=n.shaderName,this.id=su++,this.cacheKey=e,this.usedTimes=1,this.program=p,this.vertexShader=v,this.fragmentShader=w,this}let Mu=0;class Su{constructor(){this.shaderCache=new Map,this.materialCache=new Map}update(t){const e=t.vertexShader,n=t.fragmentShader,i=this._getShaderStage(e),r=this._getShaderStage(n),s=this._getShaderCacheForMaterial(t);return!1===s.has(i)&&(s.add(i),i.usedTimes++),!1===s.has(r)&&(s.add(r),r.usedTimes++),this}remove(t){const e=this.materialCache.get(t);for(const n of e)n.usedTimes--,0===n.usedTimes&&this.shaderCache.delete(n.code);return this.materialCache.delete(t),this}getVertexShaderID(t){return this._getShaderStage(t.vertexShader).id}getFragmentShaderID(t){return this._getShaderStage(t.fragmentShader).id}dispose(){this.shaderCache.clear(),this.materialCache.clear()}_getShaderCacheForMaterial(t){const e=this.materialCache;let n=e.get(t);return void 0===n&&(n=new Set,e.set(t,n)),n}_getShaderStage(t){const e=this.shaderCache;let n=e.get(t);return void 0===n&&(n=new Tu(t),e.set(t,n)),n}}class Tu{constructor(t){this.id=Mu++,this.code=t,this.usedTimes=0}}function Eu(t,e,n,i,r,s,a){const o=new Qn,l=new Su,h=new Set,c=[],q=r.logarithmicDepthBuffer,u=r.vertexTextures;let d=r.precision;const m={MeshDepthMaterial:"depth",MeshDistanceMaterial:"distanceRGBA",MeshNormalMaterial:"normal",MeshBasicMaterial:"basic",MeshLambertMaterial:"lambert",MeshPhongMaterial:"phong",MeshToonMaterial:"toon",MeshStandardMaterial:"physical",MeshPhysicalMaterial:"physical",MeshMatcapMaterial:"matcap",LineBasicMaterial:"basic",LineDashedMaterial:"dashed",PointsMaterial:"points",ShadowMaterial:"shadow",SpriteMaterial:"sprite"};function p(t){return h.add(t),0===t?"uv":`uv${t}`}return{getParameters:function(s,o,c,f,g){const x=f.fog,_=g.geometry,y=s.isMeshStandardMaterial?f.environment:null,v=(s.isMeshStandardMaterial?n:e).get(s.envMap||y),w=v&&v.mapping===F?v.image.height:null,b=m[s.type];null!==s.precision&&(d=r.getMaxPrecision(s.precision),d!==s.precision&&console.warn("THREE.WebGLProgram.getParameters:",s.precision,"not supported, using",d,"instead."));const M=_.morphAttributes.position||_.morphAttributes.normal||_.morphAttributes.color,S=void 0!==M?M.length:0;let T,E,A,C,R=0;if(void 0!==_.morphAttributes.position&&(R=1),void 0!==_.morphAttributes.normal&&(R=2),void 0!==_.morphAttributes.color&&(R=3),b){const t=_c[b];T=t.vertexShader,E=t.fragmentShader}else T=s.vertexShader,E=s.fragmentShader,l.update(s),A=l.getVertexShaderID(s),C=l.getFragmentShaderID(s);const z=t.getRenderTarget(),I=t.state.buffers.depth.getReversed(),P=!0===g.isInstancedMesh,L=!0===g.isBatchedMesh,N=!!s.map,k=!!s.matcap,D=!!v,U=!!s.aoMap,O=!!s.lightMap,B=!!s.bumpMap,V=!!s.normalMap,H=!!s.displacementMap,G=!!s.emissiveMap,W=!!s.metalnessMap,j=!!s.roughnessMap,X=s.anisotropy>0,Y=s.clearcoat>0,Z=s.dispersion>0,J=s.iridescence>0,$=s.sheen>0,K=s.transmission>0,Q=X&&!!s.anisotropyMap,tt=Y&&!!s.clearcoatMap,et=Y&&!!s.clearcoatNormalMap,nt=Y&&!!s.clearcoatRoughnessMap,it=J&&!!s.iridescenceMap,rt=J&&!!s.iridescenceThicknessMap,st=$&&!!s.sheenColorMap,at=$&&!!s.sheenRoughnessMap,ot=!!s.specularMap,lt=!!s.specularColorMap,ht=!!s.specularIntensityMap,ct=K&&!!s.transmissionMap,qt=K&&!!s.thicknessMap,ut=!!s.gradientMap,dt=!!s.alphaMap,mt=s.alphaTest>0,pt=!!s.alphaHash,ft=!!s.extensions;let gt=0;s.toneMapped&&(null!==z&&!0!==z.isXRRenderTarget||(gt=t.toneMapping));const xt={shaderID:b,shaderType:s.type,shaderName:s.name,vertexShader:T,fragmentShader:E,defines:s.defines,customVertexShaderID:A,customFragmentShaderID:C,isRawShaderMaterial:!0===s.isRawShaderMaterial,glslVersion:s.glslVersion,precision:d,batching:L,batchingColor:L&&null!==g._colorsTexture,instancing:P,instancingColor:P&&null!==g.instanceColor,instancingMorph:P&&null!==g.morphTexture,supportsVertexTextures:u,outputColorSpace:null===z?t.outputColorSpace:!0===z.isXRRenderTarget?z.texture.colorSpace:le,alphaToCoverage:!!s.alphaToCoverage,map:N,matcap:k,envMap:D,envMapMode:D&&v.mapping,envMapCubeUVHeight:w,aoMap:U,lightMap:O,bumpMap:B,normalMap:V,displacementMap:u&&H,emissiveMap:G,normalMapObjectSpace:V&&1===s.normalMapType,normalMapTangentSpace:V&&0===s.normalMapType,metalnessMap:W,roughnessMap:j,anisotropy:X,anisotropyMap:Q,clearcoat:Y,clearcoatMap:tt,clearcoatNormalMap:et,clearcoatRoughnessMap:nt,dispersion:Z,iridescence:J,iridescenceMap:it,iridescenceThicknessMap:rt,sheen:$,sheenColorMap:st,sheenRoughnessMap:at,specularMap:ot,specularColorMap:lt,specularIntensityMap:ht,transmission:K,transmissionMap:ct,thicknessMap:qt,gradientMap:ut,opaque:!1===s.transparent&&1===s.blending&&!1===s.alphaToCoverage,alphaMap:dt,alphaTest:mt,alphaHash:pt,combine:s.combine,mapUv:N&&p(s.map.channel),aoMapUv:U&&p(s.aoMap.channel),lightMapUv:O&&p(s.lightMap.channel),bumpMapUv:B&&p(s.bumpMap.channel),normalMapUv:V&&p(s.normalMap.channel),displacementMapUv:H&&p(s.displacementMap.channel),emissiveMapUv:G&&p(s.emissiveMap.channel),metalnessMapUv:W&&p(s.metalnessMap.channel),roughnessMapUv:j&&p(s.roughnessMap.channel),anisotropyMapUv:Q&&p(s.anisotropyMap.channel),clearcoatMapUv:tt&&p(s.clearcoatMap.channel),clearcoatNormalMapUv:et&&p(s.clearcoatNormalMap.channel),clearcoatRoughnessMapUv:nt&&p(s.clearcoatRoughnessMap.channel),iridescenceMapUv:it&&p(s.iridescenceMap.channel),iridescenceThicknessMapUv:rt&&p(s.iridescenceThicknessMap.channel),sheenColorMapUv:st&&p(s.sheenColorMap.channel),sheenRoughnessMapUv:at&&p(s.sheenRoughnessMap.channel),specularMapUv:ot&&p(s.specularMap.channel),specularColorMapUv:lt&&p(s.specularColorMap.channel),specularIntensityMapUv:ht&&p(s.specularIntensityMap.channel),transmissionMapUv:ct&&p(s.transmissionMap.channel),thicknessMapUv:qt&&p(s.thicknessMap.channel),alphaMapUv:dt&&p(s.alphaMap.channel),vertexTangents:!!_.attributes.tangent&&(V||X),vertexColors:s.vertexColors,vertexAlphas:!0===s.vertexColors&&!!_.attributes.color&&4===_.attributes.color.itemSize,pointsUvs:!0===g.isPoints&&!!_.attributes.uv&&(N||dt),fog:!!x,useFog:!0===s.fog,fogExp2:!!x&&x.isFogExp2,flatShading:!0===s.flatShading,sizeAttenuation:!0===s.sizeAttenuation,logarithmicDepthBuffer:q,reverseDepthBuffer:I,skinning:!0===g.isSkinnedMesh,morphTargets:void 0!==_.morphAttributes.position,morphNormals:void 0!==_.morphAttributes.normal,morphColors:void 0!==_.morphAttributes.color,morphTargetsCount:S,morphTextureStride:R,numDirLights:o.directional.length,numPointLights:o.point.length,numSpotLights:o.spot.length,numSpotLightMaps:o.spotLightMap.length,numRectAreaLights:o.rectArea.length,numHemiLights:o.hemi.length,numDirLightShadows:o.directionalShadowMap.length,numPointLightShadows:o.pointShadowMap.length,numSpotLightShadows:o.spotShadowMap.length,numSpotLightShadowsWithMaps:o.numSpotLightShadowsWithMaps,numLightProbes:o.numLightProbes,numClippingPlanes:a.numPlanes,numClipIntersection:a.numIntersection,dithering:s.dithering,shadowMapEnabled:t.shadowMap.enabled&&c.length>0,shadowMapType:t.shadowMap.type,toneMapping:gt,decodeVideoTexture:N&&!0===s.map.isVideoTexture&&Ze.getTransfer(s.map.colorSpace)===ce,decodeVideoTextureEmissive:G&&!0===s.emissiveMap.isVideoTexture&&Ze.getTransfer(s.emissiveMap.colorSpace)===ce,premultipliedAlpha:s.premultipliedAlpha,doubleSided:2===s.side,flipSided:1===s.side,useDepthPacking:s.depthPacking>=0,depthPacking:s.depthPacking||0,index0AttributeName:s.index0AttributeName,extensionClipCullDistance:ft&&!0===s.extensions.clipCullDistance&&i.has("WEBGL_clip_cull_distance"),extensionMultiDraw:(ft&&!0===s.extensions.multiDraw||L)&&i.has("WEBGL_multi_draw"),rendererExtensionParallelShaderCompile:i.has("KHR_parallel_shader_compile"),customProgramCacheKey:s.customProgramCacheKey()};return xt.vertexUv1s=h.has(1),xt.vertexUv2s=h.has(2),xt.vertexUv3s=h.has(3),h.clear(),xt},getProgramCacheKey:function(e){const n=[];if(e.shaderID?n.push(e.shaderID):(n.push(e.customVertexShaderID),n.push(e.customFragmentShaderID)),void 0!==e.defines)for(const t in e.defines)n.push(t),n.push(e.defines[t]);return!1===e.isRawShaderMaterial&&(!function(t,e){t.push(e.precision),t.push(e.outputColorSpace),t.push(e.envMapMode),t.push(e.envMapCubeUVHeight),t.push(e.mapUv),t.push(e.alphaMapUv),t.push(e.lightMapUv),t.push(e.aoMapUv),t.push(e.bumpMapUv),t.push(e.normalMapUv),t.push(e.displacementMapUv),t.push(e.emissiveMapUv),t.push(e.metalnessMapUv),t.push(e.roughnessMapUv),t.push(e.anisotropyMapUv),t.push(e.clearcoatMapUv),t.push(e.clearcoatNormalMapUv),t.push(e.clearcoatRoughnessMapUv),t.push(e.iridescenceMapUv),t.push(e.iridescenceThicknessMapUv),t.push(e.sheenColorMapUv),t.push(e.sheenRoughnessMapUv),t.push(e.specularMapUv),t.push(e.specularColorMapUv),t.push(e.specularIntensityMapUv),t.push(e.transmissionMapUv),t.push(e.thicknessMapUv),t.push(e.combine),t.push(e.fogExp2),t.push(e.sizeAttenuation),t.push(e.morphTargetsCount),t.push(e.morphAttributeCount),t.push(e.numDirLights),t.push(e.numPointLights),t.push(e.numSpotLights),t.push(e.numSpotLightMaps),t.push(e.numHemiLights),t.push(e.numRectAreaLights),t.push(e.numDirLightShadows),t.push(e.numPointLightShadows),t.push(e.numSpotLightShadows),t.push(e.numSpotLightShadowsWithMaps),t.push(e.numLightProbes),t.push(e.shadowMapType),t.push(e.toneMapping),t.push(e.numClippingPlanes),t.push(e.numClipIntersection),t.push(e.depthPacking)}(n,e),function(t,e){o.disableAll(),e.supportsVertexTextures&&o.enable(0);e.instancing&&o.enable(1);e.instancingColor&&o.enable(2);e.instancingMorph&&o.enable(3);e.matcap&&o.enable(4);e.envMap&&o.enable(5);e.normalMapObjectSpace&&o.enable(6);e.normalMapTangentSpace&&o.enable(7);e.clearcoat&&o.enable(8);e.iridescence&&o.enable(9);e.alphaTest&&o.enable(10);e.vertexColors&&o.enable(11);e.vertexAlphas&&o.enable(12);e.vertexUv1s&&o.enable(13);e.vertexUv2s&&o.enable(14);e.vertexUv3s&&o.enable(15);e.vertexTangents&&o.enable(16);e.anisotropy&&o.enable(17);e.alphaHash&&o.enable(18);e.batching&&o.enable(19);e.dispersion&&o.enable(20);e.batchingColor&&o.enable(21);t.push(o.mask),o.disableAll(),e.fog&&o.enable(0);e.useFog&&o.enable(1);e.flatShading&&o.enable(2);e.logarithmicDepthBuffer&&o.enable(3);e.reverseDepthBuffer&&o.enable(4);e.skinning&&o.enable(5);e.morphTargets&&o.enable(6);e.morphNormals&&o.enable(7);e.morphColors&&o.enable(8);e.premultipliedAlpha&&o.enable(9);e.shadowMapEnabled&&o.enable(10);e.doubleSided&&o.enable(11);e.flipSided&&o.enable(12);e.useDepthPacking&&o.enable(13);e.dithering&&o.enable(14);e.transmission&&o.enable(15);e.sheen&&o.enable(16);e.opaque&&o.enable(17);e.pointsUvs&&o.enable(18);e.decodeVideoTexture&&o.enable(19);e.decodeVideoTextureEmissive&&o.enable(20);e.alphaToCoverage&&o.enable(21);t.push(o.mask)}(n,e),n.push(t.outputColorSpace)),n.push(e.customProgramCacheKey),n.join()},getUniforms:function(t){const e=m[t.type];let n;if(e){const t=_c[e];n=vr.clone(t.uniforms)}else n=t.uniforms;return n},acquireProgram:function(e,n){let i;for(let t=0,r=c.length;t<r;t++){const e=c[t];if(e.cacheKey===n){i=e,++i.usedTimes;break}}return void 0===i&&(i=new bu(t,n,e,s),c.push(i)),i},releaseProgram:function(t){if(0==--t.usedTimes){const e=c.indexOf(t);c[e]=c[c.length-1],c.pop(),t.destroy()}},releaseShaderCache:function(t){l.remove(t)},programs:c,dispose:function(){l.dispose()}}}function Au(){let t=new WeakMap;return{has:function(e){return t.has(e)},get:function(e){let n=t.get(e);return void 0===n&&(n={},t.set(e,n)),n},remove:function(e){t.delete(e)},update:function(e,n,i){t.get(e)[n]=i},dispose:function(){t=new WeakMap}}}function Cu(t,e){return t.groupOrder!==e.groupOrder?t.groupOrder-e.groupOrder:t.renderOrder!==e.renderOrder?t.renderOrder-e.renderOrder:t.material.id!==e.material.id?t.material.id-e.material.id:t.z!==e.z?t.z-e.z:t.id-e.id}function Ru(t,e){return t.groupOrder!==e.groupOrder?t.groupOrder-e.groupOrder:t.renderOrder!==e.renderOrder?t.renderOrder-e.renderOrder:t.z!==e.z?e.z-t.z:t.id-e.id}function zu(){const t=[];let e=0;const n=[],i=[],r=[];function s(n,i,r,s,a,o){let l=t[e];return void 0===l?(l={id:n.id,object:n,geometry:i,material:r,groupOrder:s,renderOrder:n.renderOrder,z:a,group:o},t[e]=l):(l.id=n.id,l.object=n,l.geometry=i,l.material=r,l.groupOrder=s,l.renderOrder=n.renderOrder,l.z=a,l.group=o),e++,l}return{opaque:n,transmissive:i,transparent:r,init:function(){e=0,n.length=0,i.length=0,r.length=0},push:function(t,e,a,o,l,h){const c=s(t,e,a,o,l,h);a.transmission>0?i.push(c):!0===a.transparent?r.push(c):n.push(c)},unshift:function(t,e,a,o,l,h){const c=s(t,e,a,o,l,h);a.transmission>0?i.unshift(c):!0===a.transparent?r.unshift(c):n.unshift(c)},finish:function(){for(let n=e,i=t.length;n<i;n++){const e=t[n];if(null===e.id)break;e.id=null,e.object=null,e.geometry=null,e.material=null,e.group=null}},sort:function(t,e){n.length>1&&n.sort(t||Cu),i.length>1&&i.sort(e||Ru),r.length>1&&r.sort(e||Ru)}}}function Iu(){let t=new WeakMap;return{get:function(e,n){const i=t.get(e);let r;return void 0===i?(r=new zu,t.set(e,[r])):n>=i.length?(r=new zu,i.push(r)):r=i[n],r},dispose:function(){t=new WeakMap}}}function Pu(){const t={};return{get:function(e){if(void 0!==t[e.id])return t[e.id];let n;switch(e.type){case"DirectionalLight":n={direction:new un,color:new Li};break;case"SpotLight":n={position:new un,direction:new un,color:new Li,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case"PointLight":n={position:new un,color:new Li,distance:0,decay:0};break;case"HemisphereLight":n={direction:new un,skyColor:new Li,groundColor:new Li};break;case"RectAreaLight":n={color:new Li,position:new un,halfWidth:new un,halfHeight:new un}}return t[e.id]=n,n}}}let Lu=0;function Nu(t,e){return(e.castShadow?2:0)-(t.castShadow?2:0)+(e.map?1:0)-(t.map?1:0)}function ku(t){const e=new Pu,n=function(){const t={};return{get:function(e){if(void 0!==t[e.id])return t[e.id];let n;switch(e.type){case"DirectionalLight":case"SpotLight":n={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new ke};break;case"PointLight":n={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new ke,shadowCameraNear:1,shadowCameraFar:1e3}}return t[e.id]=n,n}}}(),i={version:0,hash:{directionalLength:-1,pointLength:-1,spotLength:-1,rectAreaLength:-1,hemiLength:-1,numDirectionalShadows:-1,numPointShadows:-1,numSpotShadows:-1,numSpotMaps:-1,numLightProbes:-1},ambient:[0,0,0],probe:[],directional:[],directionalShadow:[],directionalShadowMap:[],directionalShadowMatrix:[],spot:[],spotLightMap:[],spotShadow:[],spotShadowMap:[],spotLightMatrix:[],rectArea:[],rectAreaLTC1:null,rectAreaLTC2:null,point:[],pointShadow:[],pointShadowMap:[],pointShadowMatrix:[],hemi:[],numSpotLightShadowsWithMaps:0,numLightProbes:0};for(let o=0;o<9;o++)i.probe.push(new un);const r=new un,s=new Vn,a=new Vn;return{setup:function(r){let s=0,a=0,o=0;for(let t=0;t<9;t++)i.probe[t].set(0,0,0);let l=0,h=0,c=0,q=0,u=0,d=0,m=0,p=0,f=0,g=0,x=0;r.sort(Nu);for(let t=0,y=r.length;t<y;t++){const _=r[t],y=_.color,v=_.intensity,w=_.distance,b=_.shadow&&_.shadow.map?_.shadow.map.texture:null;if(_.isAmbientLight)s+=y.r*v,a+=y.g*v,o+=y.b*v;else if(_.isLightProbe){for(let t=0;t<9;t++)i.probe[t].addScaledVector(_.sh.coefficients[t],v);x++}else if(_.isDirectionalLight){const t=e.get(_);if(t.color.copy(_.color).multiplyScalar(_.intensity),_.castShadow){const t=_.shadow,e=n.get(_);e.shadowIntensity=t.intensity,e.shadowBias=t.bias,e.shadowNormalBias=t.normalBias,e.shadowRadius=t.radius,e.shadowMapSize=t.mapSize,i.directionalShadow[l]=e,i.directionalShadowMap[l]=b,i.directionalShadowMatrix[l]=_.shadow.matrix,d++}i.directional[l]=t,l++}else if(_.isSpotLight){const t=e.get(_);t.position.setFromMatrixPosition(_.matrixWorld),t.color.copy(y).multiplyScalar(v),t.distance=w,t.coneCos=Math.cos(_.angle),t.penumbraCos=Math.cos(_.angle*(1-_.penumbra)),t.decay=_.decay,i.spot[c]=t;const r=_.shadow;if(_.map&&(i.spotLightMap[f]=_.map,f++,r.updateMatrices(_),_.castShadow&&g++),i.spotLightMatrix[c]=r.matrix,_.castShadow){const t=n.get(_);t.shadowIntensity=r.intensity,t.shadowBias=r.bias,t.shadowNormalBias=r.normalBias,t.shadowRadius=r.radius,t.shadowMapSize=r.mapSize,i.spotShadow[c]=t,i.spotShadowMap[c]=b,p++}c++}else if(_.isRectAreaLight){const t=e.get(_);t.color.copy(y).multiplyScalar(v),t.halfWidth.set(.5*_.width,0,0),t.halfHeight.set(0,.5*_.height,0),i.rectArea[q]=t,q++}else if(_.isPointLight){const t=e.get(_);if(t.color.copy(_.color).multiplyScalar(_.intensity),t.distance=_.distance,t.decay=_.decay,_.castShadow){const t=_.shadow,e=n.get(_);e.shadowIntensity=t.intensity,e.shadowBias=t.bias,e.shadowNormalBias=t.normalBias,e.shadowRadius=t.radius,e.shadowMapSize=t.mapSize,e.shadowCameraNear=t.camera.near,e.shadowCameraFar=t.camera.far,i.pointShadow[h]=e,i.pointShadowMap[h]=b,i.pointShadowMatrix[h]=_.shadow.matrix,m++}i.point[h]=t,h++}else if(_.isHemisphereLight){const t=e.get(_);t.skyColor.copy(_.color).multiplyScalar(v),t.groundColor.copy(_.groundColor).multiplyScalar(v),i.hemi[u]=t,u++}}q>0&&(!0===t.has("OES_texture_float_linear")?(i.rectAreaLTC1=xc.LTC_FLOAT_1,i.rectAreaLTC2=xc.LTC_FLOAT_2):(i.rectAreaLTC1=xc.LTC_HALF_1,i.rectAreaLTC2=xc.LTC_HALF_2)),i.ambient[0]=s,i.ambient[1]=a,i.ambient[2]=o;const _=i.hash;_.directionalLength===l&&_.pointLength===h&&_.spotLength===c&&_.rectAreaLength===q&&_.hemiLength===u&&_.numDirectionalShadows===d&&_.numPointShadows===m&&_.numSpotShadows===p&&_.numSpotMaps===f&&_.numLightProbes===x||(i.directional.length=l,i.spot.length=c,i.rectArea.length=q,i.point.length=h,i.hemi.length=u,i.directionalShadow.length=d,i.directionalShadowMap.length=d,i.pointShadow.length=m,i.pointShadowMap.length=m,i.spotShadow.length=p,i.spotShadowMap.length=p,i.directionalShadowMatrix.length=d,i.pointShadowMatrix.length=m,i.spotLightMatrix.length=p+f-g,i.spotLightMap.length=f,i.numSpotLightShadowsWithMaps=g,i.numLightProbes=x,_.directionalLength=l,_.pointLength=h,_.spotLength=c,_.rectAreaLength=q,_.hemiLength=u,_.numDirectionalShadows=d,_.numPointShadows=m,_.numSpotShadows=p,_.numSpotMaps=f,_.numLightProbes=x,i.version=Lu++)},setupView:function(t,e){let n=0,o=0,l=0,h=0,c=0;const q=e.matrixWorldInverse;for(let u=0,d=t.length;u<d;u++){const e=t[u];if(e.isDirectionalLight){const t=i.directional[n];t.direction.setFromMatrixPosition(e.matrixWorld),r.setFromMatrixPosition(e.target.matrixWorld),t.direction.sub(r),t.direction.transformDirection(q),n++}else if(e.isSpotLight){const t=i.spot[l];t.position.setFromMatrixPosition(e.matrixWorld),t.position.applyMatrix4(q),t.direction.setFromMatrixPosition(e.matrixWorld),r.setFromMatrixPosition(e.target.matrixWorld),t.direction.sub(r),t.direction.transformDirection(q),l++}else if(e.isRectAreaLight){const t=i.rectArea[h];t.position.setFromMatrixPosition(e.matrixWorld),t.position.applyMatrix4(q),a.identity(),s.copy(e.matrixWorld),s.premultiply(q),a.extractRotation(s),t.halfWidth.set(.5*e.width,0,0),t.halfHeight.set(0,.5*e.height,0),t.halfWidth.applyMatrix4(a),t.halfHeight.applyMatrix4(a),h++}else if(e.isPointLight){const t=i.point[o];t.position.setFromMatrixPosition(e.matrixWorld),t.position.applyMatrix4(q),o++}else if(e.isHemisphereLight){const t=i.hemi[c];t.direction.setFromMatrixPosition(e.matrixWorld),t.direction.transformDirection(q),c++}}},state:i}}function Du(t){const e=new ku(t),n=[],i=[];const r={lightsArray:n,shadowsArray:i,camera:null,lights:e,transmissionRenderTarget:{}};return{init:function(t){r.camera=t,n.length=0,i.length=0},state:r,setupLights:function(){e.setup(n)},setupLightsView:function(t){e.setupView(n,t)},pushLight:function(t){n.push(t)},pushShadow:function(t){i.push(t)}}}function Uu(t){let e=new WeakMap;return{get:function(n,i=0){const r=e.get(n);let s;return void 0===r?(s=new Du(t),e.set(n,[s])):i>=r.length?(s=new Du(t),r.push(s)):s=r[i],s},dispose:function(){e=new WeakMap}}}function Ou(t,e,n){let i=new Ps;const o=new ke,l=new ke,h=new an,c=new el({depthPacking:3201}),q=new nl,u={},d=n.maxTextureSize,m={[r]:1,[s]:0,[a]:2},p=new wr({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new ke},radius:{value:4}},vertexShader:"void main() {\n\tgl_Position = vec4( position, 1.0 );\n}",fragmentShader:"uniform sampler2D shadow_pass;\nuniform vec2 resolution;\nuniform float radius;\n#include <packing>\nvoid main() {\n\tconst float samples = float( VSM_SAMPLES );\n\tfloat mean = 0.0;\n\tfloat squared_mean = 0.0;\n\tfloat uvStride = samples <= 1.0 ? 0.0 : 2.0 / ( samples - 1.0 );\n\tfloat uvStart = samples <= 1.0 ? 0.0 : - 1.0;\n\tfor ( float i = 0.0; i < samples; i ++ ) {\n\t\tfloat uvOffset = uvStart + i * uvStride;\n\t\t#ifdef HORIZONTAL_PASS\n\t\t\tvec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( uvOffset, 0.0 ) * radius ) / resolution ) );\n\t\t\tmean += distribution.x;\n\t\t\tsquared_mean += distribution.y * distribution.y + distribution.x * distribution.x;\n\t\t#else\n\t\t\tfloat depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, uvOffset ) * radius ) / resolution ) );\n\t\t\tmean += depth;\n\t\t\tsquared_mean += depth * depth;\n\t\t#endif\n\t}\n\tmean = mean / samples;\n\tsquared_mean = squared_mean / samples;\n\tfloat std_dev = sqrt( squared_mean - mean * mean );\n\tgl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) );\n}"}),f=p.clone();f.defines.HORIZONTAL_PASS=1;const g=new ir;g.setAttribute("position",new ji(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));const x=new pr(g,p),_=this;this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=1;let y=this.type;function v(n,i){const r=e.update(x);p.defines.VSM_SAMPLES!==n.blurSamples&&(p.defines.VSM_SAMPLES=n.blurSamples,f.defines.VSM_SAMPLES=n.blurSamples,p.needsUpdate=!0,f.needsUpdate=!0),null===n.mapPass&&(n.mapPass=new ln(o.x,o.y)),p.uniforms.shadow_pass.value=n.map.texture,p.uniforms.resolution.value=n.mapSize,p.uniforms.radius.value=n.radius,t.setRenderTarget(n.mapPass),t.clear(),t.renderBufferDirect(i,null,r,p,x,null),f.uniforms.shadow_pass.value=n.mapPass.texture,f.uniforms.resolution.value=n.mapSize,f.uniforms.radius.value=n.radius,t.setRenderTarget(n.map),t.clear(),t.renderBufferDirect(i,null,r,f,x,null)}function w(e,n,i,r){let s=null;const a=!0===i.isPointLight?e.customDistanceMaterial:e.customDepthMaterial;if(void 0!==a)s=a;else if(s=!0===i.isPointLight?q:c,t.localClippingEnabled&&!0===n.clipShadows&&Array.isArray(n.clippingPlanes)&&0!==n.clippingPlanes.length||n.displacementMap&&0!==n.displacementScale||n.alphaMap&&n.alphaTest>0||n.map&&n.alphaTest>0){const t=s.uuid,e=n.uuid;let i=u[t];void 0===i&&(i={},u[t]=i);let r=i[e];void 0===r&&(r=s.clone(),i[e]=r,n.addEventListener("dispose",M)),s=r}if(s.visible=n.visible,s.wireframe=n.wireframe,s.side=3===r?null!==n.shadowSide?n.shadowSide:n.side:null!==n.shadowSide?n.shadowSide:m[n.side],s.alphaMap=n.alphaMap,s.alphaTest=n.alphaTest,s.map=n.map,s.clipShadows=n.clipShadows,s.clippingPlanes=n.clippingPlanes,s.clipIntersection=n.clipIntersection,s.displacementMap=n.displacementMap,s.displacementScale=n.displacementScale,s.displacementBias=n.displacementBias,s.wireframeLinewidth=n.wireframeLinewidth,s.linewidth=n.linewidth,!0===i.isPointLight&&!0===s.isMeshDistanceMaterial){t.properties.get(s).light=i}return s}function b(n,r,s,a,o){if(!1===n.visible)return;if(n.layers.test(r.layers)&&(n.isMesh||n.isLine||n.isPoints)&&(n.castShadow||n.receiveShadow&&3===o)&&(!n.frustumCulled||i.intersectsObject(n))){n.modelViewMatrix.multiplyMatrices(s.matrixWorldInverse,n.matrixWorld);const i=e.update(n),l=n.material;if(Array.isArray(l)){const e=i.groups;for(let h=0,c=e.length;h<c;h++){const c=e[h],q=l[c.materialIndex];if(q&&q.visible){const e=w(n,q,a,o);n.onBeforeShadow(t,n,r,s,i,e,c),t.renderBufferDirect(s,null,i,e,n,c),n.onAfterShadow(t,n,r,s,i,e,c)}}}else if(l.visible){const e=w(n,l,a,o);n.onBeforeShadow(t,n,r,s,i,e,null),t.renderBufferDirect(s,null,i,e,n,null),n.onAfterShadow(t,n,r,s,i,e,null)}}const l=n.children;for(let t=0,e=l.length;t<e;t++)b(l[t],r,s,a,o)}function M(t){t.target.removeEventListener("dispose",M);for(const e in u){const n=u[e],i=t.target.uuid;if(i in n){n[i].dispose(),delete n[i]}}}this.render=function(e,n,r){if(!1===_.enabled)return;if(!1===_.autoUpdate&&!1===_.needsUpdate)return;if(0===e.length)return;const s=t.getRenderTarget(),a=t.getActiveCubeFace(),c=t.getActiveMipmapLevel(),q=t.state;q.setBlending(0),q.buffers.color.setClear(1,1,1,1),q.buffers.depth.setTest(!0),q.setScissorTest(!1);const u=3!==y&&3===this.type,m=3===y&&3!==this.type;for(let p=0,f=e.length;p<f;p++){const s=e[p],a=s.shadow;if(void 0===a){console.warn("THREE.WebGLShadowMap:",s,"has no shadow.");continue}if(!1===a.autoUpdate&&!1===a.needsUpdate)continue;o.copy(a.mapSize);const c=a.getFrameExtents();if(o.multiply(c),l.copy(a.mapSize),(o.x>d||o.y>d)&&(o.x>d&&(l.x=Math.floor(d/c.x),o.x=l.x*c.x,a.mapSize.x=l.x),o.y>d&&(l.y=Math.floor(d/c.y),o.y=l.y*c.y,a.mapSize.y=l.y)),null===a.map||!0===u||!0===m){const t=3!==this.type?{minFilter:G,magFilter:G}:{};null!==a.map&&a.map.dispose(),a.map=new ln(o.x,o.y,t),a.map.texture.name=s.name+".shadowMap",a.camera.updateProjectionMatrix()}t.setRenderTarget(a.map),t.clear();const f=a.getViewportCount();for(let t=0;t<f;t++){const e=a.getViewport(t);h.set(l.x*e.x,l.y*e.y,l.x*e.z,l.y*e.w),q.viewport(h),a.updateMatrices(s,t),i=a.getFrustum(),b(n,r,a.camera,s,this.type)}!0!==a.isPointLightShadow&&3===this.type&&v(a,r),a.needsUpdate=!1}y=this.type,_.needsUpdate=!1,t.setRenderTarget(s,a,c)}}const Fu={[S]:1,[E]:6,[C]:7,[A]:5,[T]:0,[z]:2,[I]:4,[R]:3};function Bu(t,e){const n=new function(){let e=!1;const n=new an;let i=null;const r=new an(0,0,0,0);return{setMask:function(n){i===n||e||(t.colorMask(n,n,n,n),i=n)},setLocked:function(t){e=t},setClear:function(e,i,s,a,o){!0===o&&(e*=a,i*=a,s*=a),n.set(e,i,s,a),!1===r.equals(n)&&(t.clearColor(e,i,s,a),r.copy(n))},reset:function(){e=!1,i=null,r.set(-1,0,0,0)}}},i=new function(){let n=!1,i=!1,r=null,s=null,a=null;return{setReversed:function(t){if(i!==t){const t=e.get("EXT_clip_control");i?t.clipControlEXT(t.LOWER_LEFT_EXT,t.ZERO_TO_ONE_EXT):t.clipControlEXT(t.LOWER_LEFT_EXT,t.NEGATIVE_ONE_TO_ONE_EXT);const n=a;a=null,this.setClear(n)}i=t},getReversed:function(){return i},setTest:function(e){e?rt(t.DEPTH_TEST):st(t.DEPTH_TEST)},setMask:function(e){r===e||n||(t.depthMask(e),r=e)},setFunc:function(e){if(i&&(e=Fu[e]),s!==e){switch(e){case 0:t.depthFunc(t.NEVER);break;case 1:t.depthFunc(t.ALWAYS);break;case 2:t.depthFunc(t.LESS);break;case 3:default:t.depthFunc(t.LEQUAL);break;case 4:t.depthFunc(t.EQUAL);break;case 5:t.depthFunc(t.GEQUAL);break;case 6:t.depthFunc(t.GREATER);break;case 7:t.depthFunc(t.NOTEQUAL)}s=e}},setLocked:function(t){n=t},setClear:function(e){a!==e&&(i&&(e=1-e),t.clearDepth(e),a=e)},reset:function(){n=!1,r=null,s=null,a=null,i=!1}}},r=new function(){let e=!1,n=null,i=null,r=null,s=null,a=null,o=null,l=null,h=null;return{setTest:function(n){e||(n?rt(t.STENCIL_TEST):st(t.STENCIL_TEST))},setMask:function(i){n===i||e||(t.stencilMask(i),n=i)},setFunc:function(e,n,a){i===e&&r===n&&s===a||(t.stencilFunc(e,n,a),i=e,r=n,s=a)},setOp:function(e,n,i){a===e&&o===n&&l===i||(t.stencilOp(e,n,i),a=e,o=n,l=i)},setLocked:function(t){e=t},setClear:function(e){h!==e&&(t.clearStencil(e),h=e)},reset:function(){e=!1,n=null,i=null,r=null,s=null,a=null,o=null,l=null,h=null}}},s=new WeakMap,a=new WeakMap;let S={},T={},E=new WeakMap,A=[],C=null,R=!1,z=null,I=null,P=null,L=null,N=null,k=null,D=null,U=new Li(0,0,0),O=0,F=!1,B=null,V=null,H=null,G=null,W=null;const j=t.getParameter(t.MAX_COMBINED_TEXTURE_IMAGE_UNITS);let X=!1,Y=0;const Z=t.getParameter(t.VERSION);-1!==Z.indexOf("WebGL")?(Y=parseFloat(/^WebGL (\d)/.exec(Z)[1]),X=Y>=1):-1!==Z.indexOf("OpenGL ES")&&(Y=parseFloat(/^OpenGL ES (\d)/.exec(Z)[1]),X=Y>=2);let J=null,$={};const K=t.getParameter(t.SCISSOR_BOX),Q=t.getParameter(t.VIEWPORT),tt=(new an).fromArray(K),et=(new an).fromArray(Q);function nt(e,n,i,r){const s=new Uint8Array(4),a=t.createTexture();t.bindTexture(e,a),t.texParameteri(e,t.TEXTURE_MIN_FILTER,t.NEAREST),t.texParameteri(e,t.TEXTURE_MAG_FILTER,t.NEAREST);for(let o=0;o<i;o++)e===t.TEXTURE_3D||e===t.TEXTURE_2D_ARRAY?t.texImage3D(n,0,t.RGBA,1,1,r,0,t.RGBA,t.UNSIGNED_BYTE,s):t.texImage2D(n+o,0,t.RGBA,1,1,0,t.RGBA,t.UNSIGNED_BYTE,s);return a}const it={};function rt(e){!0!==S[e]&&(t.enable(e),S[e]=!0)}function st(e){!1!==S[e]&&(t.disable(e),S[e]=!1)}it[t.TEXTURE_2D]=nt(t.TEXTURE_2D,t.TEXTURE_2D,1),it[t.TEXTURE_CUBE_MAP]=nt(t.TEXTURE_CUBE_MAP,t.TEXTURE_CUBE_MAP_POSITIVE_X,6),it[t.TEXTURE_2D_ARRAY]=nt(t.TEXTURE_2D_ARRAY,t.TEXTURE_2D_ARRAY,1,1),it[t.TEXTURE_3D]=nt(t.TEXTURE_3D,t.TEXTURE_3D,1,1),n.setClear(0,0,0,1),i.setClear(1),r.setClear(0),rt(t.DEPTH_TEST),i.setFunc(3),ht(!1),ct(1),rt(t.CULL_FACE),lt(0);const at={[o]:t.FUNC_ADD,[l]:t.FUNC_SUBTRACT,[h]:t.FUNC_REVERSE_SUBTRACT};at[103]=t.MIN,at[104]=t.MAX;const ot={[c]:t.ZERO,[q]:t.ONE,[u]:t.SRC_COLOR,[m]:t.SRC_ALPHA,[y]:t.SRC_ALPHA_SATURATE,[x]:t.DST_COLOR,[f]:t.DST_ALPHA,[d]:t.ONE_MINUS_SRC_COLOR,[p]:t.ONE_MINUS_SRC_ALPHA,[_]:t.ONE_MINUS_DST_COLOR,[g]:t.ONE_MINUS_DST_ALPHA,[v]:t.CONSTANT_COLOR,[w]:t.ONE_MINUS_CONSTANT_COLOR,[b]:t.CONSTANT_ALPHA,[M]:t.ONE_MINUS_CONSTANT_ALPHA};function lt(e,n,i,r,s,a,l,h,c,q){if(0!==e){if(!1===R&&(rt(t.BLEND),R=!0),5===e)s=s||n,a=a||i,l=l||r,n===I&&s===N||(t.blendEquationSeparate(at[n],at[s]),I=n,N=s),i===P&&r===L&&a===k&&l===D||(t.blendFuncSeparate(ot[i],ot[r],ot[a],ot[l]),P=i,L=r,k=a,D=l),!1!==h.equals(U)&&c===O||(t.blendColor(h.r,h.g,h.b,c),U.copy(h),O=c),z=e,F=!1;else if(e!==z||q!==F){if(I===o&&N===o||(t.blendEquation(t.FUNC_ADD),I=o,N=o),q)switch(e){case 1:t.blendFuncSeparate(t.ONE,t.ONE_MINUS_SRC_ALPHA,t.ONE,t.ONE_MINUS_SRC_ALPHA);break;case 2:t.blendFunc(t.ONE,t.ONE);break;case 3:t.blendFuncSeparate(t.ZERO,t.ONE_MINUS_SRC_COLOR,t.ZERO,t.ONE);break;case 4:t.blendFuncSeparate(t.ZERO,t.SRC_COLOR,t.ZERO,t.SRC_ALPHA);break;default:console.error("THREE.WebGLState: Invalid blending: ",e)}else switch(e){case 1:t.blendFuncSeparate(t.SRC_ALPHA,t.ONE_MINUS_SRC_ALPHA,t.ONE,t.ONE_MINUS_SRC_ALPHA);break;case 2:t.blendFunc(t.SRC_ALPHA,t.ONE);break;case 3:t.blendFuncSeparate(t.ZERO,t.ONE_MINUS_SRC_COLOR,t.ZERO,t.ONE);break;case 4:t.blendFunc(t.ZERO,t.SRC_COLOR);break;default:console.error("THREE.WebGLState: Invalid blending: ",e)}P=null,L=null,k=null,D=null,U.set(0,0,0),O=0,z=e,F=q}}else!0===R&&(st(t.BLEND),R=!1)}function ht(e){B!==e&&(e?t.frontFace(t.CW):t.frontFace(t.CCW),B=e)}function ct(e){0!==e?(rt(t.CULL_FACE),e!==V&&(1===e?t.cullFace(t.BACK):2===e?t.cullFace(t.FRONT):t.cullFace(t.FRONT_AND_BACK))):st(t.CULL_FACE),V=e}function qt(e,n,i){e?(rt(t.POLYGON_OFFSET_FILL),G===n&&W===i||(t.polygonOffset(n,i),G=n,W=i)):st(t.POLYGON_OFFSET_FILL)}return{buffers:{color:n,depth:i,stencil:r},enable:rt,disable:st,bindFramebuffer:function(e,n){return T[e]!==n&&(t.bindFramebuffer(e,n),T[e]=n,e===t.DRAW_FRAMEBUFFER&&(T[t.FRAMEBUFFER]=n),e===t.FRAMEBUFFER&&(T[t.DRAW_FRAMEBUFFER]=n),!0)},drawBuffers:function(e,n){let i=A,r=!1;if(e){i=E.get(n),void 0===i&&(i=[],E.set(n,i));const s=e.textures;if(i.length!==s.length||i[0]!==t.COLOR_ATTACHMENT0){for(let e=0,n=s.length;e<n;e++)i[e]=t.COLOR_ATTACHMENT0+e;i.length=s.length,r=!0}}else i[0]!==t.BACK&&(i[0]=t.BACK,r=!0);r&&t.drawBuffers(i)},useProgram:function(e){return C!==e&&(t.useProgram(e),C=e,!0)},setBlending:lt,setMaterial:function(e,s){2===e.side?st(t.CULL_FACE):rt(t.CULL_FACE);let a=1===e.side;s&&(a=!a),ht(a),1===e.blending&&!1===e.transparent?lt(0):lt(e.blending,e.blendEquation,e.blendSrc,e.blendDst,e.blendEquationAlpha,e.blendSrcAlpha,e.blendDstAlpha,e.blendColor,e.blendAlpha,e.premultipliedAlpha),i.setFunc(e.depthFunc),i.setTest(e.depthTest),i.setMask(e.depthWrite),n.setMask(e.colorWrite);const o=e.stencilWrite;r.setTest(o),o&&(r.setMask(e.stencilWriteMask),r.setFunc(e.stencilFunc,e.stencilRef,e.stencilFuncMask),r.setOp(e.stencilFail,e.stencilZFail,e.stencilZPass)),qt(e.polygonOffset,e.polygonOffsetFactor,e.polygonOffsetUnits),!0===e.alphaToCoverage?rt(t.SAMPLE_ALPHA_TO_COVERAGE):st(t.SAMPLE_ALPHA_TO_COVERAGE)},setFlipSided:ht,setCullFace:ct,setLineWidth:function(e){e!==H&&(X&&t.lineWidth(e),H=e)},setPolygonOffset:qt,setScissorTest:function(e){e?rt(t.SCISSOR_TEST):st(t.SCISSOR_TEST)},activeTexture:function(e){void 0===e&&(e=t.TEXTURE0+j-1),J!==e&&(t.activeTexture(e),J=e)},bindTexture:function(e,n,i){void 0===i&&(i=null===J?t.TEXTURE0+j-1:J);let r=$[i];void 0===r&&(r={type:void 0,texture:void 0},$[i]=r),r.type===e&&r.texture===n||(J!==i&&(t.activeTexture(i),J=i),t.bindTexture(e,n||it[e]),r.type=e,r.texture=n)},unbindTexture:function(){const e=$[J];void 0!==e&&void 0!==e.type&&(t.bindTexture(e.type,null),e.type=void 0,e.texture=void 0)},compressedTexImage2D:function(){try{t.compressedTexImage2D.apply(t,arguments)}catch(e){console.error("THREE.WebGLState:",e)}},compressedTexImage3D:function(){try{t.compressedTexImage3D.apply(t,arguments)}catch(e){console.error("THREE.WebGLState:",e)}},texImage2D:function(){try{t.texImage2D.apply(t,arguments)}catch(e){console.error("THREE.WebGLState:",e)}},texImage3D:function(){try{t.texImage3D.apply(t,arguments)}catch(e){console.error("THREE.WebGLState:",e)}},updateUBOMapping:function(e,n){let i=a.get(n);void 0===i&&(i=new WeakMap,a.set(n,i));let r=i.get(e);void 0===r&&(r=t.getUniformBlockIndex(n,e.name),i.set(e,r))},uniformBlockBinding:function(e,n){const i=a.get(n).get(e);s.get(n)!==i&&(t.uniformBlockBinding(n,i,e.__bindingPointIndex),s.set(n,i))},texStorage2D:function(){try{t.texStorage2D.apply(t,arguments)}catch(e){console.error("THREE.WebGLState:",e)}},texStorage3D:function(){try{t.texStorage3D.apply(t,arguments)}catch(e){console.error("THREE.WebGLState:",e)}},texSubImage2D:function(){try{t.texSubImage2D.apply(t,arguments)}catch(e){console.error("THREE.WebGLState:",e)}},texSubImage3D:function(){try{t.texSubImage3D.apply(t,arguments)}catch(e){console.error("THREE.WebGLState:",e)}},compressedTexSubImage2D:function(){try{t.compressedTexSubImage2D.apply(t,arguments)}catch(e){console.error("THREE.WebGLState:",e)}},compressedTexSubImage3D:function(){try{t.compressedTexSubImage3D.apply(t,arguments)}catch(e){console.error("THREE.WebGLState:",e)}},scissor:function(e){!1===tt.equals(e)&&(t.scissor(e.x,e.y,e.z,e.w),tt.copy(e))},viewport:function(e){!1===et.equals(e)&&(t.viewport(e.x,e.y,e.z,e.w),et.copy(e))},reset:function(){t.disable(t.BLEND),t.disable(t.CULL_FACE),t.disable(t.DEPTH_TEST),t.disable(t.POLYGON_OFFSET_FILL),t.disable(t.SCISSOR_TEST),t.disable(t.STENCIL_TEST),t.disable(t.SAMPLE_ALPHA_TO_COVERAGE),t.blendEquation(t.FUNC_ADD),t.blendFunc(t.ONE,t.ZERO),t.blendFuncSeparate(t.ONE,t.ZERO,t.ONE,t.ZERO),t.blendColor(0,0,0,0),t.colorMask(!0,!0,!0,!0),t.clearColor(0,0,0,0),t.depthMask(!0),t.depthFunc(t.LESS),i.setReversed(!1),t.clearDepth(1),t.stencilMask(4294967295),t.stencilFunc(t.ALWAYS,0,4294967295),t.stencilOp(t.KEEP,t.KEEP,t.KEEP),t.clearStencil(0),t.cullFace(t.BACK),t.frontFace(t.CCW),t.polygonOffset(0,0),t.activeTexture(t.TEXTURE0),t.bindFramebuffer(t.FRAMEBUFFER,null),t.bindFramebuffer(t.DRAW_FRAMEBUFFER,null),t.bindFramebuffer(t.READ_FRAMEBUFFER,null),t.useProgram(null),t.lineWidth(1),t.scissor(0,0,t.canvas.width,t.canvas.height),t.viewport(0,0,t.canvas.width,t.canvas.height),S={},J=null,$={},T={},E=new WeakMap,A=[],C=null,R=!1,z=null,I=null,P=null,L=null,N=null,k=null,D=null,U=new Li(0,0,0),O=0,F=!1,B=null,V=null,H=null,G=null,W=null,tt.set(0,0,t.canvas.width,t.canvas.height),et.set(0,0,t.canvas.width,t.canvas.height),n.reset(),i.reset(),r.reset()}}}function Vu(t,e,n,i,r,s,a){const o=e.has("WEBGL_multisampled_render_to_texture")?e.get("WEBGL_multisampled_render_to_texture"):null,l="undefined"!=typeof navigator&&/OculusBrowser/g.test(navigator.userAgent),h=new ke,c=new WeakMap;let q;const u=new WeakMap;let d=!1;try{d="undefined"!=typeof OffscreenCanvas&&null!==new OffscreenCanvas(1,1).getContext("2d")}catch(K){}function m(t,e){return d?new OffscreenCanvas(t,e):Ve("canvas")}function p(t,e,n){let i=1;const r=$(t);if((r.width>n||r.height>n)&&(i=n/Math.max(r.width,r.height)),i<1){if("undefined"!=typeof HTMLImageElement&&t instanceof HTMLImageElement||"undefined"!=typeof HTMLCanvasElement&&t instanceof HTMLCanvasElement||"undefined"!=typeof ImageBitmap&&t instanceof ImageBitmap||"undefined"!=typeof VideoFrame&&t instanceof VideoFrame){const n=Math.floor(i*r.width),s=Math.floor(i*r.height);void 0===q&&(q=m(n,s));const a=e?m(n,s):q;a.width=n,a.height=s;return a.getContext("2d").drawImage(t,0,0,n,s),console.warn("THREE.WebGLRenderer: Texture has been resized from ("+r.width+"x"+r.height+") to ("+n+"x"+s+")."),a}return"data"in t&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+r.width+"x"+r.height+")."),t}return t}function f(t){return t.generateMipmaps}function g(e){t.generateMipmap(e)}function x(e){return e.isWebGLCubeRenderTarget?t.TEXTURE_CUBE_MAP:e.isWebGL3DRenderTarget?t.TEXTURE_3D:e.isWebGLArrayRenderTarget||e.isCompressedArrayTexture?t.TEXTURE_2D_ARRAY:t.TEXTURE_2D}function _(n,i,r,s,a=!1){if(null!==n){if(void 0!==t[n])return t[n];console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '"+n+"'")}let o=i;if(i===t.RED&&(r===t.FLOAT&&(o=t.R32F),r===t.HALF_FLOAT&&(o=t.R16F),r===t.UNSIGNED_BYTE&&(o=t.R8)),i===t.RED_INTEGER&&(r===t.UNSIGNED_BYTE&&(o=t.R8UI),r===t.UNSIGNED_SHORT&&(o=t.R16UI),r===t.UNSIGNED_INT&&(o=t.R32UI),r===t.BYTE&&(o=t.R8I),r===t.SHORT&&(o=t.R16I),r===t.INT&&(o=t.R32I)),i===t.RG&&(r===t.FLOAT&&(o=t.RG32F),r===t.HALF_FLOAT&&(o=t.RG16F),r===t.UNSIGNED_BYTE&&(o=t.RG8)),i===t.RG_INTEGER&&(r===t.UNSIGNED_BYTE&&(o=t.RG8UI),r===t.UNSIGNED_SHORT&&(o=t.RG16UI),r===t.UNSIGNED_INT&&(o=t.RG32UI),r===t.BYTE&&(o=t.RG8I),r===t.SHORT&&(o=t.RG16I),r===t.INT&&(o=t.RG32I)),i===t.RGB_INTEGER&&(r===t.UNSIGNED_BYTE&&(o=t.RGB8UI),r===t.UNSIGNED_SHORT&&(o=t.RGB16UI),r===t.UNSIGNED_INT&&(o=t.RGB32UI),r===t.BYTE&&(o=t.RGB8I),r===t.SHORT&&(o=t.RGB16I),r===t.INT&&(o=t.RGB32I)),i===t.RGBA_INTEGER&&(r===t.UNSIGNED_BYTE&&(o=t.RGBA8UI),r===t.UNSIGNED_SHORT&&(o=t.RGBA16UI),r===t.UNSIGNED_INT&&(o=t.RGBA32UI),r===t.BYTE&&(o=t.RGBA8I),r===t.SHORT&&(o=t.RGBA16I),r===t.INT&&(o=t.RGBA32I)),i===t.RGB&&r===t.UNSIGNED_INT_5_9_9_9_REV&&(o=t.RGB9_E5),i===t.RGBA){const e=a?he:Ze.getTransfer(s);r===t.FLOAT&&(o=t.RGBA32F),r===t.HALF_FLOAT&&(o=t.RGBA16F),r===t.UNSIGNED_BYTE&&(o=e===ce?t.SRGB8_ALPHA8:t.RGBA8),r===t.UNSIGNED_SHORT_4_4_4_4&&(o=t.RGBA4),r===t.UNSIGNED_SHORT_5_5_5_1&&(o=t.RGB5_A1)}return o!==t.R16F&&o!==t.R32F&&o!==t.RG16F&&o!==t.RG32F&&o!==t.RGBA16F&&o!==t.RGBA32F||e.get("EXT_color_buffer_float"),o}function y(e,n){let i;return e?null===n||n===et||n===at?i=t.DEPTH24_STENCIL8:n===nt?i=t.DEPTH32F_STENCIL8:n===Q&&(i=t.DEPTH24_STENCIL8,console.warn("DepthTexture: 16 bit depth attachment is not supported with stencil. Using 24-bit attachment.")):null===n||n===et||n===at?i=t.DEPTH_COMPONENT24:n===nt?i=t.DEPTH_COMPONENT32F:n===Q&&(i=t.DEPTH_COMPONENT16),i}function v(t,e){return!0===f(t)||t.isFramebufferTexture&&t.minFilter!==G&&t.minFilter!==X?Math.log2(Math.max(e.width,e.height))+1:void 0!==t.mipmaps&&t.mipmaps.length>0?t.mipmaps.length:t.isCompressedTexture&&Array.isArray(t.image)?e.mipmaps.length:1}function w(t){const e=t.target;e.removeEventListener("dispose",w),function(t){const e=i.get(t);if(void 0===e.__webglInit)return;const n=t.source,r=u.get(n);if(r){const i=r[e.__cacheKey];i.usedTimes--,0===i.usedTimes&&M(t),0===Object.keys(r).length&&u.delete(n)}i.remove(t)}(e),e.isVideoTexture&&c.delete(e)}function b(e){const n=e.target;n.removeEventListener("dispose",b),function(e){const n=i.get(e);e.depthTexture&&(e.depthTexture.dispose(),i.remove(e.depthTexture));if(e.isWebGLCubeRenderTarget)for(let i=0;i<6;i++){if(Array.isArray(n.__webglFramebuffer[i]))for(let e=0;e<n.__webglFramebuffer[i].length;e++)t.deleteFramebuffer(n.__webglFramebuffer[i][e]);else t.deleteFramebuffer(n.__webglFramebuffer[i]);n.__webglDepthbuffer&&t.deleteRenderbuffer(n.__webglDepthbuffer[i])}else{if(Array.isArray(n.__webglFramebuffer))for(let e=0;e<n.__webglFramebuffer.length;e++)t.deleteFramebuffer(n.__webglFramebuffer[e]);else t.deleteFramebuffer(n.__webglFramebuffer);if(n.__webglDepthbuffer&&t.deleteRenderbuffer(n.__webglDepthbuffer),n.__webglMultisampledFramebuffer&&t.deleteFramebuffer(n.__webglMultisampledFramebuffer),n.__webglColorRenderbuffer)for(let e=0;e<n.__webglColorRenderbuffer.length;e++)n.__webglColorRenderbuffer[e]&&t.deleteRenderbuffer(n.__webglColorRenderbuffer[e]);n.__webglDepthRenderbuffer&&t.deleteRenderbuffer(n.__webglDepthRenderbuffer)}const r=e.textures;for(let s=0,o=r.length;s<o;s++){const e=i.get(r[s]);e.__webglTexture&&(t.deleteTexture(e.__webglTexture),a.memory.textures--),i.remove(r[s])}i.remove(e)}(n)}function M(e){const n=i.get(e);t.deleteTexture(n.__webglTexture);const r=e.source;delete u.get(r)[n.__cacheKey],a.memory.textures--}let S=0;function T(e,r){const s=i.get(e);if(e.isVideoTexture&&function(t){const e=a.render.frame;c.get(t)!==e&&(c.set(t,e),t.update())}(e),!1===e.isRenderTargetTexture&&e.version>0&&s.__version!==e.version){const t=e.image;if(null===t)console.warn("THREE.WebGLRenderer: Texture marked for update but no image data found.");else{if(!1!==t.complete)return void I(s,e,r);console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete")}}n.bindTexture(t.TEXTURE_2D,s.__webglTexture,t.TEXTURE0+r)}const E={[B]:t.REPEAT,[V]:t.CLAMP_TO_EDGE,[H]:t.MIRRORED_REPEAT},A={[G]:t.NEAREST,[W]:t.NEAREST_MIPMAP_NEAREST,[j]:t.NEAREST_MIPMAP_LINEAR,[X]:t.LINEAR,[Y]:t.LINEAR_MIPMAP_NEAREST,[Z]:t.LINEAR_MIPMAP_LINEAR},C={[ue]:t.NEVER,[_e]:t.ALWAYS,[de]:t.LESS,[pe]:t.LEQUAL,[me]:t.EQUAL,[xe]:t.GEQUAL,[fe]:t.GREATER,[ge]:t.NOTEQUAL};function R(n,s){if(s.type!==nt||!1!==e.has("OES_texture_float_linear")||s.magFilter!==X&&s.magFilter!==Y&&s.magFilter!==j&&s.magFilter!==Z&&s.minFilter!==X&&s.minFilter!==Y&&s.minFilter!==j&&s.minFilter!==Z||console.warn("THREE.WebGLRenderer: Unable to use linear filtering with floating point textures. OES_texture_float_linear not supported on this device."),t.texParameteri(n,t.TEXTURE_WRAP_S,E[s.wrapS]),t.texParameteri(n,t.TEXTURE_WRAP_T,E[s.wrapT]),n!==t.TEXTURE_3D&&n!==t.TEXTURE_2D_ARRAY||t.texParameteri(n,t.TEXTURE_WRAP_R,E[s.wrapR]),t.texParameteri(n,t.TEXTURE_MAG_FILTER,A[s.magFilter]),t.texParameteri(n,t.TEXTURE_MIN_FILTER,A[s.minFilter]),s.compareFunction&&(t.texParameteri(n,t.TEXTURE_COMPARE_MODE,t.COMPARE_REF_TO_TEXTURE),t.texParameteri(n,t.TEXTURE_COMPARE_FUNC,C[s.compareFunction])),!0===e.has("EXT_texture_filter_anisotropic")){if(s.magFilter===G)return;if(s.minFilter!==j&&s.minFilter!==Z)return;if(s.type===nt&&!1===e.has("OES_texture_float_linear"))return;if(s.anisotropy>1||i.get(s).__currentAnisotropy){const a=e.get("EXT_texture_filter_anisotropic");t.texParameterf(n,a.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(s.anisotropy,r.getMaxAnisotropy())),i.get(s).__currentAnisotropy=s.anisotropy}}}function z(e,n){let i=!1;void 0===e.__webglInit&&(e.__webglInit=!0,n.addEventListener("dispose",w));const r=n.source;let s=u.get(r);void 0===s&&(s={},u.set(r,s));const o=function(t){const e=[];return e.push(t.wrapS),e.push(t.wrapT),e.push(t.wrapR||0),e.push(t.magFilter),e.push(t.minFilter),e.push(t.anisotropy),e.push(t.internalFormat),e.push(t.format),e.push(t.type),e.push(t.generateMipmaps),e.push(t.premultiplyAlpha),e.push(t.flipY),e.push(t.unpackAlignment),e.push(t.colorSpace),e.join()}(n);if(o!==e.__cacheKey){void 0===s[o]&&(s[o]={texture:t.createTexture(),usedTimes:0},a.memory.textures++,i=!0),s[o].usedTimes++;const r=s[e.__cacheKey];void 0!==r&&(s[e.__cacheKey].usedTimes--,0===r.usedTimes&&M(n)),e.__cacheKey=o,e.__webglTexture=s[o].texture}return i}function I(e,a,o){let l=t.TEXTURE_2D;(a.isDataArrayTexture||a.isCompressedArrayTexture)&&(l=t.TEXTURE_2D_ARRAY),a.isData3DTexture&&(l=t.TEXTURE_3D);const h=z(e,a),c=a.source;n.bindTexture(l,e.__webglTexture,t.TEXTURE0+o);const q=i.get(c);if(c.version!==q.__version||!0===h){n.activeTexture(t.TEXTURE0+o);const e=Ze.getPrimaries(Ze.workingColorSpace),i=a.colorSpace===ae?null:Ze.getPrimaries(a.colorSpace),u=a.colorSpace===ae||e===i?t.NONE:t.BROWSER_DEFAULT_WEBGL;t.pixelStorei(t.UNPACK_FLIP_Y_WEBGL,a.flipY),t.pixelStorei(t.UNPACK_PREMULTIPLY_ALPHA_WEBGL,a.premultiplyAlpha),t.pixelStorei(t.UNPACK_ALIGNMENT,a.unpackAlignment),t.pixelStorei(t.UNPACK_COLORSPACE_CONVERSION_WEBGL,u);let d=p(a.image,!1,r.maxTextureSize);d=F(a,d);const m=s.convert(a.format,a.colorSpace),x=s.convert(a.type);let w,b=_(a.internalFormat,m,x,a.colorSpace,a.isVideoTexture);R(l,a);const M=a.mipmaps,S=!0!==a.isVideoTexture,T=void 0===q.__version||!0===h,E=c.dataReady,A=v(a,d);if(a.isDepthTexture)b=y(a.format===mt,a.type),T&&(S?n.texStorage2D(t.TEXTURE_2D,1,b,d.width,d.height):n.texImage2D(t.TEXTURE_2D,0,b,d.width,d.height,0,m,x,null));else if(a.isDataTexture)if(M.length>0){S&&T&&n.texStorage2D(t.TEXTURE_2D,A,b,M[0].width,M[0].height);for(let e=0,i=M.length;e<i;e++)w=M[e],S?E&&n.texSubImage2D(t.TEXTURE_2D,e,0,0,w.width,w.height,m,x,w.data):n.texImage2D(t.TEXTURE_2D,e,b,w.width,w.height,0,m,x,w.data);a.generateMipmaps=!1}else S?(T&&n.texStorage2D(t.TEXTURE_2D,A,b,d.width,d.height),E&&n.texSubImage2D(t.TEXTURE_2D,0,0,0,d.width,d.height,m,x,d.data)):n.texImage2D(t.TEXTURE_2D,0,b,d.width,d.height,0,m,x,d.data);else if(a.isCompressedTexture)if(a.isCompressedArrayTexture){S&&T&&n.texStorage3D(t.TEXTURE_2D_ARRAY,A,b,M[0].width,M[0].height,d.depth);for(let e=0,i=M.length;e<i;e++)if(w=M[e],a.format!==ct)if(null!==m)if(S){if(E)if(a.layerUpdates.size>0){const i=dc(w.width,w.height,a.format,a.type);for(const r of a.layerUpdates){const s=w.data.subarray(r*i/w.data.BYTES_PER_ELEMENT,(r+1)*i/w.data.BYTES_PER_ELEMENT);n.compressedTexSubImage3D(t.TEXTURE_2D_ARRAY,e,0,0,r,w.width,w.height,1,m,s)}a.clearLayerUpdates()}else n.compressedTexSubImage3D(t.TEXTURE_2D_ARRAY,e,0,0,0,w.width,w.height,d.depth,m,w.data)}else n.compressedTexImage3D(t.TEXTURE_2D_ARRAY,e,b,w.width,w.height,d.depth,0,w.data,0,0);else console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()");else S?E&&n.texSubImage3D(t.TEXTURE_2D_ARRAY,e,0,0,0,w.width,w.height,d.depth,m,x,w.data):n.texImage3D(t.TEXTURE_2D_ARRAY,e,b,w.width,w.height,d.depth,0,m,x,w.data)}else{S&&T&&n.texStorage2D(t.TEXTURE_2D,A,b,M[0].width,M[0].height);for(let e=0,i=M.length;e<i;e++)w=M[e],a.format!==ct?null!==m?S?E&&n.compressedTexSubImage2D(t.TEXTURE_2D,e,0,0,w.width,w.height,m,w.data):n.compressedTexImage2D(t.TEXTURE_2D,e,b,w.width,w.height,0,w.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()"):S?E&&n.texSubImage2D(t.TEXTURE_2D,e,0,0,w.width,w.height,m,x,w.data):n.texImage2D(t.TEXTURE_2D,e,b,w.width,w.height,0,m,x,w.data)}else if(a.isDataArrayTexture)if(S){if(T&&n.texStorage3D(t.TEXTURE_2D_ARRAY,A,b,d.width,d.height,d.depth),E)if(a.layerUpdates.size>0){const e=dc(d.width,d.height,a.format,a.type);for(const i of a.layerUpdates){const r=d.data.subarray(i*e/d.data.BYTES_PER_ELEMENT,(i+1)*e/d.data.BYTES_PER_ELEMENT);n.texSubImage3D(t.TEXTURE_2D_ARRAY,0,0,0,i,d.width,d.height,1,m,x,r)}a.clearLayerUpdates()}else n.texSubImage3D(t.TEXTURE_2D_ARRAY,0,0,0,0,d.width,d.height,d.depth,m,x,d.data)}else n.texImage3D(t.TEXTURE_2D_ARRAY,0,b,d.width,d.height,d.depth,0,m,x,d.data);else if(a.isData3DTexture)S?(T&&n.texStorage3D(t.TEXTURE_3D,A,b,d.width,d.height,d.depth),E&&n.texSubImage3D(t.TEXTURE_3D,0,0,0,0,d.width,d.height,d.depth,m,x,d.data)):n.texImage3D(t.TEXTURE_3D,0,b,d.width,d.height,d.depth,0,m,x,d.data);else if(a.isFramebufferTexture){if(T)if(S)n.texStorage2D(t.TEXTURE_2D,A,b,d.width,d.height);else{let e=d.width,i=d.height;for(let r=0;r<A;r++)n.texImage2D(t.TEXTURE_2D,r,b,e,i,0,m,x,null),e>>=1,i>>=1}}else if(M.length>0){if(S&&T){const e=$(M[0]);n.texStorage2D(t.TEXTURE_2D,A,b,e.width,e.height)}for(let e=0,i=M.length;e<i;e++)w=M[e],S?E&&n.texSubImage2D(t.TEXTURE_2D,e,0,0,m,x,w):n.texImage2D(t.TEXTURE_2D,e,b,m,x,w);a.generateMipmaps=!1}else if(S){if(T){const e=$(d);n.texStorage2D(t.TEXTURE_2D,A,b,e.width,e.height)}E&&n.texSubImage2D(t.TEXTURE_2D,0,0,0,m,x,d)}else n.texImage2D(t.TEXTURE_2D,0,b,m,x,d);f(a)&&g(l),q.__version=c.version,a.onUpdate&&a.onUpdate(a)}e.__version=a.version}function P(e,r,a,l,h,c){const q=s.convert(a.format,a.colorSpace),u=s.convert(a.type),d=_(a.internalFormat,q,u,a.colorSpace),m=i.get(r),p=i.get(a);if(p.__renderTarget=r,!m.__hasExternalTextures){const e=Math.max(1,r.width>>c),i=Math.max(1,r.height>>c);h===t.TEXTURE_3D||h===t.TEXTURE_2D_ARRAY?n.texImage3D(h,c,d,e,i,r.depth,0,q,u,null):n.texImage2D(h,c,d,e,i,0,q,u,null)}n.bindFramebuffer(t.FRAMEBUFFER,e),O(r)?o.framebufferTexture2DMultisampleEXT(t.FRAMEBUFFER,l,h,p.__webglTexture,0,U(r)):(h===t.TEXTURE_2D||h>=t.TEXTURE_CUBE_MAP_POSITIVE_X&&h<=t.TEXTURE_CUBE_MAP_NEGATIVE_Z)&&t.framebufferTexture2D(t.FRAMEBUFFER,l,h,p.__webglTexture,c),n.bindFramebuffer(t.FRAMEBUFFER,null)}function L(e,n,i){if(t.bindRenderbuffer(t.RENDERBUFFER,e),n.depthBuffer){const r=n.depthTexture,s=r&&r.isDepthTexture?r.type:null,a=y(n.stencilBuffer,s),l=n.stencilBuffer?t.DEPTH_STENCIL_ATTACHMENT:t.DEPTH_ATTACHMENT,h=U(n);O(n)?o.renderbufferStorageMultisampleEXT(t.RENDERBUFFER,h,a,n.width,n.height):i?t.renderbufferStorageMultisample(t.RENDERBUFFER,h,a,n.width,n.height):t.renderbufferStorage(t.RENDERBUFFER,a,n.width,n.height),t.framebufferRenderbuffer(t.FRAMEBUFFER,l,t.RENDERBUFFER,e)}else{const e=n.textures;for(let r=0;r<e.length;r++){const a=e[r],l=s.convert(a.format,a.colorSpace),h=s.convert(a.type),c=_(a.internalFormat,l,h,a.colorSpace),q=U(n);i&&!1===O(n)?t.renderbufferStorageMultisample(t.RENDERBUFFER,q,c,n.width,n.height):O(n)?o.renderbufferStorageMultisampleEXT(t.RENDERBUFFER,q,c,n.width,n.height):t.renderbufferStorage(t.RENDERBUFFER,c,n.width,n.height)}}t.bindRenderbuffer(t.RENDERBUFFER,null)}function N(e){const r=i.get(e),s=!0===e.isWebGLCubeRenderTarget;if(r.__boundDepthTexture!==e.depthTexture){const t=e.depthTexture;if(r.__depthDisposeCallback&&r.__depthDisposeCallback(),t){const e=()=>{delete r.__boundDepthTexture,delete r.__depthDisposeCallback,t.removeEventListener("dispose",e)};t.addEventListener("dispose",e),r.__depthDisposeCallback=e}r.__boundDepthTexture=t}if(e.depthTexture&&!r.__autoAllocateDepthBuffer){if(s)throw new Error("target.depthTexture not supported in Cube render targets");!function(e,r){if(r&&r.isWebGLCubeRenderTarget)throw new Error("Depth Texture with cube render targets is not supported");if(n.bindFramebuffer(t.FRAMEBUFFER,e),!r.depthTexture||!r.depthTexture.isDepthTexture)throw new Error("renderTarget.depthTexture must be an instance of THREE.DepthTexture");const s=i.get(r.depthTexture);s.__renderTarget=r,s.__webglTexture&&r.depthTexture.image.width===r.width&&r.depthTexture.image.height===r.height||(r.depthTexture.image.width=r.width,r.depthTexture.image.height=r.height,r.depthTexture.needsUpdate=!0),T(r.depthTexture,0);const a=s.__webglTexture,l=U(r);if(r.depthTexture.format===dt)O(r)?o.framebufferTexture2DMultisampleEXT(t.FRAMEBUFFER,t.DEPTH_ATTACHMENT,t.TEXTURE_2D,a,0,l):t.framebufferTexture2D(t.FRAMEBUFFER,t.DEPTH_ATTACHMENT,t.TEXTURE_2D,a,0);else{if(r.depthTexture.format!==mt)throw new Error("Unknown depthTexture format");O(r)?o.framebufferTexture2DMultisampleEXT(t.FRAMEBUFFER,t.DEPTH_STENCIL_ATTACHMENT,t.TEXTURE_2D,a,0,l):t.framebufferTexture2D(t.FRAMEBUFFER,t.DEPTH_STENCIL_ATTACHMENT,t.TEXTURE_2D,a,0)}}(r.__webglFramebuffer,e)}else if(s){r.__webglDepthbuffer=[];for(let i=0;i<6;i++)if(n.bindFramebuffer(t.FRAMEBUFFER,r.__webglFramebuffer[i]),void 0===r.__webglDepthbuffer[i])r.__webglDepthbuffer[i]=t.createRenderbuffer(),L(r.__webglDepthbuffer[i],e,!1);else{const n=e.stencilBuffer?t.DEPTH_STENCIL_ATTACHMENT:t.DEPTH_ATTACHMENT,s=r.__webglDepthbuffer[i];t.bindRenderbuffer(t.RENDERBUFFER,s),t.framebufferRenderbuffer(t.FRAMEBUFFER,n,t.RENDERBUFFER,s)}}else if(n.bindFramebuffer(t.FRAMEBUFFER,r.__webglFramebuffer),void 0===r.__webglDepthbuffer)r.__webglDepthbuffer=t.createRenderbuffer(),L(r.__webglDepthbuffer,e,!1);else{const n=e.stencilBuffer?t.DEPTH_STENCIL_ATTACHMENT:t.DEPTH_ATTACHMENT,i=r.__webglDepthbuffer;t.bindRenderbuffer(t.RENDERBUFFER,i),t.framebufferRenderbuffer(t.FRAMEBUFFER,n,t.RENDERBUFFER,i)}n.bindFramebuffer(t.FRAMEBUFFER,null)}const k=[],D=[];function U(t){return Math.min(r.maxSamples,t.samples)}function O(t){const n=i.get(t);return t.samples>0&&!0===e.has("WEBGL_multisampled_render_to_texture")&&!1!==n.__useRenderToTexture}function F(t,e){const n=t.colorSpace,i=t.format,r=t.type;return!0===t.isCompressedTexture||!0===t.isVideoTexture||n!==le&&n!==ae&&(Ze.getTransfer(n)===ce?i===ct&&r===J||console.warn("THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType."):console.error("THREE.WebGLTextures: Unsupported texture color space:",n)),e}function $(t){return"undefined"!=typeof HTMLImageElement&&t instanceof HTMLImageElement?(h.width=t.naturalWidth||t.width,h.height=t.naturalHeight||t.height):"undefined"!=typeof VideoFrame&&t instanceof VideoFrame?(h.width=t.displayWidth,h.height=t.displayHeight):(h.width=t.width,h.height=t.height),h}this.allocateTextureUnit=function(){const t=S;return t>=r.maxTextures&&console.warn("THREE.WebGLTextures: Trying to use "+t+" texture units while this GPU supports only "+r.maxTextures),S+=1,t},this.resetTextureUnits=function(){S=0},this.setTexture2D=T,this.setTexture2DArray=function(e,r){const s=i.get(e);e.version>0&&s.__version!==e.version?I(s,e,r):n.bindTexture(t.TEXTURE_2D_ARRAY,s.__webglTexture,t.TEXTURE0+r)},this.setTexture3D=function(e,r){const s=i.get(e);e.version>0&&s.__version!==e.version?I(s,e,r):n.bindTexture(t.TEXTURE_3D,s.__webglTexture,t.TEXTURE0+r)},this.setTextureCube=function(e,a){const o=i.get(e);e.version>0&&o.__version!==e.version?function(e,a,o){if(6!==a.image.length)return;const l=z(e,a),h=a.source;n.bindTexture(t.TEXTURE_CUBE_MAP,e.__webglTexture,t.TEXTURE0+o);const c=i.get(h);if(h.version!==c.__version||!0===l){n.activeTexture(t.TEXTURE0+o);const e=Ze.getPrimaries(Ze.workingColorSpace),i=a.colorSpace===ae?null:Ze.getPrimaries(a.colorSpace),q=a.colorSpace===ae||e===i?t.NONE:t.BROWSER_DEFAULT_WEBGL;t.pixelStorei(t.UNPACK_FLIP_Y_WEBGL,a.flipY),t.pixelStorei(t.UNPACK_PREMULTIPLY_ALPHA_WEBGL,a.premultiplyAlpha),t.pixelStorei(t.UNPACK_ALIGNMENT,a.unpackAlignment),t.pixelStorei(t.UNPACK_COLORSPACE_CONVERSION_WEBGL,q);const u=a.isCompressedTexture||a.image[0].isCompressedTexture,d=a.image[0]&&a.image[0].isDataTexture,m=[];for(let t=0;t<6;t++)m[t]=u||d?d?a.image[t].image:a.image[t]:p(a.image[t],!0,r.maxCubemapSize),m[t]=F(a,m[t]);const x=m[0],y=s.convert(a.format,a.colorSpace),w=s.convert(a.type),b=_(a.internalFormat,y,w,a.colorSpace),M=!0!==a.isVideoTexture,S=void 0===c.__version||!0===l,T=h.dataReady;let E,A=v(a,x);if(R(t.TEXTURE_CUBE_MAP,a),u){M&&S&&n.texStorage2D(t.TEXTURE_CUBE_MAP,A,b,x.width,x.height);for(let e=0;e<6;e++){E=m[e].mipmaps;for(let i=0;i<E.length;i++){const r=E[i];a.format!==ct?null!==y?M?T&&n.compressedTexSubImage2D(t.TEXTURE_CUBE_MAP_POSITIVE_X+e,i,0,0,r.width,r.height,y,r.data):n.compressedTexImage2D(t.TEXTURE_CUBE_MAP_POSITIVE_X+e,i,b,r.width,r.height,0,r.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()"):M?T&&n.texSubImage2D(t.TEXTURE_CUBE_MAP_POSITIVE_X+e,i,0,0,r.width,r.height,y,w,r.data):n.texImage2D(t.TEXTURE_CUBE_MAP_POSITIVE_X+e,i,b,r.width,r.height,0,y,w,r.data)}}}else{if(E=a.mipmaps,M&&S){E.length>0&&A++;const e=$(m[0]);n.texStorage2D(t.TEXTURE_CUBE_MAP,A,b,e.width,e.height)}for(let e=0;e<6;e++)if(d){M?T&&n.texSubImage2D(t.TEXTURE_CUBE_MAP_POSITIVE_X+e,0,0,0,m[e].width,m[e].height,y,w,m[e].data):n.texImage2D(t.TEXTURE_CUBE_MAP_POSITIVE_X+e,0,b,m[e].width,m[e].height,0,y,w,m[e].data);for(let i=0;i<E.length;i++){const r=E[i].image[e].image;M?T&&n.texSubImage2D(t.TEXTURE_CUBE_MAP_POSITIVE_X+e,i+1,0,0,r.width,r.height,y,w,r.data):n.texImage2D(t.TEXTURE_CUBE_MAP_POSITIVE_X+e,i+1,b,r.width,r.height,0,y,w,r.data)}}else{M?T&&n.texSubImage2D(t.TEXTURE_CUBE_MAP_POSITIVE_X+e,0,0,0,y,w,m[e]):n.texImage2D(t.TEXTURE_CUBE_MAP_POSITIVE_X+e,0,b,y,w,m[e]);for(let i=0;i<E.length;i++){const r=E[i];M?T&&n.texSubImage2D(t.TEXTURE_CUBE_MAP_POSITIVE_X+e,i+1,0,0,y,w,r.image[e]):n.texImage2D(t.TEXTURE_CUBE_MAP_POSITIVE_X+e,i+1,b,y,w,r.image[e])}}}f(a)&&g(t.TEXTURE_CUBE_MAP),c.__version=h.version,a.onUpdate&&a.onUpdate(a)}e.__version=a.version}(o,e,a):n.bindTexture(t.TEXTURE_CUBE_MAP,o.__webglTexture,t.TEXTURE0+a)},this.rebindTextures=function(e,n,r){const s=i.get(e);void 0!==n&&P(s.__webglFramebuffer,e,e.texture,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,0),void 0!==r&&N(e)},this.setupRenderTarget=function(e){const r=e.texture,o=i.get(e),l=i.get(r);e.addEventListener("dispose",b);const h=e.textures,c=!0===e.isWebGLCubeRenderTarget,q=h.length>1;if(q||(void 0===l.__webglTexture&&(l.__webglTexture=t.createTexture()),l.__version=r.version,a.memory.textures++),c){o.__webglFramebuffer=[];for(let e=0;e<6;e++)if(r.mipmaps&&r.mipmaps.length>0){o.__webglFramebuffer[e]=[];for(let n=0;n<r.mipmaps.length;n++)o.__webglFramebuffer[e][n]=t.createFramebuffer()}else o.__webglFramebuffer[e]=t.createFramebuffer()}else{if(r.mipmaps&&r.mipmaps.length>0){o.__webglFramebuffer=[];for(let e=0;e<r.mipmaps.length;e++)o.__webglFramebuffer[e]=t.createFramebuffer()}else o.__webglFramebuffer=t.createFramebuffer();if(q)for(let e=0,n=h.length;e<n;e++){const n=i.get(h[e]);void 0===n.__webglTexture&&(n.__webglTexture=t.createTexture(),a.memory.textures++)}if(e.samples>0&&!1===O(e)){o.__webglMultisampledFramebuffer=t.createFramebuffer(),o.__webglColorRenderbuffer=[],n.bindFramebuffer(t.FRAMEBUFFER,o.__webglMultisampledFramebuffer);for(let n=0;n<h.length;n++){const i=h[n];o.__webglColorRenderbuffer[n]=t.createRenderbuffer(),t.bindRenderbuffer(t.RENDERBUFFER,o.__webglColorRenderbuffer[n]);const r=s.convert(i.format,i.colorSpace),a=s.convert(i.type),l=_(i.internalFormat,r,a,i.colorSpace,!0===e.isXRRenderTarget),c=U(e);t.renderbufferStorageMultisample(t.RENDERBUFFER,c,l,e.width,e.height),t.framebufferRenderbuffer(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0+n,t.RENDERBUFFER,o.__webglColorRenderbuffer[n])}t.bindRenderbuffer(t.RENDERBUFFER,null),e.depthBuffer&&(o.__webglDepthRenderbuffer=t.createRenderbuffer(),L(o.__webglDepthRenderbuffer,e,!0)),n.bindFramebuffer(t.FRAMEBUFFER,null)}}if(c){n.bindTexture(t.TEXTURE_CUBE_MAP,l.__webglTexture),R(t.TEXTURE_CUBE_MAP,r);for(let n=0;n<6;n++)if(r.mipmaps&&r.mipmaps.length>0)for(let i=0;i<r.mipmaps.length;i++)P(o.__webglFramebuffer[n][i],e,r,t.COLOR_ATTACHMENT0,t.TEXTURE_CUBE_MAP_POSITIVE_X+n,i);else P(o.__webglFramebuffer[n],e,r,t.COLOR_ATTACHMENT0,t.TEXTURE_CUBE_MAP_POSITIVE_X+n,0);f(r)&&g(t.TEXTURE_CUBE_MAP),n.unbindTexture()}else if(q){for(let r=0,s=h.length;r<s;r++){const s=h[r],a=i.get(s);n.bindTexture(t.TEXTURE_2D,a.__webglTexture),R(t.TEXTURE_2D,s),P(o.__webglFramebuffer,e,s,t.COLOR_ATTACHMENT0+r,t.TEXTURE_2D,0),f(s)&&g(t.TEXTURE_2D)}n.unbindTexture()}else{let i=t.TEXTURE_2D;if((e.isWebGL3DRenderTarget||e.isWebGLArrayRenderTarget)&&(i=e.isWebGL3DRenderTarget?t.TEXTURE_3D:t.TEXTURE_2D_ARRAY),n.bindTexture(i,l.__webglTexture),R(i,r),r.mipmaps&&r.mipmaps.length>0)for(let n=0;n<r.mipmaps.length;n++)P(o.__webglFramebuffer[n],e,r,t.COLOR_ATTACHMENT0,i,n);else P(o.__webglFramebuffer,e,r,t.COLOR_ATTACHMENT0,i,0);f(r)&&g(i),n.unbindTexture()}e.depthBuffer&&N(e)},this.updateRenderTargetMipmap=function(t){const e=t.textures;for(let r=0,s=e.length;r<s;r++){const s=e[r];if(f(s)){const e=x(t),r=i.get(s).__webglTexture;n.bindTexture(e,r),g(e),n.unbindTexture()}}},this.updateMultisampleRenderTarget=function(e){if(e.samples>0)if(!1===O(e)){const r=e.textures,s=e.width,a=e.height;let o=t.COLOR_BUFFER_BIT;const h=e.stencilBuffer?t.DEPTH_STENCIL_ATTACHMENT:t.DEPTH_ATTACHMENT,c=i.get(e),q=r.length>1;if(q)for(let e=0;e<r.length;e++)n.bindFramebuffer(t.FRAMEBUFFER,c.__webglMultisampledFramebuffer),t.framebufferRenderbuffer(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0+e,t.RENDERBUFFER,null),n.bindFramebuffer(t.FRAMEBUFFER,c.__webglFramebuffer),t.framebufferTexture2D(t.DRAW_FRAMEBUFFER,t.COLOR_ATTACHMENT0+e,t.TEXTURE_2D,null,0);n.bindFramebuffer(t.READ_FRAMEBUFFER,c.__webglMultisampledFramebuffer),n.bindFramebuffer(t.DRAW_FRAMEBUFFER,c.__webglFramebuffer);for(let n=0;n<r.length;n++){if(e.resolveDepthBuffer&&(e.depthBuffer&&(o|=t.DEPTH_BUFFER_BIT),e.stencilBuffer&&e.resolveStencilBuffer&&(o|=t.STENCIL_BUFFER_BIT)),q){t.framebufferRenderbuffer(t.READ_FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.RENDERBUFFER,c.__webglColorRenderbuffer[n]);const e=i.get(r[n]).__webglTexture;t.framebufferTexture2D(t.DRAW_FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,e,0)}t.blitFramebuffer(0,0,s,a,0,0,s,a,o,t.NEAREST),!0===l&&(k.length=0,D.length=0,k.push(t.COLOR_ATTACHMENT0+n),e.depthBuffer&&!1===e.resolveDepthBuffer&&(k.push(h),D.push(h),t.invalidateFramebuffer(t.DRAW_FRAMEBUFFER,D)),t.invalidateFramebuffer(t.READ_FRAMEBUFFER,k))}if(n.bindFramebuffer(t.READ_FRAMEBUFFER,null),n.bindFramebuffer(t.DRAW_FRAMEBUFFER,null),q)for(let e=0;e<r.length;e++){n.bindFramebuffer(t.FRAMEBUFFER,c.__webglMultisampledFramebuffer),t.framebufferRenderbuffer(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0+e,t.RENDERBUFFER,c.__webglColorRenderbuffer[e]);const s=i.get(r[e]).__webglTexture;n.bindFramebuffer(t.FRAMEBUFFER,c.__webglFramebuffer),t.framebufferTexture2D(t.DRAW_FRAMEBUFFER,t.COLOR_ATTACHMENT0+e,t.TEXTURE_2D,s,0)}n.bindFramebuffer(t.DRAW_FRAMEBUFFER,c.__webglMultisampledFramebuffer)}else if(e.depthBuffer&&!1===e.resolveDepthBuffer&&l){const n=e.stencilBuffer?t.DEPTH_STENCIL_ATTACHMENT:t.DEPTH_ATTACHMENT;t.invalidateFramebuffer(t.DRAW_FRAMEBUFFER,[n])}},this.setupDepthRenderbuffer=N,this.setupFrameBufferTexture=P,this.useMultisampledRTT=O}function Hu(t,e){return{convert:function(n,i=""){let r;const s=Ze.getTransfer(i);if(n===J)return t.UNSIGNED_BYTE;if(n===rt)return t.UNSIGNED_SHORT_4_4_4_4;if(n===st)return t.UNSIGNED_SHORT_5_5_5_1;if(n===ot)return t.UNSIGNED_INT_5_9_9_9_REV;if(n===$)return t.BYTE;if(n===K)return t.SHORT;if(n===Q)return t.UNSIGNED_SHORT;if(n===tt)return t.INT;if(n===et)return t.UNSIGNED_INT;if(n===nt)return t.FLOAT;if(n===it)return t.HALF_FLOAT;if(n===lt)return t.ALPHA;if(n===ht)return t.RGB;if(n===ct)return t.RGBA;if(n===qt)return t.LUMINANCE;if(n===ut)return t.LUMINANCE_ALPHA;if(n===dt)return t.DEPTH_COMPONENT;if(n===mt)return t.DEPTH_STENCIL;if(n===pt)return t.RED;if(n===ft)return t.RED_INTEGER;if(n===gt)return t.RG;if(n===xt)return t.RG_INTEGER;if(n===_t)return t.RGBA_INTEGER;if(n===yt||n===vt||n===wt||n===bt)if(s===ce){if(r=e.get("WEBGL_compressed_texture_s3tc_srgb"),null===r)return null;if(n===yt)return r.COMPRESSED_SRGB_S3TC_DXT1_EXT;if(n===vt)return r.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;if(n===wt)return r.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;if(n===bt)return r.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}else{if(r=e.get("WEBGL_compressed_texture_s3tc"),null===r)return null;if(n===yt)return r.COMPRESSED_RGB_S3TC_DXT1_EXT;if(n===vt)return r.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(n===wt)return r.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(n===bt)return r.COMPRESSED_RGBA_S3TC_DXT5_EXT}if(n===Mt||n===St||n===Tt||n===Et){if(r=e.get("WEBGL_compressed_texture_pvrtc"),null===r)return null;if(n===Mt)return r.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(n===St)return r.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(n===Tt)return r.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(n===Et)return r.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}if(n===At||n===Ct||n===Rt){if(r=e.get("WEBGL_compressed_texture_etc"),null===r)return null;if(n===At||n===Ct)return s===ce?r.COMPRESSED_SRGB8_ETC2:r.COMPRESSED_RGB8_ETC2;if(n===Rt)return s===ce?r.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:r.COMPRESSED_RGBA8_ETC2_EAC}if(n===zt||n===It||n===Pt||n===Lt||n===Nt||n===kt||n===Dt||n===Ut||n===Ot||n===Ft||n===Bt||n===Vt||n===Ht||n===Gt){if(r=e.get("WEBGL_compressed_texture_astc"),null===r)return null;if(n===zt)return s===ce?r.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:r.COMPRESSED_RGBA_ASTC_4x4_KHR;if(n===It)return s===ce?r.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:r.COMPRESSED_RGBA_ASTC_5x4_KHR;if(n===Pt)return s===ce?r.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:r.COMPRESSED_RGBA_ASTC_5x5_KHR;if(n===Lt)return s===ce?r.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:r.COMPRESSED_RGBA_ASTC_6x5_KHR;if(n===Nt)return s===ce?r.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:r.COMPRESSED_RGBA_ASTC_6x6_KHR;if(n===kt)return s===ce?r.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:r.COMPRESSED_RGBA_ASTC_8x5_KHR;if(n===Dt)return s===ce?r.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:r.COMPRESSED_RGBA_ASTC_8x6_KHR;if(n===Ut)return s===ce?r.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:r.COMPRESSED_RGBA_ASTC_8x8_KHR;if(n===Ot)return s===ce?r.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:r.COMPRESSED_RGBA_ASTC_10x5_KHR;if(n===Ft)return s===ce?r.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:r.COMPRESSED_RGBA_ASTC_10x6_KHR;if(n===Bt)return s===ce?r.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:r.COMPRESSED_RGBA_ASTC_10x8_KHR;if(n===Vt)return s===ce?r.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:r.COMPRESSED_RGBA_ASTC_10x10_KHR;if(n===Ht)return s===ce?r.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:r.COMPRESSED_RGBA_ASTC_12x10_KHR;if(n===Gt)return s===ce?r.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:r.COMPRESSED_RGBA_ASTC_12x12_KHR}if(n===Wt||n===jt||n===Xt){if(r=e.get("EXT_texture_compression_bptc"),null===r)return null;if(n===Wt)return s===ce?r.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT:r.COMPRESSED_RGBA_BPTC_UNORM_EXT;if(n===jt)return r.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT;if(n===Xt)return r.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT}if(n===Yt||n===Zt||n===Jt||n===$t){if(r=e.get("EXT_texture_compression_rgtc"),null===r)return null;if(n===Wt)return r.COMPRESSED_RED_RGTC1_EXT;if(n===Zt)return r.COMPRESSED_SIGNED_RED_RGTC1_EXT;if(n===Jt)return r.COMPRESSED_RED_GREEN_RGTC2_EXT;if(n===$t)return r.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT}return n===at?t.UNSIGNED_INT_24_8:void 0!==t[n]?t[n]:null}}}const Gu={type:"move"};class Wu{constructor(){this._targetRay=null,this._grip=null,this._hand=null}getHandSpace(){return null===this._hand&&(this._hand=new _a,this._hand.matrixAutoUpdate=!1,this._hand.visible=!1,this._hand.joints={},this._hand.inputState={pinching:!1}),this._hand}getTargetRaySpace(){return null===this._targetRay&&(this._targetRay=new _a,this._targetRay.matrixAutoUpdate=!1,this._targetRay.visible=!1,this._targetRay.hasLinearVelocity=!1,this._targetRay.linearVelocity=new un,this._targetRay.hasAngularVelocity=!1,this._targetRay.angularVelocity=new un),this._targetRay}getGripSpace(){return null===this._grip&&(this._grip=new _a,this._grip.matrixAutoUpdate=!1,this._grip.visible=!1,this._grip.hasLinearVelocity=!1,this._grip.linearVelocity=new un,this._grip.hasAngularVelocity=!1,this._grip.angularVelocity=new un),this._grip}dispatchEvent(t){return null!==this._targetRay&&this._targetRay.dispatchEvent(t),null!==this._grip&&this._grip.dispatchEvent(t),null!==this._hand&&this._hand.dispatchEvent(t),this}connect(t){if(t&&t.hand){const e=this._hand;if(e)for(const n of t.hand.values())this._getHandJoint(e,n)}return this.dispatchEvent({type:"connected",data:t}),this}disconnect(t){return this.dispatchEvent({type:"disconnected",data:t}),null!==this._targetRay&&(this._targetRay.visible=!1),null!==this._grip&&(this._grip.visible=!1),null!==this._hand&&(this._hand.visible=!1),this}update(t,e,n){let i=null,r=null,s=null;const a=this._targetRay,o=this._grip,l=this._hand;if(t&&"visible-blurred"!==e.session.visibilityState){if(l&&t.hand){s=!0;for(const s of t.hand.values()){const t=e.getJointPose(s,n),i=this._getHandJoint(l,s);null!==t&&(i.matrix.fromArray(t.transform.matrix),i.matrix.decompose(i.position,i.rotation,i.scale),i.matrixWorldNeedsUpdate=!0,i.jointRadius=t.radius),i.visible=null!==t}const i=l.joints["index-finger-tip"],r=l.joints["thumb-tip"],a=i.position.distanceTo(r.position),o=.02,h=.005;l.inputState.pinching&&a>o+h?(l.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:t.handedness,target:this})):!l.inputState.pinching&&a<=o-h&&(l.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:t.handedness,target:this}))}else null!==o&&t.gripSpace&&(r=e.getPose(t.gripSpace,n),null!==r&&(o.matrix.fromArray(r.transform.matrix),o.matrix.decompose(o.position,o.rotation,o.scale),o.matrixWorldNeedsUpdate=!0,r.linearVelocity?(o.hasLinearVelocity=!0,o.linearVelocity.copy(r.linearVelocity)):o.hasLinearVelocity=!1,r.angularVelocity?(o.hasAngularVelocity=!0,o.angularVelocity.copy(r.angularVelocity)):o.hasAngularVelocity=!1));null!==a&&(i=e.getPose(t.targetRaySpace,n),null===i&&null!==r&&(i=r),null!==i&&(a.matrix.fromArray(i.transform.matrix),a.matrix.decompose(a.position,a.rotation,a.scale),a.matrixWorldNeedsUpdate=!0,i.linearVelocity?(a.hasLinearVelocity=!0,a.linearVelocity.copy(i.linearVelocity)):a.hasLinearVelocity=!1,i.angularVelocity?(a.hasAngularVelocity=!0,a.angularVelocity.copy(i.angularVelocity)):a.hasAngularVelocity=!1,this.dispatchEvent(Gu)))}return null!==a&&(a.visible=null!==i),null!==o&&(o.visible=null!==r),null!==l&&(l.visible=null!==s),this}_getHandJoint(t,e){if(void 0===t.joints[e.jointName]){const n=new _a;n.matrixAutoUpdate=!1,n.visible=!1,t.joints[e.jointName]=n,t.add(n)}return t.joints[e.jointName]}}class ju{constructor(){this.texture=null,this.mesh=null,this.depthNear=0,this.depthFar=0}init(t,e,n){if(null===this.texture){const i=new sn;t.properties.get(i).__webglTexture=e.texture,e.depthNear===n.depthNear&&e.depthFar===n.depthFar||(this.depthNear=e.depthNear,this.depthFar=e.depthFar),this.texture=i}}getMesh(t){if(null!==this.texture&&null===this.mesh){const e=t.cameras[0].viewport,n=new wr({vertexShader:"\nvoid main() {\n\n\tgl_Position = vec4( position, 1.0 );\n\n}",fragmentShader:"\nuniform sampler2DArray depthColor;\nuniform float depthWidth;\nuniform float depthHeight;\n\nvoid main() {\n\n\tvec2 coord = vec2( gl_FragCoord.x / depthWidth, gl_FragCoord.y / depthHeight );\n\n\tif ( coord.x >= 1.0 ) {\n\n\t\tgl_FragDepth = texture( depthColor, vec3( coord.x - 1.0, coord.y, 1 ) ).r;\n\n\t} else {\n\n\t\tgl_FragDepth = texture( depthColor, vec3( coord.x, coord.y, 0 ) ).r;\n\n\t}\n\n}",uniforms:{depthColor:{value:this.texture},depthWidth:{value:e.z},depthHeight:{value:e.w}}});this.mesh=new pr(new ko(20,20),n)}return this.mesh}reset(){this.texture=null,this.mesh=null}getDepthTexture(){return this.texture}}class Xu extends Me{constructor(t,e){super();const n=this;let i=null,r=1,s=null,a="local-floor",o=1,l=null,h=null,c=null,q=null,u=null,d=null;const m=new ju,p=e.getContextAttributes();let f=null,g=null;const x=[],_=[],y=new ke;let v=null;const w=new Er;w.viewport=new an;const b=new Er;b.viewport=new an;const M=[w,b],S=new qh;let T=null,E=null;function A(t){const e=_.indexOf(t.inputSource);if(-1===e)return;const n=x[e];void 0!==n&&(n.update(t.inputSource,t.frame,l||s),n.dispatchEvent({type:t.type,data:t.inputSource}))}function C(){i.removeEventListener("select",A),i.removeEventListener("selectstart",A),i.removeEventListener("selectend",A),i.removeEventListener("squeeze",A),i.removeEventListener("squeezestart",A),i.removeEventListener("squeezeend",A),i.removeEventListener("end",C),i.removeEventListener("inputsourceschange",R);for(let t=0;t<x.length;t++){const e=_[t];null!==e&&(_[t]=null,x[t].disconnect(e))}T=null,E=null,m.reset(),t.setRenderTarget(f),u=null,q=null,c=null,i=null,g=null,N.stop(),n.isPresenting=!1,t.setPixelRatio(v),t.setSize(y.width,y.height,!1),n.dispatchEvent({type:"sessionend"})}function R(t){for(let e=0;e<t.removed.length;e++){const n=t.removed[e],i=_.indexOf(n);i>=0&&(_[i]=null,x[i].disconnect(n))}for(let e=0;e<t.added.length;e++){const n=t.added[e];let i=_.indexOf(n);if(-1===i){for(let t=0;t<x.length;t++){if(t>=_.length){_.push(n),i=t;break}if(null===_[t]){_[t]=n,i=t;break}}if(-1===i)break}const r=x[i];r&&r.connect(n)}}this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(t){let e=x[t];return void 0===e&&(e=new Wu,x[t]=e),e.getTargetRaySpace()},this.getControllerGrip=function(t){let e=x[t];return void 0===e&&(e=new Wu,x[t]=e),e.getGripSpace()},this.getHand=function(t){let e=x[t];return void 0===e&&(e=new Wu,x[t]=e),e.getHandSpace()},this.setFramebufferScaleFactor=function(t){r=t,!0===n.isPresenting&&console.warn("THREE.WebXRManager: Cannot change framebuffer scale while presenting.")},this.setReferenceSpaceType=function(t){a=t,!0===n.isPresenting&&console.warn("THREE.WebXRManager: Cannot change reference space type while presenting.")},this.getReferenceSpace=function(){return l||s},this.setReferenceSpace=function(t){l=t},this.getBaseLayer=function(){return null!==q?q:u},this.getBinding=function(){return c},this.getFrame=function(){return d},this.getSession=function(){return i},this.setSession=async function(h){if(i=h,null!==i){f=t.getRenderTarget(),i.addEventListener("select",A),i.addEventListener("selectstart",A),i.addEventListener("selectend",A),i.addEventListener("squeeze",A),i.addEventListener("squeezestart",A),i.addEventListener("squeezeend",A),i.addEventListener("end",C),i.addEventListener("inputsourceschange",R),!0!==p.xrCompatible&&await e.makeXRCompatible(),v=t.getPixelRatio(),t.getSize(y);if(void 0!==i.enabledFeatures&&i.enabledFeatures.includes("layers")){let n=null,s=null,a=null;p.depth&&(a=p.stencil?e.DEPTH24_STENCIL8:e.DEPTH_COMPONENT24,n=p.stencil?mt:dt,s=p.stencil?at:et);const o={colorFormat:e.RGBA8,depthFormat:a,scaleFactor:r};c=new XRWebGLBinding(i,e),q=c.createProjectionLayer(o),i.updateRenderState({layers:[q]}),t.setPixelRatio(1),t.setSize(q.textureWidth,q.textureHeight,!1),g=new ln(q.textureWidth,q.textureHeight,{format:ct,type:J,depthTexture:new va(q.textureWidth,q.textureHeight,s,void 0,void 0,void 0,void 0,void 0,void 0,n),stencilBuffer:p.stencil,colorSpace:t.outputColorSpace,samples:p.antialias?4:0,resolveDepthBuffer:!1===q.ignoreDepthValues})}else{const n={antialias:p.antialias,alpha:!0,depth:p.depth,stencil:p.stencil,framebufferScaleFactor:r};u=new XRWebGLLayer(i,e,n),i.updateRenderState({baseLayer:u}),t.setPixelRatio(1),t.setSize(u.framebufferWidth,u.framebufferHeight,!1),g=new ln(u.framebufferWidth,u.framebufferHeight,{format:ct,type:J,colorSpace:t.outputColorSpace,stencilBuffer:p.stencil})}g.isXRRenderTarget=!0,this.setFoveation(o),l=null,s=await i.requestReferenceSpace(a),N.setContext(i),N.start(),n.isPresenting=!0,n.dispatchEvent({type:"sessionstart"})}},this.getEnvironmentBlendMode=function(){if(null!==i)return i.environmentBlendMode},this.getDepthTexture=function(){return m.getDepthTexture()};const z=new un,I=new un;function P(t,e){null===e?t.matrixWorld.copy(t.matrix):t.matrixWorld.multiplyMatrices(e.matrixWorld,t.matrix),t.matrixWorldInverse.copy(t.matrixWorld).invert()}this.updateCamera=function(t){if(null===i)return;let e=t.near,n=t.far;null!==m.texture&&(m.depthNear>0&&(e=m.depthNear),m.depthFar>0&&(n=m.depthFar)),S.near=b.near=w.near=e,S.far=b.far=w.far=n,T===S.near&&E===S.far||(i.updateRenderState({depthNear:S.near,depthFar:S.far}),T=S.near,E=S.far),w.layers.mask=2|t.layers.mask,b.layers.mask=4|t.layers.mask,S.layers.mask=w.layers.mask|b.layers.mask;const r=t.parent,s=S.cameras;P(S,r);for(let i=0;i<s.length;i++)P(s[i],r);2===s.length?function(t,e,n){z.setFromMatrixPosition(e.matrixWorld),I.setFromMatrixPosition(n.matrixWorld);const i=z.distanceTo(I),r=e.projectionMatrix.elements,s=n.projectionMatrix.elements,a=r[14]/(r[10]-1),o=r[14]/(r[10]+1),l=(r[9]+1)/r[5],h=(r[9]-1)/r[5],c=(r[8]-1)/r[0],q=(s[8]+1)/s[0],u=a*c,d=a*q,m=i/(-c+q),p=m*-c;if(e.matrixWorld.decompose(t.position,t.quaternion,t.scale),t.translateX(p),t.translateZ(m),t.matrixWorld.compose(t.position,t.quaternion,t.scale),t.matrixWorldInverse.copy(t.matrixWorld).invert(),-1===r[10])t.projectionMatrix.copy(e.projectionMatrix),t.projectionMatrixInverse.copy(e.projectionMatrixInverse);else{const e=a+m,n=o+m,r=u-p,s=d+(i-p),c=l*o/n*e,q=h*o/n*e;t.projectionMatrix.makePerspective(r,s,c,q,e,n),t.projectionMatrixInverse.copy(t.projectionMatrix).invert()}}(S,w,b):S.projectionMatrix.copy(w.projectionMatrix),function(t,e,n){null===n?t.matrix.copy(e.matrixWorld):(t.matrix.copy(n.matrixWorld),t.matrix.invert(),t.matrix.multiply(e.matrixWorld));t.matrix.decompose(t.position,t.quaternion,t.scale),t.updateMatrixWorld(!0),t.projectionMatrix.copy(e.projectionMatrix),t.projectionMatrixInverse.copy(e.projectionMatrixInverse),t.isPerspectiveCamera&&(t.fov=2*Ae*Math.atan(1/t.projectionMatrix.elements[5]),t.zoom=1)}(t,S,r)},this.getCamera=function(){return S},this.getFoveation=function(){if(null!==q||null!==u)return o},this.setFoveation=function(t){o=t,null!==q&&(q.fixedFoveation=t),null!==u&&void 0!==u.fixedFoveation&&(u.fixedFoveation=t)},this.hasDepthSensing=function(){return null!==m.texture},this.getDepthSensingMesh=function(){return m.getMesh(S)};let L=null;const N=new pc;N.setAnimationLoop((function(e,r){if(h=r.getViewerPose(l||s),d=r,null!==h){const e=h.views;null!==u&&(t.setRenderTargetFramebuffer(g,u.framebuffer),t.setRenderTarget(g));let n=!1;e.length!==S.cameras.length&&(S.cameras.length=0,n=!0);for(let i=0;i<e.length;i++){const r=e[i];let s=null;if(null!==u)s=u.getViewport(r);else{const e=c.getViewSubImage(q,r);s=e.viewport,0===i&&(t.setRenderTargetTextures(g,e.colorTexture,q.ignoreDepthValues?void 0:e.depthStencilTexture),t.setRenderTarget(g))}let a=M[i];void 0===a&&(a=new Er,a.layers.enable(i),a.viewport=new an,M[i]=a),a.matrix.fromArray(r.transform.matrix),a.matrix.decompose(a.position,a.quaternion,a.scale),a.projectionMatrix.fromArray(r.projectionMatrix),a.projectionMatrixInverse.copy(a.projectionMatrix).invert(),a.viewport.set(s.x,s.y,s.width,s.height),0===i&&(S.matrix.copy(a.matrix),S.matrix.decompose(S.position,S.quaternion,S.scale)),!0===n&&S.cameras.push(a)}const r=i.enabledFeatures;if(r&&r.includes("depth-sensing")){const n=c.getDepthInformation(e[0]);n&&n.isValid&&n.texture&&m.init(t,n,i.renderState)}}for(let t=0;t<x.length;t++){const e=_[t],n=x[t];null!==e&&void 0!==n&&n.update(e,r,l||s)}L&&L(e,r),r.detectedPlanes&&n.dispatchEvent({type:"planesdetected",data:r}),d=null})),this.setAnimationLoop=function(t){L=t},this.dispose=function(){}}}const Yu=new Kn,Zu=new Vn;function Ju(t,e){function n(t,e){!0===t.matrixAutoUpdate&&t.updateMatrix(),e.value.copy(t.matrix)}function i(t,i){t.opacity.value=i.opacity,i.color&&t.diffuse.value.copy(i.color),i.emissive&&t.emissive.value.copy(i.emissive).multiplyScalar(i.emissiveIntensity),i.map&&(t.map.value=i.map,n(i.map,t.mapTransform)),i.alphaMap&&(t.alphaMap.value=i.alphaMap,n(i.alphaMap,t.alphaMapTransform)),i.bumpMap&&(t.bumpMap.value=i.bumpMap,n(i.bumpMap,t.bumpMapTransform),t.bumpScale.value=i.bumpScale,1===i.side&&(t.bumpScale.value*=-1)),i.normalMap&&(t.normalMap.value=i.normalMap,n(i.normalMap,t.normalMapTransform),t.normalScale.value.copy(i.normalScale),1===i.side&&t.normalScale.value.negate()),i.displacementMap&&(t.displacementMap.value=i.displacementMap,n(i.displacementMap,t.displacementMapTransform),t.displacementScale.value=i.displacementScale,t.displacementBias.value=i.displacementBias),i.emissiveMap&&(t.emissiveMap.value=i.emissiveMap,n(i.emissiveMap,t.emissiveMapTransform)),i.specularMap&&(t.specularMap.value=i.specularMap,n(i.specularMap,t.specularMapTransform)),i.alphaTest>0&&(t.alphaTest.value=i.alphaTest);const r=e.get(i),s=r.envMap,a=r.envMapRotation;s&&(t.envMap.value=s,Yu.copy(a),Yu.x*=-1,Yu.y*=-1,Yu.z*=-1,s.isCubeTexture&&!1===s.isRenderTargetTexture&&(Yu.y*=-1,Yu.z*=-1),t.envMapRotation.value.setFromMatrix4(Zu.makeRotationFromEuler(Yu)),t.flipEnvMap.value=s.isCubeTexture&&!1===s.isRenderTargetTexture?-1:1,t.reflectivity.value=i.reflectivity,t.ior.value=i.ior,t.refractionRatio.value=i.refractionRatio),i.lightMap&&(t.lightMap.value=i.lightMap,t.lightMapIntensity.value=i.lightMapIntensity,n(i.lightMap,t.lightMapTransform)),i.aoMap&&(t.aoMap.value=i.aoMap,t.aoMapIntensity.value=i.aoMapIntensity,n(i.aoMap,t.aoMapTransform))}return{refreshFogUniforms:function(e,n){n.color.getRGB(e.fogColor.value,yr(t)),n.isFog?(e.fogNear.value=n.near,e.fogFar.value=n.far):n.isFogExp2&&(e.fogDensity.value=n.density)},refreshMaterialUniforms:function(t,r,s,a,o){r.isMeshBasicMaterial||r.isMeshLambertMaterial?i(t,r):r.isMeshToonMaterial?(i(t,r),function(t,e){e.gradientMap&&(t.gradientMap.value=e.gradientMap)}(t,r)):r.isMeshPhongMaterial?(i(t,r),function(t,e){t.specular.value.copy(e.specular),t.shininess.value=Math.max(e.shininess,1e-4)}(t,r)):r.isMeshStandardMaterial?(i(t,r),function(t,e){t.metalness.value=e.metalness,e.metalnessMap&&(t.metalnessMap.value=e.metalnessMap,n(e.metalnessMap,t.metalnessMapTransform));t.roughness.value=e.roughness,e.roughnessMap&&(t.roughnessMap.value=e.roughnessMap,n(e.roughnessMap,t.roughnessMapTransform));e.envMap&&(t.envMapIntensity.value=e.envMapIntensity)}(t,r),r.isMeshPhysicalMaterial&&function(t,e,i){t.ior.value=e.ior,e.sheen>0&&(t.sheenColor.value.copy(e.sheenColor).multiplyScalar(e.sheen),t.sheenRoughness.value=e.sheenRoughness,e.sheenColorMap&&(t.sheenColorMap.value=e.sheenColorMap,n(e.sheenColorMap,t.sheenColorMapTransform)),e.sheenRoughnessMap&&(t.sheenRoughnessMap.value=e.sheenRoughnessMap,n(e.sheenRoughnessMap,t.sheenRoughnessMapTransform)));e.clearcoat>0&&(t.clearcoat.value=e.clearcoat,t.clearcoatRoughness.value=e.clearcoatRoughness,e.clearcoatMap&&(t.clearcoatMap.value=e.clearcoatMap,n(e.clearcoatMap,t.clearcoatMapTransform)),e.clearcoatRoughnessMap&&(t.clearcoatRoughnessMap.value=e.clearcoatRoughnessMap,n(e.clearcoatRoughnessMap,t.clearcoatRoughnessMapTransform)),e.clearcoatNormalMap&&(t.clearcoatNormalMap.value=e.clearcoatNormalMap,n(e.clearcoatNormalMap,t.clearcoatNormalMapTransform),t.clearcoatNormalScale.value.copy(e.clearcoatNormalScale),1===e.side&&t.clearcoatNormalScale.value.negate()));e.dispersion>0&&(t.dispersion.value=e.dispersion);e.iridescence>0&&(t.iridescence.value=e.iridescence,t.iridescenceIOR.value=e.iridescenceIOR,t.iridescenceThicknessMinimum.value=e.iridescenceThicknessRange[0],t.iridescenceThicknessMaximum.value=e.iridescenceThicknessRange[1],e.iridescenceMap&&(t.iridescenceMap.value=e.iridescenceMap,n(e.iridescenceMap,t.iridescenceMapTransform)),e.iridescenceThicknessMap&&(t.iridescenceThicknessMap.value=e.iridescenceThicknessMap,n(e.iridescenceThicknessMap,t.iridescenceThicknessMapTransform)));e.transmission>0&&(t.transmission.value=e.transmission,t.transmissionSamplerMap.value=i.texture,t.transmissionSamplerSize.value.set(i.width,i.height),e.transmissionMap&&(t.transmissionMap.value=e.transmissionMap,n(e.transmissionMap,t.transmissionMapTransform)),t.thickness.value=e.thickness,e.thicknessMap&&(t.thicknessMap.value=e.thicknessMap,n(e.thicknessMap,t.thicknessMapTransform)),t.attenuationDistance.value=e.attenuationDistance,t.attenuationColor.value.copy(e.attenuationColor));e.anisotropy>0&&(t.anisotropyVector.value.set(e.anisotropy*Math.cos(e.anisotropyRotation),e.anisotropy*Math.sin(e.anisotropyRotation)),e.anisotropyMap&&(t.anisotropyMap.value=e.anisotropyMap,n(e.anisotropyMap,t.anisotropyMapTransform)));t.specularIntensity.value=e.specularIntensity,t.specularColor.value.copy(e.specularColor),e.specularColorMap&&(t.specularColorMap.value=e.specularColorMap,n(e.specularColorMap,t.specularColorMapTransform));e.specularIntensityMap&&(t.specularIntensityMap.value=e.specularIntensityMap,n(e.specularIntensityMap,t.specularIntensityMapTransform))}(t,r,o)):r.isMeshMatcapMaterial?(i(t,r),function(t,e){e.matcap&&(t.matcap.value=e.matcap)}(t,r)):r.isMeshDepthMaterial?i(t,r):r.isMeshDistanceMaterial?(i(t,r),function(t,n){const i=e.get(n).light;t.referencePosition.value.setFromMatrixPosition(i.matrixWorld),t.nearDistance.value=i.shadow.camera.near,t.farDistance.value=i.shadow.camera.far}(t,r)):r.isMeshNormalMaterial?i(t,r):r.isLineBasicMaterial?(function(t,e){t.diffuse.value.copy(e.color),t.opacity.value=e.opacity,e.map&&(t.map.value=e.map,n(e.map,t.mapTransform))}(t,r),r.isLineDashedMaterial&&function(t,e){t.dashSize.value=e.dashSize,t.totalSize.value=e.dashSize+e.gapSize,t.scale.value=e.scale}(t,r)):r.isPointsMaterial?function(t,e,i,r){t.diffuse.value.copy(e.color),t.opacity.value=e.opacity,t.size.value=e.size*i,t.scale.value=.5*r,e.map&&(t.map.value=e.map,n(e.map,t.uvTransform));e.alphaMap&&(t.alphaMap.value=e.alphaMap,n(e.alphaMap,t.alphaMapTransform));e.alphaTest>0&&(t.alphaTest.value=e.alphaTest)}(t,r,s,a):r.isSpriteMaterial?function(t,e){t.diffuse.value.copy(e.color),t.opacity.value=e.opacity,t.rotation.value=e.rotation,e.map&&(t.map.value=e.map,n(e.map,t.mapTransform));e.alphaMap&&(t.alphaMap.value=e.alphaMap,n(e.alphaMap,t.alphaMapTransform));e.alphaTest>0&&(t.alphaTest.value=e.alphaTest)}(t,r):r.isShadowMaterial?(t.color.value.copy(r.color),t.opacity.value=r.opacity):r.isShaderMaterial&&(r.uniformsNeedUpdate=!1)}}}function $u(t,e,n,i){let r={},s={},a=[];const o=t.getParameter(t.MAX_UNIFORM_BUFFER_BINDINGS);function l(t,e,n,i){const r=t.value,s=e+"_"+n;if(void 0===i[s])return i[s]="number"==typeof r||"boolean"==typeof r?r:r.clone(),!0;{const t=i[s];if("number"==typeof r||"boolean"==typeof r){if(t!==r)return i[s]=r,!0}else if(!1===t.equals(r))return t.copy(r),!0}return!1}function h(t){const e={boundary:0,storage:0};return"number"==typeof t||"boolean"==typeof t?(e.boundary=4,e.storage=4):t.isVector2?(e.boundary=8,e.storage=8):t.isVector3||t.isColor?(e.boundary=16,e.storage=12):t.isVector4?(e.boundary=16,e.storage=16):t.isMatrix3?(e.boundary=48,e.storage=48):t.isMatrix4?(e.boundary=64,e.storage=64):t.isTexture?console.warn("THREE.WebGLRenderer: Texture samplers can not be part of an uniforms group."):console.warn("THREE.WebGLRenderer: Unsupported uniform value type.",t),e}function c(e){const n=e.target;n.removeEventListener("dispose",c);const i=a.indexOf(n.__bindingPointIndex);a.splice(i,1),t.deleteBuffer(r[n.id]),delete r[n.id],delete s[n.id]}return{bind:function(t,e){const n=e.program;i.uniformBlockBinding(t,n)},update:function(n,q){let u=r[n.id];void 0===u&&(!function(t){const e=t.uniforms;let n=0;const i=16;for(let s=0,a=e.length;s<a;s++){const t=Array.isArray(e[s])?e[s]:[e[s]];for(let e=0,r=t.length;e<r;e++){const r=t[e],s=Array.isArray(r.value)?r.value:[r.value];for(let t=0,e=s.length;t<e;t++){const e=h(s[t]),a=n%i,o=a%e.boundary,l=a+o;n+=o,0!==l&&i-l<e.storage&&(n+=i-l),r.__data=new Float32Array(e.storage/Float32Array.BYTES_PER_ELEMENT),r.__offset=n,n+=e.storage}}}const r=n%i;r>0&&(n+=i-r);t.__size=n,t.__cache={}}(n),u=function(e){const n=function(){for(let t=0;t<o;t++)if(-1===a.indexOf(t))return a.push(t),t;return console.error("THREE.WebGLRenderer: Maximum number of simultaneously usable uniforms groups reached."),0}();e.__bindingPointIndex=n;const i=t.createBuffer(),r=e.__size,s=e.usage;return t.bindBuffer(t.UNIFORM_BUFFER,i),t.bufferData(t.UNIFORM_BUFFER,r,s),t.bindBuffer(t.UNIFORM_BUFFER,null),t.bindBufferBase(t.UNIFORM_BUFFER,n,i),i}(n),r[n.id]=u,n.addEventListener("dispose",c));const d=q.program;i.updateUBOMapping(n,d);const m=e.render.frame;s[n.id]!==m&&(!function(e){const n=r[e.id],i=e.uniforms,s=e.__cache;t.bindBuffer(t.UNIFORM_BUFFER,n);for(let r=0,a=i.length;r<a;r++){const e=Array.isArray(i[r])?i[r]:[i[r]];for(let n=0,i=e.length;n<i;n++){const i=e[n];if(!0===l(i,r,n,s)){const e=i.__offset,n=Array.isArray(i.value)?i.value:[i.value];let r=0;for(let s=0;s<n.length;s++){const a=n[s],o=h(a);"number"==typeof a||"boolean"==typeof a?(i.__data[0]=a,t.bufferSubData(t.UNIFORM_BUFFER,e+r,i.__data)):a.isMatrix3?(i.__data[0]=a.elements[0],i.__data[1]=a.elements[1],i.__data[2]=a.elements[2],i.__data[3]=0,i.__data[4]=a.elements[3],i.__data[5]=a.elements[4],i.__data[6]=a.elements[5],i.__data[7]=0,i.__data[8]=a.elements[6],i.__data[9]=a.elements[7],i.__data[10]=a.elements[8],i.__data[11]=0):(a.toArray(i.__data,r),r+=o.storage/Float32Array.BYTES_PER_ELEMENT)}t.bufferSubData(t.UNIFORM_BUFFER,e,i.__data)}}}t.bindBuffer(t.UNIFORM_BUFFER,null)}(n),s[n.id]=m)},dispose:function(){for(const e in r)t.deleteBuffer(r[e]);a=[],r={},s={}}}}class Ku{constructor(t={}){const{canvas:n=He(),context:i=null,depth:r=!0,stencil:s=!1,alpha:a=!1,antialias:o=!1,premultipliedAlpha:l=!0,preserveDrawingBuffer:h=!1,powerPreference:c="default",failIfMajorPerformanceCaveat:q=!1,reverseDepthBuffer:u=!1}=t;let d;if(this.isWebGLRenderer=!0,null!==i){if("undefined"!=typeof WebGLRenderingContext&&i instanceof WebGLRenderingContext)throw new Error("THREE.WebGLRenderer: WebGL 1 is not supported since r163.");d=i.getContextAttributes().alpha}else d=a;const m=new Uint32Array(4),p=new Int32Array(4);let f=null,g=null;const x=[],_=[];this.domElement=n,this.debug={checkShaderErrors:!0,onShaderError:null},this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.sortObjects=!0,this.clippingPlanes=[],this.localClippingEnabled=!1,this._outputColorSpace=oe,this.toneMapping=0,this.toneMappingExposure=1;const y=this;let v=!1,w=0,b=0,M=null,S=-1,T=null;const E=new an,A=new an;let C=null;const R=new Li(0);let z=0,I=n.width,P=n.height,L=1,N=null,k=null;const D=new an(0,0,I,P),U=new an(0,0,I,P);let O=!1;const F=new Ps;let B=!1,V=!1;this.transmissionResolutionScale=1;const H=new Vn,G=new Vn,W=new un,j=new an,X={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0};let Y=!1;function $(){return null===M?L:1}let K,tt,nt,ot,lt,ht,ct,qt,ut,dt,mt,pt,gt,yt,vt,wt,bt,Mt,St,Tt,Et,At,Ct,Rt,zt=i;function It(t,e){return n.getContext(t,e)}try{const t={alpha:!0,depth:r,stencil:s,antialias:o,premultipliedAlpha:l,preserveDrawingBuffer:h,powerPreference:c,failIfMajorPerformanceCaveat:q};if("setAttribute"in n&&n.setAttribute("data-engine",`three.js r${e}`),n.addEventListener("webglcontextlost",Nt,!1),n.addEventListener("webglcontextrestored",kt,!1),n.addEventListener("webglcontextcreationerror",Dt,!1),null===zt){const e="webgl2";if(zt=It(e,t),null===zt)throw It(e)?new Error("Error creating WebGL context with your selected attributes."):new Error("Error creating WebGL context.")}}catch(ee){throw console.error("THREE.WebGLRenderer: "+ee.message),ee}function Pt(){K=new Xc(zt),K.init(),At=new Hu(zt,K),tt=new Tc(zt,K,t,At),nt=new Bu(zt,K),tt.reverseDepthBuffer&&u&&nt.buffers.depth.setReversed(!0),ot=new Jc(zt),lt=new Au,ht=new Vu(zt,K,nt,lt,tt,At,ot),ct=new Ac(y),qt=new jc(y),ut=new fc(zt),Ct=new Mc(zt,ut),dt=new Yc(zt,ut,ot,Ct),mt=new Kc(zt,dt,ut,ot),St=new $c(zt,tt,ht),wt=new Ec(lt),pt=new Eu(y,ct,qt,K,tt,Ct,wt),gt=new Ju(y,lt),yt=new Iu,vt=new Uu(K),Mt=new bc(y,ct,qt,nt,mt,d,l),bt=new Ou(y,mt,tt),Rt=new $u(zt,ot,tt,nt),Tt=new Sc(zt,K,ot),Et=new Zc(zt,K,ot),ot.programs=pt.programs,y.capabilities=tt,y.extensions=K,y.properties=lt,y.renderLists=yt,y.shadowMap=bt,y.state=nt,y.info=ot}Pt();const Lt=new Xu(y,zt);function Nt(t){t.preventDefault(),console.log("THREE.WebGLRenderer: Context Lost."),v=!0}function kt(){console.log("THREE.WebGLRenderer: Context Restored."),v=!1;const t=ot.autoReset,e=bt.enabled,n=bt.autoUpdate,i=bt.needsUpdate,r=bt.type;Pt(),ot.autoReset=t,bt.enabled=e,bt.autoUpdate=n,bt.needsUpdate=i,bt.type=r}function Dt(t){console.error("THREE.WebGLRenderer: A WebGL context could not be created. Reason: ",t.statusMessage)}function Ut(t){const e=t.target;e.removeEventListener("dispose",Ut),function(t){(function(t){const e=lt.get(t).programs;void 0!==e&&(e.forEach((function(t){pt.releaseProgram(t)})),t.isShaderMaterial&&pt.releaseShaderCache(t))})(t),lt.remove(t)}(e)}function Ot(t,e,n){!0===t.transparent&&2===t.side&&!1===t.forceSinglePass?(t.side=1,t.needsUpdate=!0,Zt(t,e,n),t.side=0,t.needsUpdate=!0,Zt(t,e,n),t.side=2):Zt(t,e,n)}this.xr=Lt,this.getContext=function(){return zt},this.getContextAttributes=function(){return zt.getContextAttributes()},this.forceContextLoss=function(){const t=K.get("WEBGL_lose_context");t&&t.loseContext()},this.forceContextRestore=function(){const t=K.get("WEBGL_lose_context");t&&t.restoreContext()},this.getPixelRatio=function(){return L},this.setPixelRatio=function(t){void 0!==t&&(L=t,this.setSize(I,P,!1))},this.getSize=function(t){return t.set(I,P)},this.setSize=function(t,e,i=!0){Lt.isPresenting?console.warn("THREE.WebGLRenderer: Can't change size while VR device is presenting."):(I=t,P=e,n.width=Math.floor(t*L),n.height=Math.floor(e*L),!0===i&&(n.style.width=t+"px",n.style.height=e+"px"),this.setViewport(0,0,t,e))},this.getDrawingBufferSize=function(t){return t.set(I*L,P*L).floor()},this.setDrawingBufferSize=function(t,e,i){I=t,P=e,L=i,n.width=Math.floor(t*i),n.height=Math.floor(e*i),this.setViewport(0,0,t,e)},this.getCurrentViewport=function(t){return t.copy(E)},this.getViewport=function(t){return t.copy(D)},this.setViewport=function(t,e,n,i){t.isVector4?D.set(t.x,t.y,t.z,t.w):D.set(t,e,n,i),nt.viewport(E.copy(D).multiplyScalar(L).round())},this.getScissor=function(t){return t.copy(U)},this.setScissor=function(t,e,n,i){t.isVector4?U.set(t.x,t.y,t.z,t.w):U.set(t,e,n,i),nt.scissor(A.copy(U).multiplyScalar(L).round())},this.getScissorTest=function(){return O},this.setScissorTest=function(t){nt.setScissorTest(O=t)},this.setOpaqueSort=function(t){N=t},this.setTransparentSort=function(t){k=t},this.getClearColor=function(t){return t.copy(Mt.getClearColor())},this.setClearColor=function(){Mt.setClearColor.apply(Mt,arguments)},this.getClearAlpha=function(){return Mt.getClearAlpha()},this.setClearAlpha=function(){Mt.setClearAlpha.apply(Mt,arguments)},this.clear=function(t=!0,e=!0,n=!0){let i=0;if(t){let t=!1;if(null!==M){const e=M.texture.format;t=e===_t||e===xt||e===ft}if(t){const t=M.texture.type,e=t===J||t===et||t===Q||t===at||t===rt||t===st,n=Mt.getClearColor(),i=Mt.getClearAlpha(),r=n.r,s=n.g,a=n.b;e?(m[0]=r,m[1]=s,m[2]=a,m[3]=i,zt.clearBufferuiv(zt.COLOR,0,m)):(p[0]=r,p[1]=s,p[2]=a,p[3]=i,zt.clearBufferiv(zt.COLOR,0,p))}else i|=zt.COLOR_BUFFER_BIT}e&&(i|=zt.DEPTH_BUFFER_BIT),n&&(i|=zt.STENCIL_BUFFER_BIT,this.state.buffers.stencil.setMask(4294967295)),zt.clear(i)},this.clearColor=function(){this.clear(!0,!1,!1)},this.clearDepth=function(){this.clear(!1,!0,!1)},this.clearStencil=function(){this.clear(!1,!1,!0)},this.dispose=function(){n.removeEventListener("webglcontextlost",Nt,!1),n.removeEventListener("webglcontextrestored",kt,!1),n.removeEventListener("webglcontextcreationerror",Dt,!1),Mt.dispose(),yt.dispose(),vt.dispose(),lt.dispose(),ct.dispose(),qt.dispose(),mt.dispose(),Ct.dispose(),Rt.dispose(),pt.dispose(),Lt.dispose(),Lt.removeEventListener("sessionstart",Bt),Lt.removeEventListener("sessionend",Vt),Ht.stop()},this.renderBufferDirect=function(t,e,n,i,r,s){null===e&&(e=X);const a=r.isMesh&&r.matrixWorld.determinant()<0,o=function(t,e,n,i,r){!0!==e.isScene&&(e=X);ht.resetTextureUnits();const s=e.fog,a=i.isMeshStandardMaterial?e.environment:null,o=null===M?y.outputColorSpace:!0===M.isXRRenderTarget?M.texture.colorSpace:le,l=(i.isMeshStandardMaterial?qt:ct).get(i.envMap||a),h=!0===i.vertexColors&&!!n.attributes.color&&4===n.attributes.color.itemSize,c=!!n.attributes.tangent&&(!!i.normalMap||i.anisotropy>0),q=!!n.morphAttributes.position,u=!!n.morphAttributes.normal,d=!!n.morphAttributes.color;let m=0;i.toneMapped&&(null!==M&&!0!==M.isXRRenderTarget||(m=y.toneMapping));const p=n.morphAttributes.position||n.morphAttributes.normal||n.morphAttributes.color,f=void 0!==p?p.length:0,x=lt.get(i),_=g.state.lights;if(!0===B&&(!0===V||t!==T)){const e=t===T&&i.id===S;wt.setState(i,t,e)}let v=!1;i.version===x.__version?x.needsLights&&x.lightsStateVersion!==_.state.version||x.outputColorSpace!==o||r.isBatchedMesh&&!1===x.batching?v=!0:r.isBatchedMesh||!0!==x.batching?r.isBatchedMesh&&!0===x.batchingColor&&null===r.colorTexture||r.isBatchedMesh&&!1===x.batchingColor&&null!==r.colorTexture||r.isInstancedMesh&&!1===x.instancing?v=!0:r.isInstancedMesh||!0!==x.instancing?r.isSkinnedMesh&&!1===x.skinning?v=!0:r.isSkinnedMesh||!0!==x.skinning?r.isInstancedMesh&&!0===x.instancingColor&&null===r.instanceColor||r.isInstancedMesh&&!1===x.instancingColor&&null!==r.instanceColor||r.isInstancedMesh&&!0===x.instancingMorph&&null===r.morphTexture||r.isInstancedMesh&&!1===x.instancingMorph&&null!==r.morphTexture||x.envMap!==l||!0===i.fog&&x.fog!==s?v=!0:void 0===x.numClippingPlanes||x.numClippingPlanes===wt.numPlanes&&x.numIntersection===wt.numIntersection?(x.vertexAlphas!==h||x.vertexTangents!==c||x.morphTargets!==q||x.morphNormals!==u||x.morphColors!==d||x.toneMapping!==m||x.morphTargetsCount!==f)&&(v=!0):v=!0:v=!0:v=!0:v=!0:(v=!0,x.__version=i.version);let w=x.currentProgram;!0===v&&(w=Zt(i,e,r));let b=!1,E=!1,A=!1;const C=w.getUniforms(),R=x.uniforms;nt.useProgram(w.program)&&(b=!0,E=!0,A=!0);i.id!==S&&(S=i.id,E=!0);if(b||T!==t){nt.buffers.depth.getReversed()?(H.copy(t.projectionMatrix),function(t){const e=t.elements;e[2]=.5*e[2]+.5*e[3],e[6]=.5*e[6]+.5*e[7],e[10]=.5*e[10]+.5*e[11],e[14]=.5*e[14]+.5*e[15]}(H),function(t){const e=t.elements;-1===e[11]?(e[10]=-e[10]-1,e[14]=-e[14]):(e[10]=-e[10],e[14]=1-e[14])}(H),C.setValue(zt,"projectionMatrix",H)):C.setValue(zt,"projectionMatrix",t.projectionMatrix),C.setValue(zt,"viewMatrix",t.matrixWorldInverse);const e=C.map.cameraPosition;void 0!==e&&e.setValue(zt,W.setFromMatrixPosition(t.matrixWorld)),tt.logarithmicDepthBuffer&&C.setValue(zt,"logDepthBufFC",2/(Math.log(t.far+1)/Math.LN2)),(i.isMeshPhongMaterial||i.isMeshToonMaterial||i.isMeshLambertMaterial||i.isMeshBasicMaterial||i.isMeshStandardMaterial||i.isShaderMaterial)&&C.setValue(zt,"isOrthographic",!0===t.isOrthographicCamera),T!==t&&(T=t,E=!0,A=!0)}if(r.isSkinnedMesh){C.setOptional(zt,r,"bindMatrix"),C.setOptional(zt,r,"bindMatrixInverse");const t=r.skeleton;t&&(null===t.boneTexture&&t.computeBoneTexture(),C.setValue(zt,"boneTexture",t.boneTexture,ht))}r.isBatchedMesh&&(C.setOptional(zt,r,"batchingTexture"),C.setValue(zt,"batchingTexture",r._matricesTexture,ht),C.setOptional(zt,r,"batchingIdTexture"),C.setValue(zt,"batchingIdTexture",r._indirectTexture,ht),C.setOptional(zt,r,"batchingColorTexture"),null!==r._colorsTexture&&C.setValue(zt,"batchingColorTexture",r._colorsTexture,ht));const z=n.morphAttributes;void 0===z.position&&void 0===z.normal&&void 0===z.color||St.update(r,n,w);(E||x.receiveShadow!==r.receiveShadow)&&(x.receiveShadow=r.receiveShadow,C.setValue(zt,"receiveShadow",r.receiveShadow));i.isMeshGouraudMaterial&&null!==i.envMap&&(R.envMap.value=l,R.flipEnvMap.value=l.isCubeTexture&&!1===l.isRenderTargetTexture?-1:1);i.isMeshStandardMaterial&&null===i.envMap&&null!==e.environment&&(R.envMapIntensity.value=e.environmentIntensity);E&&(C.setValue(zt,"toneMappingExposure",y.toneMappingExposure),x.needsLights&&(N=A,(I=R).ambientLightColor.needsUpdate=N,I.lightProbe.needsUpdate=N,I.directionalLights.needsUpdate=N,I.directionalLightShadows.needsUpdate=N,I.pointLights.needsUpdate=N,I.pointLightShadows.needsUpdate=N,I.spotLights.needsUpdate=N,I.spotLightShadows.needsUpdate=N,I.rectAreaLights.needsUpdate=N,I.hemisphereLights.needsUpdate=N),s&&!0===i.fog&&gt.refreshFogUniforms(R,s),gt.refreshMaterialUniforms(R,i,L,P,g.state.transmissionRenderTarget[t.id]),iu.upload(zt,Jt(x),R,ht));var I,N;i.isShaderMaterial&&!0===i.uniformsNeedUpdate&&(iu.upload(zt,Jt(x),R,ht),i.uniformsNeedUpdate=!1);i.isSpriteMaterial&&C.setValue(zt,"center",r.center);if(C.setValue(zt,"modelViewMatrix",r.modelViewMatrix),C.setValue(zt,"normalMatrix",r.normalMatrix),C.setValue(zt,"modelMatrix",r.matrixWorld),i.isShaderMaterial||i.isRawShaderMaterial){const t=i.uniformsGroups;for(let e=0,n=t.length;e<n;e++){const n=t[e];Rt.update(n,w),Rt.bind(n,w)}}return w}(t,e,n,i,r);nt.setMaterial(i,a);let l=n.index,h=1;if(!0===i.wireframe){if(l=dt.getWireframeAttribute(n),void 0===l)return;h=2}const c=n.drawRange,q=n.attributes.position;let u=c.start*h,d=(c.start+c.count)*h;null!==s&&(u=Math.max(u,s.start*h),d=Math.min(d,(s.start+s.count)*h)),null!==l?(u=Math.max(u,0),d=Math.min(d,l.count)):null!=q&&(u=Math.max(u,0),d=Math.min(d,q.count));const m=d-u;if(m<0||m===1/0)return;let p;Ct.setup(r,i,o,n,l);let f=Tt;if(null!==l&&(p=ut.get(l),f=Et,f.setIndex(p)),r.isMesh)!0===i.wireframe?(nt.setLineWidth(i.wireframeLinewidth*$()),f.setMode(zt.LINES)):f.setMode(zt.TRIANGLES);else if(r.isLine){let t=i.linewidth;void 0===t&&(t=1),nt.setLineWidth(t*$()),r.isLineSegments?f.setMode(zt.LINES):r.isLineLoop?f.setMode(zt.LINE_LOOP):f.setMode(zt.LINE_STRIP)}else r.isPoints?f.setMode(zt.POINTS):r.isSprite&&f.setMode(zt.TRIANGLES);if(r.isBatchedMesh)if(null!==r._multiDrawInstances)f.renderMultiDrawInstances(r._multiDrawStarts,r._multiDrawCounts,r._multiDrawCount,r._multiDrawInstances);else if(K.get("WEBGL_multi_draw"))f.renderMultiDraw(r._multiDrawStarts,r._multiDrawCounts,r._multiDrawCount);else{const t=r._multiDrawStarts,e=r._multiDrawCounts,n=r._multiDrawCount,s=l?ut.get(l).bytesPerElement:1,a=lt.get(i).currentProgram.getUniforms();for(let i=0;i<n;i++)a.setValue(zt,"_gl_DrawID",i),f.render(t[i]/s,e[i])}else if(r.isInstancedMesh)f.renderInstances(u,m,r.count);else if(n.isInstancedBufferGeometry){const t=void 0!==n._maxInstanceCount?n._maxInstanceCount:1/0,e=Math.min(n.instanceCount,t);f.renderInstances(u,m,e)}else f.render(u,m)},this.compile=function(t,e,n=null){null===n&&(n=t),g=vt.get(n),g.init(e),_.push(g),n.traverseVisible((function(t){t.isLight&&t.layers.test(e.layers)&&(g.pushLight(t),t.castShadow&&g.pushShadow(t))})),t!==n&&t.traverseVisible((function(t){t.isLight&&t.layers.test(e.layers)&&(g.pushLight(t),t.castShadow&&g.pushShadow(t))})),g.setupLights();const i=new Set;return t.traverse((function(t){if(!(t.isMesh||t.isPoints||t.isLine||t.isSprite))return;const e=t.material;if(e)if(Array.isArray(e))for(let r=0;r<e.length;r++){const s=e[r];Ot(s,n,t),i.add(s)}else Ot(e,n,t),i.add(e)})),_.pop(),g=null,i},this.compileAsync=function(t,e,n=null){const i=this.compile(t,e,n);return new Promise((e=>{function n(){i.forEach((function(t){lt.get(t).currentProgram.isReady()&&i.delete(t)})),0!==i.size?setTimeout(n,10):e(t)}null!==K.get("KHR_parallel_shader_compile")?n():setTimeout(n,10)}))};let Ft=null;function Bt(){Ht.stop()}function Vt(){Ht.start()}const Ht=new pc;function Gt(t,e,n,i){if(!1===t.visible)return;if(t.layers.test(e.layers))if(t.isGroup)n=t.renderOrder;else if(t.isLOD)!0===t.autoUpdate&&t.update(e);else if(t.isLight)g.pushLight(t),t.castShadow&&g.pushShadow(t);else if(t.isSprite){if(!t.frustumCulled||F.intersectsSprite(t)){i&&j.setFromMatrixPosition(t.matrixWorld).applyMatrix4(G);const e=mt.update(t),r=t.material;r.visible&&f.push(t,e,r,n,j.z,null)}}else if((t.isMesh||t.isLine||t.isPoints)&&(!t.frustumCulled||F.intersectsObject(t))){const e=mt.update(t),r=t.material;if(i&&(void 0!==t.boundingSphere?(null===t.boundingSphere&&t.computeBoundingSphere(),j.copy(t.boundingSphere.center)):(null===e.boundingSphere&&e.computeBoundingSphere(),j.copy(e.boundingSphere.center)),j.applyMatrix4(t.matrixWorld).applyMatrix4(G)),Array.isArray(r)){const i=e.groups;for(let s=0,a=i.length;s<a;s++){const a=i[s],o=r[a.materialIndex];o&&o.visible&&f.push(t,e,o,n,j.z,a)}}else r.visible&&f.push(t,e,r,n,j.z,null)}const r=t.children;for(let s=0,a=r.length;s<a;s++)Gt(r[s],e,n,i)}function Wt(t,e,n,i){const r=t.opaque,s=t.transmissive,a=t.transparent;g.setupLightsView(n),!0===B&&wt.setGlobalState(y.clippingPlanes,n),i&&nt.viewport(E.copy(i)),r.length>0&&Xt(r,e,n),s.length>0&&Xt(s,e,n),a.length>0&&Xt(a,e,n),nt.buffers.depth.setTest(!0),nt.buffers.depth.setMask(!0),nt.buffers.color.setMask(!0),nt.setPolygonOffset(!1)}function jt(t,e,n,i){if(null!==(!0===n.isScene?n.overrideMaterial:null))return;void 0===g.state.transmissionRenderTarget[i.id]&&(g.state.transmissionRenderTarget[i.id]=new ln(1,1,{generateMipmaps:!0,type:K.has("EXT_color_buffer_half_float")||K.has("EXT_color_buffer_float")?it:J,minFilter:Z,samples:4,stencilBuffer:s,resolveDepthBuffer:!1,resolveStencilBuffer:!1,colorSpace:Ze.workingColorSpace}));const r=g.state.transmissionRenderTarget[i.id],a=i.viewport||E;r.setSize(a.z*y.transmissionResolutionScale,a.w*y.transmissionResolutionScale);const o=y.getRenderTarget();y.setRenderTarget(r),y.getClearColor(R),z=y.getClearAlpha(),z<1&&y.setClearColor(16777215,.5),y.clear(),Y&&Mt.render(n);const l=y.toneMapping;y.toneMapping=0;const h=i.viewport;if(void 0!==i.viewport&&(i.viewport=void 0),g.setupLightsView(i),!0===B&&wt.setGlobalState(y.clippingPlanes,i),Xt(t,n,i),ht.updateMultisampleRenderTarget(r),ht.updateRenderTargetMipmap(r),!1===K.has("WEBGL_multisampled_render_to_texture")){let t=!1;for(let r=0,s=e.length;r<s;r++){const s=e[r],a=s.object,o=s.geometry,l=s.material,h=s.group;if(2===l.side&&a.layers.test(i.layers)){const e=l.side;l.side=1,l.needsUpdate=!0,Yt(a,n,i,o,l,h),l.side=e,l.needsUpdate=!0,t=!0}}!0===t&&(ht.updateMultisampleRenderTarget(r),ht.updateRenderTargetMipmap(r))}y.setRenderTarget(o),y.setClearColor(R,z),void 0!==h&&(i.viewport=h),y.toneMapping=l}function Xt(t,e,n){const i=!0===e.isScene?e.overrideMaterial:null;for(let r=0,s=t.length;r<s;r++){const s=t[r],a=s.object,o=s.geometry,l=null===i?s.material:i,h=s.group;a.layers.test(n.layers)&&Yt(a,e,n,o,l,h)}}function Yt(t,e,n,i,r,s){t.onBeforeRender(y,e,n,i,r,s),t.modelViewMatrix.multiplyMatrices(n.matrixWorldInverse,t.matrixWorld),t.normalMatrix.getNormalMatrix(t.modelViewMatrix),r.onBeforeRender(y,e,n,i,t,s),!0===r.transparent&&2===r.side&&!1===r.forceSinglePass?(r.side=1,r.needsUpdate=!0,y.renderBufferDirect(n,e,i,r,t,s),r.side=0,r.needsUpdate=!0,y.renderBufferDirect(n,e,i,r,t,s),r.side=2):y.renderBufferDirect(n,e,i,r,t,s),t.onAfterRender(y,e,n,i,r,s)}function Zt(t,e,n){!0!==e.isScene&&(e=X);const i=lt.get(t),r=g.state.lights,s=g.state.shadowsArray,a=r.state.version,o=pt.getParameters(t,r.state,s,e,n),l=pt.getProgramCacheKey(o);let h=i.programs;i.environment=t.isMeshStandardMaterial?e.environment:null,i.fog=e.fog,i.envMap=(t.isMeshStandardMaterial?qt:ct).get(t.envMap||i.environment),i.envMapRotation=null!==i.environment&&null===t.envMap?e.environmentRotation:t.envMapRotation,void 0===h&&(t.addEventListener("dispose",Ut),h=new Map,i.programs=h);let c=h.get(l);if(void 0!==c){if(i.currentProgram===c&&i.lightsStateVersion===a)return $t(t,o),c}else o.uniforms=pt.getUniforms(t),t.onBeforeCompile(o,y),c=pt.acquireProgram(o,l),h.set(l,c),i.uniforms=o.uniforms;const q=i.uniforms;return(t.isShaderMaterial||t.isRawShaderMaterial)&&!0!==t.clipping||(q.clippingPlanes=wt.uniform),$t(t,o),i.needsLights=function(t){return t.isMeshLambertMaterial||t.isMeshToonMaterial||t.isMeshPhongMaterial||t.isMeshStandardMaterial||t.isShadowMaterial||t.isShaderMaterial&&!0===t.lights}(t),i.lightsStateVersion=a,i.needsLights&&(q.ambientLightColor.value=r.state.ambient,q.lightProbe.value=r.state.probe,q.directionalLights.value=r.state.directional,q.directionalLightShadows.value=r.state.directionalShadow,q.spotLights.value=r.state.spot,q.spotLightShadows.value=r.state.spotShadow,q.rectAreaLights.value=r.state.rectArea,q.ltc_1.value=r.state.rectAreaLTC1,q.ltc_2.value=r.state.rectAreaLTC2,q.pointLights.value=r.state.point,q.pointLightShadows.value=r.state.pointShadow,q.hemisphereLights.value=r.state.hemi,q.directionalShadowMap.value=r.state.directionalShadowMap,q.directionalShadowMatrix.value=r.state.directionalShadowMatrix,q.spotShadowMap.value=r.state.spotShadowMap,q.spotLightMatrix.value=r.state.spotLightMatrix,q.spotLightMap.value=r.state.spotLightMap,q.pointShadowMap.value=r.state.pointShadowMap,q.pointShadowMatrix.value=r.state.pointShadowMatrix),i.currentProgram=c,i.uniformsList=null,c}function Jt(t){if(null===t.uniformsList){const e=t.currentProgram.getUniforms();t.uniformsList=iu.seqWithValue(e.seq,t.uniforms)}return t.uniformsList}function $t(t,e){const n=lt.get(t);n.outputColorSpace=e.outputColorSpace,n.batching=e.batching,n.batchingColor=e.batchingColor,n.instancing=e.instancing,n.instancingColor=e.instancingColor,n.instancingMorph=e.instancingMorph,n.skinning=e.skinning,n.morphTargets=e.morphTargets,n.morphNormals=e.morphNormals,n.morphColors=e.morphColors,n.morphTargetsCount=e.morphTargetsCount,n.numClippingPlanes=e.numClippingPlanes,n.numIntersection=e.numClipIntersection,n.vertexAlphas=e.vertexAlphas,n.vertexTangents=e.vertexTangents,n.toneMapping=e.toneMapping}Ht.setAnimationLoop((function(t){Ft&&Ft(t)})),"undefined"!=typeof self&&Ht.setContext(self),this.setAnimationLoop=function(t){Ft=t,Lt.setAnimationLoop(t),null===t?Ht.stop():Ht.start()},Lt.addEventListener("sessionstart",Bt),Lt.addEventListener("sessionend",Vt),this.render=function(t,e){if(void 0!==e&&!0!==e.isCamera)return void console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.");if(!0===v)return;if(!0===t.matrixWorldAutoUpdate&&t.updateMatrixWorld(),null===e.parent&&!0===e.matrixWorldAutoUpdate&&e.updateMatrixWorld(),!0===Lt.enabled&&!0===Lt.isPresenting&&(!0===Lt.cameraAutoUpdate&&Lt.updateCamera(e),e=Lt.getCamera()),!0===t.isScene&&t.onBeforeRender(y,t,e,M),g=vt.get(t,_.length),g.init(e),_.push(g),G.multiplyMatrices(e.projectionMatrix,e.matrixWorldInverse),F.setFromProjectionMatrix(G),V=this.localClippingEnabled,B=wt.init(this.clippingPlanes,V),f=yt.get(t,x.length),f.init(),x.push(f),!0===Lt.enabled&&!0===Lt.isPresenting){const t=y.xr.getDepthSensingMesh();null!==t&&Gt(t,e,-1/0,y.sortObjects)}Gt(t,e,0,y.sortObjects),f.finish(),!0===y.sortObjects&&f.sort(N,k),Y=!1===Lt.enabled||!1===Lt.isPresenting||!1===Lt.hasDepthSensing(),Y&&Mt.addToRenderList(f,t),this.info.render.frame++,!0===B&&wt.beginShadows();const n=g.state.shadowsArray;bt.render(n,t,e),!0===B&&wt.endShadows(),!0===this.info.autoReset&&this.info.reset();const i=f.opaque,r=f.transmissive;if(g.setupLights(),e.isArrayCamera){const n=e.cameras;if(r.length>0)for(let e=0,s=n.length;e<s;e++){jt(i,r,t,n[e])}Y&&Mt.render(t);for(let e=0,i=n.length;e<i;e++){const i=n[e];Wt(f,t,i,i.viewport)}}else r.length>0&&jt(i,r,t,e),Y&&Mt.render(t),Wt(f,t,e);null!==M&&0===b&&(ht.updateMultisampleRenderTarget(M),ht.updateRenderTargetMipmap(M)),!0===t.isScene&&t.onAfterRender(y,t,e),Ct.resetDefaultState(),S=-1,T=null,_.pop(),_.length>0?(g=_[_.length-1],!0===B&&wt.setGlobalState(y.clippingPlanes,g.state.camera)):g=null,x.pop(),f=x.length>0?x[x.length-1]:null},this.getActiveCubeFace=function(){return w},this.getActiveMipmapLevel=function(){return b},this.getRenderTarget=function(){return M},this.setRenderTargetTextures=function(t,e,n){lt.get(t.texture).__webglTexture=e,lt.get(t.depthTexture).__webglTexture=n;const i=lt.get(t);i.__hasExternalTextures=!0,i.__autoAllocateDepthBuffer=void 0===n,i.__autoAllocateDepthBuffer||!0===K.has("WEBGL_multisampled_render_to_texture")&&(console.warn("THREE.WebGLRenderer: Render-to-texture extension was disabled because an external texture was provided"),i.__useRenderToTexture=!1)},this.setRenderTargetFramebuffer=function(t,e){const n=lt.get(t);n.__webglFramebuffer=e,n.__useDefaultFramebuffer=void 0===e};const Kt=zt.createFramebuffer();this.setRenderTarget=function(t,e=0,n=0){M=t,w=e,b=n;let i=!0,r=null,s=!1,a=!1;if(t){const o=lt.get(t);if(void 0!==o.__useDefaultFramebuffer)nt.bindFramebuffer(zt.FRAMEBUFFER,null),i=!1;else if(void 0===o.__webglFramebuffer)ht.setupRenderTarget(t);else if(o.__hasExternalTextures)ht.rebindTextures(t,lt.get(t.texture).__webglTexture,lt.get(t.depthTexture).__webglTexture);else if(t.depthBuffer){const e=t.depthTexture;if(o.__boundDepthTexture!==e){if(null!==e&&lt.has(e)&&(t.width!==e.image.width||t.height!==e.image.height))throw new Error("WebGLRenderTarget: Attached DepthTexture is initialized to the incorrect size.");ht.setupDepthRenderbuffer(t)}}const l=t.texture;(l.isData3DTexture||l.isDataArrayTexture||l.isCompressedArrayTexture)&&(a=!0);const h=lt.get(t).__webglFramebuffer;t.isWebGLCubeRenderTarget?(r=Array.isArray(h[e])?h[e][n]:h[e],s=!0):r=t.samples>0&&!1===ht.useMultisampledRTT(t)?lt.get(t).__webglMultisampledFramebuffer:Array.isArray(h)?h[n]:h,E.copy(t.viewport),A.copy(t.scissor),C=t.scissorTest}else E.copy(D).multiplyScalar(L).floor(),A.copy(U).multiplyScalar(L).floor(),C=O;0!==n&&(r=Kt);if(nt.bindFramebuffer(zt.FRAMEBUFFER,r)&&i&&nt.drawBuffers(t,r),nt.viewport(E),nt.scissor(A),nt.setScissorTest(C),s){const i=lt.get(t.texture);zt.framebufferTexture2D(zt.FRAMEBUFFER,zt.COLOR_ATTACHMENT0,zt.TEXTURE_CUBE_MAP_POSITIVE_X+e,i.__webglTexture,n)}else if(a){const i=lt.get(t.texture),r=e;zt.framebufferTextureLayer(zt.FRAMEBUFFER,zt.COLOR_ATTACHMENT0,i.__webglTexture,n,r)}else if(null!==t&&0!==n){const e=lt.get(t.texture);zt.framebufferTexture2D(zt.FRAMEBUFFER,zt.COLOR_ATTACHMENT0,zt.TEXTURE_2D,e.__webglTexture,n)}S=-1},this.readRenderTargetPixels=function(t,e,n,i,r,s,a){if(!t||!t.isWebGLRenderTarget)return void console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");let o=lt.get(t).__webglFramebuffer;if(t.isWebGLCubeRenderTarget&&void 0!==a&&(o=o[a]),o){nt.bindFramebuffer(zt.FRAMEBUFFER,o);try{const a=t.texture,o=a.format,l=a.type;if(!tt.textureFormatReadable(o))return void console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");if(!tt.textureTypeReadable(l))return void console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");e>=0&&e<=t.width-i&&n>=0&&n<=t.height-r&&zt.readPixels(e,n,i,r,At.convert(o),At.convert(l),s)}finally{const t=null!==M?lt.get(M).__webglFramebuffer:null;nt.bindFramebuffer(zt.FRAMEBUFFER,t)}}},this.readRenderTargetPixelsAsync=async function(t,e,n,i,r,s,a){if(!t||!t.isWebGLRenderTarget)throw new Error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");let o=lt.get(t).__webglFramebuffer;if(t.isWebGLCubeRenderTarget&&void 0!==a&&(o=o[a]),o){const a=t.texture,l=a.format,h=a.type;if(!tt.textureFormatReadable(l))throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in RGBA or implementation defined format.");if(!tt.textureTypeReadable(h))throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in UnsignedByteType or implementation defined type.");if(e>=0&&e<=t.width-i&&n>=0&&n<=t.height-r){nt.bindFramebuffer(zt.FRAMEBUFFER,o);const t=zt.createBuffer();zt.bindBuffer(zt.PIXEL_PACK_BUFFER,t),zt.bufferData(zt.PIXEL_PACK_BUFFER,s.byteLength,zt.STREAM_READ),zt.readPixels(e,n,i,r,At.convert(l),At.convert(h),0);const a=null!==M?lt.get(M).__webglFramebuffer:null;nt.bindFramebuffer(zt.FRAMEBUFFER,a);const c=zt.fenceSync(zt.SYNC_GPU_COMMANDS_COMPLETE,0);return zt.flush(),await function(t,e,n){return new Promise((function(i,r){setTimeout((function s(){switch(t.clientWaitSync(e,t.SYNC_FLUSH_COMMANDS_BIT,0)){case t.WAIT_FAILED:r();break;case t.TIMEOUT_EXPIRED:setTimeout(s,n);break;default:i()}}),n)}))}(zt,c,4),zt.bindBuffer(zt.PIXEL_PACK_BUFFER,t),zt.getBufferSubData(zt.PIXEL_PACK_BUFFER,0,s),zt.deleteBuffer(t),zt.deleteSync(c),s}throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: requested read bounds are out of range.")}},this.copyFramebufferToTexture=function(t,e=null,n=0){!0!==t.isTexture&&(We("WebGLRenderer: copyFramebufferToTexture function signature has changed."),e=arguments[0]||null,t=arguments[1]);const i=Math.pow(2,-n),r=Math.floor(t.image.width*i),s=Math.floor(t.image.height*i),a=null!==e?e.x:0,o=null!==e?e.y:0;ht.setTexture2D(t,0),zt.copyTexSubImage2D(zt.TEXTURE_2D,n,0,0,a,o,r,s),nt.unbindTexture()};const Qt=zt.createFramebuffer(),te=zt.createFramebuffer();this.copyTextureToTexture=function(t,e,n=null,i=null,r=0,s=null){let a,o,l,h,c,q,u,d,m;!0!==t.isTexture&&(We("WebGLRenderer: copyTextureToTexture function signature has changed."),i=arguments[0]||null,t=arguments[1],e=arguments[2],s=arguments[3]||0,n=null),null===s&&(0!==r?(We("WebGLRenderer: copyTextureToTexture function signature has changed to support src and dst mipmap levels."),s=r,r=0):s=0);const p=t.isCompressedTexture?t.mipmaps[s]:t.image;if(null!==n)a=n.max.x-n.min.x,o=n.max.y-n.min.y,l=n.isBox3?n.max.z-n.min.z:1,h=n.min.x,c=n.min.y,q=n.isBox3?n.min.z:0;else{const e=Math.pow(2,-r);a=Math.floor(p.width*e),o=Math.floor(p.height*e),l=t.isDataArrayTexture?p.depth:t.isData3DTexture?Math.floor(p.depth*e):1,h=0,c=0,q=0}null!==i?(u=i.x,d=i.y,m=i.z):(u=0,d=0,m=0);const f=At.convert(e.format),g=At.convert(e.type);let x;e.isData3DTexture?(ht.setTexture3D(e,0),x=zt.TEXTURE_3D):e.isDataArrayTexture||e.isCompressedArrayTexture?(ht.setTexture2DArray(e,0),x=zt.TEXTURE_2D_ARRAY):(ht.setTexture2D(e,0),x=zt.TEXTURE_2D),zt.pixelStorei(zt.UNPACK_FLIP_Y_WEBGL,e.flipY),zt.pixelStorei(zt.UNPACK_PREMULTIPLY_ALPHA_WEBGL,e.premultiplyAlpha),zt.pixelStorei(zt.UNPACK_ALIGNMENT,e.unpackAlignment);const _=zt.getParameter(zt.UNPACK_ROW_LENGTH),y=zt.getParameter(zt.UNPACK_IMAGE_HEIGHT),v=zt.getParameter(zt.UNPACK_SKIP_PIXELS),w=zt.getParameter(zt.UNPACK_SKIP_ROWS),b=zt.getParameter(zt.UNPACK_SKIP_IMAGES);zt.pixelStorei(zt.UNPACK_ROW_LENGTH,p.width),zt.pixelStorei(zt.UNPACK_IMAGE_HEIGHT,p.height),zt.pixelStorei(zt.UNPACK_SKIP_PIXELS,h),zt.pixelStorei(zt.UNPACK_SKIP_ROWS,c),zt.pixelStorei(zt.UNPACK_SKIP_IMAGES,q);const M=t.isDataArrayTexture||t.isData3DTexture,S=e.isDataArrayTexture||e.isData3DTexture;if(t.isDepthTexture){const n=lt.get(t),i=lt.get(e),p=lt.get(n.__renderTarget),f=lt.get(i.__renderTarget);nt.bindFramebuffer(zt.READ_FRAMEBUFFER,p.__webglFramebuffer),nt.bindFramebuffer(zt.DRAW_FRAMEBUFFER,f.__webglFramebuffer);for(let g=0;g<l;g++)M&&(zt.framebufferTextureLayer(zt.READ_FRAMEBUFFER,zt.COLOR_ATTACHMENT0,lt.get(t).__webglTexture,r,q+g),zt.framebufferTextureLayer(zt.DRAW_FRAMEBUFFER,zt.COLOR_ATTACHMENT0,lt.get(e).__webglTexture,s,m+g)),zt.blitFramebuffer(h,c,a,o,u,d,a,o,zt.DEPTH_BUFFER_BIT,zt.NEAREST);nt.bindFramebuffer(zt.READ_FRAMEBUFFER,null),nt.bindFramebuffer(zt.DRAW_FRAMEBUFFER,null)}else if(0!==r||t.isRenderTargetTexture||lt.has(t)){const n=lt.get(t),i=lt.get(e);nt.bindFramebuffer(zt.READ_FRAMEBUFFER,Qt),nt.bindFramebuffer(zt.DRAW_FRAMEBUFFER,te);for(let t=0;t<l;t++)M?zt.framebufferTextureLayer(zt.READ_FRAMEBUFFER,zt.COLOR_ATTACHMENT0,n.__webglTexture,r,q+t):zt.framebufferTexture2D(zt.READ_FRAMEBUFFER,zt.COLOR_ATTACHMENT0,zt.TEXTURE_2D,n.__webglTexture,r),S?zt.framebufferTextureLayer(zt.DRAW_FRAMEBUFFER,zt.COLOR_ATTACHMENT0,i.__webglTexture,s,m+t):zt.framebufferTexture2D(zt.DRAW_FRAMEBUFFER,zt.COLOR_ATTACHMENT0,zt.TEXTURE_2D,i.__webglTexture,s),0!==r?zt.blitFramebuffer(h,c,a,o,u,d,a,o,zt.COLOR_BUFFER_BIT,zt.NEAREST):S?zt.copyTexSubImage3D(x,s,u,d,m+t,h,c,a,o):zt.copyTexSubImage2D(x,s,u,d,h,c,a,o);nt.bindFramebuffer(zt.READ_FRAMEBUFFER,null),nt.bindFramebuffer(zt.DRAW_FRAMEBUFFER,null)}else S?t.isDataTexture||t.isData3DTexture?zt.texSubImage3D(x,s,u,d,m,a,o,l,f,g,p.data):e.isCompressedArrayTexture?zt.compressedTexSubImage3D(x,s,u,d,m,a,o,l,f,p.data):zt.texSubImage3D(x,s,u,d,m,a,o,l,f,g,p):t.isDataTexture?zt.texSubImage2D(zt.TEXTURE_2D,s,u,d,a,o,f,g,p.data):t.isCompressedTexture?zt.compressedTexSubImage2D(zt.TEXTURE_2D,s,u,d,p.width,p.height,f,p.data):zt.texSubImage2D(zt.TEXTURE_2D,s,u,d,a,o,f,g,p);zt.pixelStorei(zt.UNPACK_ROW_LENGTH,_),zt.pixelStorei(zt.UNPACK_IMAGE_HEIGHT,y),zt.pixelStorei(zt.UNPACK_SKIP_PIXELS,v),zt.pixelStorei(zt.UNPACK_SKIP_ROWS,w),zt.pixelStorei(zt.UNPACK_SKIP_IMAGES,b),0===s&&e.generateMipmaps&&zt.generateMipmap(x),nt.unbindTexture()},this.copyTextureToTexture3D=function(t,e,n=null,i=null,r=0){return!0!==t.isTexture&&(We("WebGLRenderer: copyTextureToTexture3D function signature has changed."),n=arguments[0]||null,i=arguments[1]||null,t=arguments[2],e=arguments[3],r=arguments[4]||0),We('WebGLRenderer: copyTextureToTexture3D function has been deprecated. Use "copyTextureToTexture" instead.'),this.copyTextureToTexture(t,e,n,i,r)},this.initRenderTarget=function(t){void 0===lt.get(t).__webglFramebuffer&&ht.setupRenderTarget(t)},this.initTexture=function(t){t.isCubeTexture?ht.setTextureCube(t,0):t.isData3DTexture?ht.setTexture3D(t,0):t.isDataArrayTexture||t.isCompressedArrayTexture?ht.setTexture2DArray(t,0):ht.setTexture2D(t,0),nt.unbindTexture()},this.resetState=function(){w=0,b=0,M=null,nt.reset(),Ct.reset()},"undefined"!=typeof __THREE_DEVTOOLS__&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}get coordinateSystem(){return we}get outputColorSpace(){return this._outputColorSpace}set outputColorSpace(t){this._outputColorSpace=t;const e=this.getContext();e.drawingBufferColorspace=Ze._getDrawingBufferColorSpace(t),e.unpackColorSpace=Ze._getUnpackColorSpace()}}const Qu=Object.freeze(Object.defineProperty({__proto__:null,ACESFilmicToneMapping:4,AddEquation:o,AddOperation:2,AdditiveAnimationBlendMode:se,AdditiveBlending:2,AgXToneMapping:6,AlphaFormat:lt,AlwaysCompare:519,AlwaysDepth:1,AlwaysStencilFunc:519,AmbientLight:Zl,AnimationAction:zh,AnimationClip:bl,AnimationLoader:class extends Al{constructor(t){super(t)}load(t,e,n,i){const r=this,s=new zl(this.manager);s.setPath(this.path),s.setRequestHeader(this.requestHeader),s.setWithCredentials(this.withCredentials),s.load(t,(function(n){try{e(r.parse(JSON.parse(n)))}catch(s){i?i(s):console.error(s),r.manager.itemError(t)}}),n,i)}parse(t){const e=[];for(let n=0;n<t.length;n++){const i=bl.parse(t[n]);e.push(i)}return e}},AnimationMixer:class extends Me{constructor(t){super(),this._root=t,this._initMemoryManager(),this._accuIndex=0,this.time=0,this.timeScale=1}_bindAction(t,e){const n=t._localRoot||this._root,i=t._clip.tracks,r=i.length,s=t._propertyBindings,a=t._interpolants,o=n.uuid,l=this._bindingsByRootAndName;let h=l[o];void 0===h&&(h={},l[o]=h);for(let c=0;c!==r;++c){const t=i[c],r=t.name;let l=h[r];if(void 0!==l)++l.referenceCount,s[c]=l;else{if(l=s[c],void 0!==l){null===l._cacheIndex&&(++l.referenceCount,this._addInactiveBinding(l,o,r));continue}const i=e&&e._propertyBindings[c].binding.parsedPath;l=new bh(Rh.create(n,r,i),t.ValueTypeName,t.getValueSize()),++l.referenceCount,this._addInactiveBinding(l,o,r),s[c]=l}a[c].resultBuffer=l.buffer}}_activateAction(t){if(!this._isActiveAction(t)){if(null===t._cacheIndex){const e=(t._localRoot||this._root).uuid,n=t._clip.uuid,i=this._actionsByClip[n];this._bindAction(t,i&&i.knownActions[0]),this._addInactiveAction(t,n,e)}const e=t._propertyBindings;for(let t=0,n=e.length;t!==n;++t){const n=e[t];0==n.useCount++&&(this._lendBinding(n),n.saveOriginalState())}this._lendAction(t)}}_deactivateAction(t){if(this._isActiveAction(t)){const e=t._propertyBindings;for(let t=0,n=e.length;t!==n;++t){const n=e[t];0==--n.useCount&&(n.restoreOriginalState(),this._takeBackBinding(n))}this._takeBackAction(t)}}_initMemoryManager(){this._actions=[],this._nActiveActions=0,this._actionsByClip={},this._bindings=[],this._nActiveBindings=0,this._bindingsByRootAndName={},this._controlInterpolants=[],this._nActiveControlInterpolants=0;const t=this;this.stats={actions:{get total(){return t._actions.length},get inUse(){return t._nActiveActions}},bindings:{get total(){return t._bindings.length},get inUse(){return t._nActiveBindings}},controlInterpolants:{get total(){return t._controlInterpolants.length},get inUse(){return t._nActiveControlInterpolants}}}}_isActiveAction(t){const e=t._cacheIndex;return null!==e&&e<this._nActiveActions}_addInactiveAction(t,e,n){const i=this._actions,r=this._actionsByClip;let s=r[e];if(void 0===s)s={knownActions:[t],actionByRoot:{}},t._byClipCacheIndex=0,r[e]=s;else{const e=s.knownActions;t._byClipCacheIndex=e.length,e.push(t)}t._cacheIndex=i.length,i.push(t),s.actionByRoot[n]=t}_removeInactiveAction(t){const e=this._actions,n=e[e.length-1],i=t._cacheIndex;n._cacheIndex=i,e[i]=n,e.pop(),t._cacheIndex=null;const r=t._clip.uuid,s=this._actionsByClip,a=s[r],o=a.knownActions,l=o[o.length-1],h=t._byClipCacheIndex;l._byClipCacheIndex=h,o[h]=l,o.pop(),t._byClipCacheIndex=null;delete a.actionByRoot[(t._localRoot||this._root).uuid],0===o.length&&delete s[r],this._removeInactiveBindingsForAction(t)}_removeInactiveBindingsForAction(t){const e=t._propertyBindings;for(let n=0,i=e.length;n!==i;++n){const t=e[n];0==--t.referenceCount&&this._removeInactiveBinding(t)}}_lendAction(t){const e=this._actions,n=t._cacheIndex,i=this._nActiveActions++,r=e[i];t._cacheIndex=i,e[i]=t,r._cacheIndex=n,e[n]=r}_takeBackAction(t){const e=this._actions,n=t._cacheIndex,i=--this._nActiveActions,r=e[i];t._cacheIndex=i,e[i]=t,r._cacheIndex=n,e[n]=r}_addInactiveBinding(t,e,n){const i=this._bindingsByRootAndName,r=this._bindings;let s=i[e];void 0===s&&(s={},i[e]=s),s[n]=t,t._cacheIndex=r.length,r.push(t)}_removeInactiveBinding(t){const e=this._bindings,n=t.binding,i=n.rootNode.uuid,r=n.path,s=this._bindingsByRootAndName,a=s[i],o=e[e.length-1],l=t._cacheIndex;o._cacheIndex=l,e[l]=o,e.pop(),delete a[r],0===Object.keys(a).length&&delete s[i]}_lendBinding(t){const e=this._bindings,n=t._cacheIndex,i=this._nActiveBindings++,r=e[i];t._cacheIndex=i,e[i]=t,r._cacheIndex=n,e[n]=r}_takeBackBinding(t){const e=this._bindings,n=t._cacheIndex,i=--this._nActiveBindings,r=e[i];t._cacheIndex=i,e[i]=t,r._cacheIndex=n,e[n]=r}_lendControlInterpolant(){const t=this._controlInterpolants,e=this._nActiveControlInterpolants++;let n=t[e];return void 0===n&&(n=new dl(new Float32Array(2),new Float32Array(2),1,Ih),n.__cacheIndex=e,t[e]=n),n}_takeBackControlInterpolant(t){const e=this._controlInterpolants,n=t.__cacheIndex,i=--this._nActiveControlInterpolants,r=e[i];t.__cacheIndex=i,e[i]=t,r.__cacheIndex=n,e[n]=r}clipAction(t,e,n){const i=e||this._root,r=i.uuid;let s="string"==typeof t?bl.findByName(i,t):t;const a=null!==s?s.uuid:t,o=this._actionsByClip[a];let l=null;if(void 0===n&&(n=null!==s?s.blendMode:re),void 0!==o){const t=o.actionByRoot[r];if(void 0!==t&&t.blendMode===n)return t;l=o.knownActions[0],null===s&&(s=l._clip)}if(null===s)return null;const h=new zh(this,s,e,n);return this._bindAction(h,l),this._addInactiveAction(h,a,r),h}existingAction(t,e){const n=e||this._root,i=n.uuid,r="string"==typeof t?bl.findByName(n,t):t,s=r?r.uuid:t,a=this._actionsByClip[s];return void 0!==a&&a.actionByRoot[i]||null}stopAllAction(){const t=this._actions;for(let e=this._nActiveActions-1;e>=0;--e)t[e].stop();return this}update(t){t*=this.timeScale;const e=this._actions,n=this._nActiveActions,i=this.time+=t,r=Math.sign(t),s=this._accuIndex^=1;for(let l=0;l!==n;++l){e[l]._update(i,t,r,s)}const a=this._bindings,o=this._nActiveBindings;for(let l=0;l!==o;++l)a[l].apply(s);return this}setTime(t){this.time=0;for(let e=0;e<this._actions.length;e++)this._actions[e].time=0;return this.update(t)}getRoot(){return this._root}uncacheClip(t){const e=this._actions,n=t.uuid,i=this._actionsByClip,r=i[n];if(void 0!==r){const t=r.knownActions;for(let n=0,i=t.length;n!==i;++n){const i=t[n];this._deactivateAction(i);const r=i._cacheIndex,s=e[e.length-1];i._cacheIndex=null,i._byClipCacheIndex=null,s._cacheIndex=r,e[r]=s,e.pop(),this._removeInactiveBindingsForAction(i)}delete i[n]}}uncacheRoot(t){const e=t.uuid,n=this._actionsByClip;for(const r in n){const t=n[r].actionByRoot[e];void 0!==t&&(this._deactivateAction(t),this._removeInactiveAction(t))}const i=this._bindingsByRootAndName[e];if(void 0!==i)for(const r in i){const t=i[r];t.restoreOriginalState(),this._removeInactiveBinding(t)}}uncacheAction(t,e){const n=this.existingAction(t,e);null!==n&&(this._deactivateAction(n),this._removeInactiveAction(n))}},AnimationObjectGroup:class{constructor(){this.isAnimationObjectGroup=!0,this.uuid=Ce(),this._objects=Array.prototype.slice.call(arguments),this.nCachedObjects_=0;const t={};this._indicesByUUID=t;for(let n=0,i=arguments.length;n!==i;++n)t[arguments[n].uuid]=n;this._paths=[],this._parsedPaths=[],this._bindings=[],this._bindingsIndicesByPath={};const e=this;this.stats={objects:{get total(){return e._objects.length},get inUse(){return this.total-e.nCachedObjects_}},get bindingsPerObject(){return e._bindings.length}}}add(){const t=this._objects,e=this._indicesByUUID,n=this._paths,i=this._parsedPaths,r=this._bindings,s=r.length;let a,o=t.length,l=this.nCachedObjects_;for(let h=0,c=arguments.length;h!==c;++h){const c=arguments[h],q=c.uuid;let u=e[q];if(void 0===u){u=o++,e[q]=u,t.push(c);for(let t=0,e=s;t!==e;++t)r[t].push(new Rh(c,n[t],i[t]))}else if(u<l){a=t[u];const o=--l,h=t[o];e[h.uuid]=u,t[u]=h,e[q]=o,t[o]=c;for(let t=0,e=s;t!==e;++t){const e=r[t],s=e[o];let a=e[u];e[u]=s,void 0===a&&(a=new Rh(c,n[t],i[t])),e[o]=a}}else t[u]!==a&&console.error("THREE.AnimationObjectGroup: Different objects with the same UUID detected. Clean the caches or recreate your infrastructure when reloading scenes.")}this.nCachedObjects_=l}remove(){const t=this._objects,e=this._indicesByUUID,n=this._bindings,i=n.length;let r=this.nCachedObjects_;for(let s=0,a=arguments.length;s!==a;++s){const a=arguments[s],o=a.uuid,l=e[o];if(void 0!==l&&l>=r){const s=r++,h=t[s];e[h.uuid]=l,t[l]=h,e[o]=s,t[s]=a;for(let t=0,e=i;t!==e;++t){const e=n[t],i=e[s],r=e[l];e[l]=i,e[s]=r}}}this.nCachedObjects_=r}uncache(){const t=this._objects,e=this._indicesByUUID,n=this._bindings,i=n.length;let r=this.nCachedObjects_,s=t.length;for(let a=0,o=arguments.length;a!==o;++a){const o=arguments[a].uuid,l=e[o];if(void 0!==l)if(delete e[o],l<r){const a=--r,o=t[a],h=--s,c=t[h];e[o.uuid]=l,t[l]=o,e[c.uuid]=a,t[a]=c,t.pop();for(let t=0,e=i;t!==e;++t){const e=n[t],i=e[a],r=e[h];e[l]=i,e[a]=r,e.pop()}}else{const r=--s,a=t[r];r>0&&(e[a.uuid]=l),t[l]=a,t.pop();for(let t=0,e=i;t!==e;++t){const e=n[t];e[l]=e[r],e.pop()}}}this.nCachedObjects_=r}subscribe_(t,e){const n=this._bindingsIndicesByPath;let i=n[t];const r=this._bindings;if(void 0!==i)return r[i];const s=this._paths,a=this._parsedPaths,o=this._objects,l=o.length,h=this.nCachedObjects_,c=new Array(l);i=r.length,n[t]=i,s.push(t),a.push(e),r.push(c);for(let q=h,u=o.length;q!==u;++q){const n=o[q];c[q]=new Rh(n,t,e)}return c}unsubscribe_(t){const e=this._bindingsIndicesByPath,n=e[t];if(void 0!==n){const i=this._paths,r=this._parsedPaths,s=this._bindings,a=s.length-1,o=s[a];e[t[a]]=n,s[n]=o,s.pop(),r[n]=r[a],r.pop(),i[n]=i[a],i.pop()}}},AnimationUtils:cl,ArcCurve:Ma,ArrayCamera:qh,ArrowHelper:class extends pi{constructor(t=new un(0,0,1),e=new un(0,0,0),n=1,i=16776960,r=.2*n,s=.2*r){super(),this.type="ArrowHelper",void 0===lc&&(lc=new ir,lc.setAttribute("position",new Zi([0,0,0,0,1,0],3)),hc=new Xa(0,.5,1,5,1),hc.translate(0,-.5,0)),this.position.copy(e),this.line=new aa(lc,new Ks({color:i,toneMapped:!1})),this.line.matrixAutoUpdate=!1,this.add(this.line),this.cone=new pr(hc,new Ui({color:i,toneMapped:!1})),this.cone.matrixAutoUpdate=!1,this.add(this.cone),this.setDirection(t),this.setLength(n,r,s)}setDirection(t){if(t.y>.99999)this.quaternion.set(0,0,0,1);else if(t.y<-.99999)this.quaternion.set(1,0,0,0);else{oc.set(t.z,0,-t.x).normalize();const e=Math.acos(t.y);this.quaternion.setFromAxisAngle(oc,e)}}setLength(t,e=.2*t,n=.2*e){this.line.scale.set(1,Math.max(1e-4,t-e),1),this.line.updateMatrix(),this.cone.scale.set(n,e,n),this.cone.position.y=t,this.cone.updateMatrix()}setColor(t){this.line.material.color.set(t),this.cone.material.color.set(t)}copy(t){return super.copy(t,!1),this.line.copy(t.line),this.cone.copy(t.cone),this}dispose(){this.line.geometry.dispose(),this.line.material.dispose(),this.cone.geometry.dispose(),this.cone.material.dispose()}},AttachedBindMode:P,Audio:xh,AudioAnalyser:class{constructor(t,e=2048){this.analyser=t.context.createAnalyser(),this.analyser.fftSize=e,this.data=new Uint8Array(this.analyser.frequencyBinCount),t.getOutput().connect(this.analyser)}getFrequencyData(){return this.analyser.getByteFrequencyData(this.data),this.data}getAverageFrequency(){let t=0;const e=this.getFrequencyData();for(let n=0;n<e.length;n++)t+=e[n];return t/e.length}},AudioContext:oh,AudioListener:class extends pi{constructor(){super(),this.type="AudioListener",this.context=oh.getContext(),this.gain=this.context.createGain(),this.gain.connect(this.context.destination),this.filter=null,this.timeDelta=0,this._clock=new uh}getInput(){return this.gain}removeFilter(){return null!==this.filter&&(this.gain.disconnect(this.filter),this.filter.disconnect(this.context.destination),this.gain.connect(this.context.destination),this.filter=null),this}getFilter(){return this.filter}setFilter(t){return null!==this.filter?(this.gain.disconnect(this.filter),this.filter.disconnect(this.context.destination)):this.gain.disconnect(this.context.destination),this.filter=t,this.gain.connect(this.filter),this.filter.connect(this.context.destination),this}getMasterVolume(){return this.gain.gain.value}setMasterVolume(t){return this.gain.gain.setTargetAtTime(t,this.context.currentTime,.01),this}updateMatrixWorld(t){super.updateMatrixWorld(t);const e=this.context.listener,n=this.up;if(this.timeDelta=this._clock.getDelta(),this.matrixWorld.decompose(mh,ph,fh),gh.set(0,0,-1).applyQuaternion(ph),e.positionX){const t=this.context.currentTime+this.timeDelta;e.positionX.linearRampToValueAtTime(mh.x,t),e.positionY.linearRampToValueAtTime(mh.y,t),e.positionZ.linearRampToValueAtTime(mh.z,t),e.forwardX.linearRampToValueAtTime(gh.x,t),e.forwardY.linearRampToValueAtTime(gh.y,t),e.forwardZ.linearRampToValueAtTime(gh.z,t),e.upX.linearRampToValueAtTime(n.x,t),e.upY.linearRampToValueAtTime(n.y,t),e.upZ.linearRampToValueAtTime(n.z,t)}else e.setPosition(mh.x,mh.y,mh.z),e.setOrientation(gh.x,gh.y,gh.z,n.x,n.y,n.z)}},AudioLoader:class extends Al{constructor(t){super(t)}load(t,e,n,i){const r=this,s=new zl(this.manager);function a(e){i?i(e):console.error(e),r.manager.itemError(t)}s.setResponseType("arraybuffer"),s.setPath(this.path),s.setRequestHeader(this.requestHeader),s.setWithCredentials(this.withCredentials),s.load(t,(function(t){try{const n=t.slice(0);oh.getContext().decodeAudioData(n,(function(t){e(t)})).catch(a)}catch(n){a(n)}}),n,i)}},AxesHelper:cc,BackSide:1,BasicDepthPacking:3200,BasicShadowMap:0,BatchedMesh:$s,Bone:ds,BooleanKeyframeTrack:fl,Box2:Bh,Box3:pn,Box3Helper:class extends ca{constructor(t,e=16776960){const n=new Uint16Array([0,1,1,2,2,3,3,0,4,5,5,6,6,7,7,4,0,4,1,5,2,6,3,7]),i=new ir;i.setIndex(new ji(n,1)),i.setAttribute("position",new Zi([1,1,1,-1,1,1,-1,-1,1,1,-1,1,1,1,-1,-1,1,-1,-1,-1,-1,1,-1,-1],3)),super(i,new Ks({color:e,toneMapped:!1})),this.box=t,this.type="Box3Helper",this.geometry.computeBoundingSphere()}updateMatrixWorld(t){const e=this.box;e.isEmpty()||(e.getCenter(this.position),e.getSize(this.scale),this.scale.multiplyScalar(.5),super.updateMatrixWorld(t))}dispose(){this.geometry.dispose(),this.material.dispose()}},BoxGeometry:gr,BoxHelper:class extends ca{constructor(t,e=16776960){const n=new Uint16Array([0,1,1,2,2,3,3,0,4,5,5,6,6,7,7,4,0,4,1,5,2,6,3,7]),i=new Float32Array(24),r=new ir;r.setIndex(new ji(n,1)),r.setAttribute("position",new ji(i,3)),super(r,new Ks({color:e,toneMapped:!1})),this.object=t,this.type="BoxHelper",this.matrixAutoUpdate=!1,this.update()}update(t){if(void 0!==t&&console.warn("THREE.BoxHelper: .update() has no longer arguments."),void 0!==this.object&&ac.setFromObject(this.object),ac.isEmpty())return;const e=ac.min,n=ac.max,i=this.geometry.attributes.position,r=i.array;r[0]=n.x,r[1]=n.y,r[2]=n.z,r[3]=e.x,r[4]=n.y,r[5]=n.z,r[6]=e.x,r[7]=e.y,r[8]=n.z,r[9]=n.x,r[10]=e.y,r[11]=n.z,r[12]=n.x,r[13]=n.y,r[14]=e.z,r[15]=e.x,r[16]=n.y,r[17]=e.z,r[18]=e.x,r[19]=e.y,r[20]=e.z,r[21]=n.x,r[22]=e.y,r[23]=e.z,i.needsUpdate=!0,this.geometry.computeBoundingSphere()}setFromObject(t){return this.object=t,this.update(),this}copy(t,e){return super.copy(t,e),this.object=t.object,this}dispose(){this.geometry.dispose(),this.material.dispose()}},BufferAttribute:ji,BufferGeometry:ir,BufferGeometryLoader:nh,ByteType:$,Cache:Sl,Camera:br,CameraHelper:rc,CanvasTexture:class extends sn{constructor(t,e,n,i,r,s,a,o,l){super(t,e,n,i,r,s,a,o,l),this.isCanvasTexture=!0,this.needsUpdate=!0}},CapsuleGeometry:Wa,CatmullRomCurve3:Ra,CineonToneMapping:3,CircleGeometry:ja,ClampToEdgeWrapping:V,Clock:uh,Color:Li,ColorKeyframeTrack:gl,ColorManagement:Ze,CompressedArrayTexture:class extends ya{constructor(t,e,n,i,r,s){super(t,e,n,r,s),this.isCompressedArrayTexture=!0,this.image.depth=i,this.wrapR=V,this.layerUpdates=new Set}addLayerUpdate(t){this.layerUpdates.add(t)}clearLayerUpdates(){this.layerUpdates.clear()}},CompressedCubeTexture:class extends ya{constructor(t,e,n){super(void 0,t[0].width,t[0].height,e,n,k),this.isCompressedCubeTexture=!0,this.isCubeTexture=!0,this.image=t}},CompressedTexture:ya,CompressedTextureLoader:class extends Al{constructor(t){super(t)}load(t,e,n,i){const r=this,s=[],a=new ya,o=new zl(this.manager);o.setPath(this.path),o.setResponseType("arraybuffer"),o.setRequestHeader(this.requestHeader),o.setWithCredentials(r.withCredentials);let l=0;function h(h){o.load(t[h],(function(t){const n=r.parse(t,!0);s[h]={width:n.width,height:n.height,format:n.format,mipmaps:n.mipmaps},l+=1,6===l&&(1===n.mipmapCount&&(a.minFilter=X),a.image=s,a.format=n.format,a.needsUpdate=!0,e&&e(a))}),n,i)}if(Array.isArray(t))for(let c=0,q=t.length;c<q;++c)h(c);else o.load(t,(function(t){const n=r.parse(t,!0);if(n.isCubemap){const t=n.mipmaps.length/n.mipmapCount;for(let e=0;e<t;e++){s[e]={mipmaps:[]};for(let t=0;t<n.mipmapCount;t++)s[e].mipmaps.push(n.mipmaps[e*n.mipmapCount+t]),s[e].format=n.format,s[e].width=n.width,s[e].height=n.height}a.image=s}else a.image.width=n.width,a.image.height=n.height,a.mipmaps=n.mipmaps;1===n.mipmapCount&&(a.minFilter=X),a.format=n.format,a.needsUpdate=!0,e&&e(a)}),n,i);return a}},ConeGeometry:Ya,ConstantAlphaFactor:213,ConstantColorFactor:211,Controls:uc,CubeCamera:Cr,CubeReflectionMapping:k,CubeRefractionMapping:D,CubeTexture:Rr,CubeTextureLoader:class extends Al{constructor(t){super(t)}load(t,e,n,i){const r=new Rr;r.colorSpace=oe;const s=new Il(this.manager);s.setCrossOrigin(this.crossOrigin),s.setPath(this.path);let a=0;function o(n){s.load(t[n],(function(t){r.images[n]=t,a++,6===a&&(r.needsUpdate=!0,e&&e(r))}),void 0,i)}for(let l=0;l<t.length;++l)o(l);return r}},CubeUVReflectionMapping:F,CubicBezierCurve:La,CubicBezierCurve3:Na,CubicInterpolant:ul,CullFaceBack:1,CullFaceFront:2,CullFaceFrontBack:3,CullFaceNone:0,Curve:wa,CurvePath:Va,CustomBlending:5,CustomToneMapping:5,CylinderGeometry:Xa,Cylindrical:class{constructor(t=1,e=0,n=0){return this.radius=t,this.theta=e,this.y=n,this}set(t,e,n){return this.radius=t,this.theta=e,this.y=n,this}copy(t){return this.radius=t.radius,this.theta=t.theta,this.y=t.y,this}setFromVector3(t){return this.setFromCartesianCoords(t.x,t.y,t.z)}setFromCartesianCoords(t,e,n){return this.radius=Math.sqrt(t*t+n*n),this.theta=Math.atan2(t,n),this.y=e,this}clone(){return(new this.constructor).copy(this)}},Data3DTexture:cn,DataArrayTexture:hn,DataTexture:ms,DataTextureLoader:class extends Al{constructor(t){super(t)}load(t,e,n,i){const r=this,s=new ms,a=new zl(this.manager);return a.setResponseType("arraybuffer"),a.setRequestHeader(this.requestHeader),a.setPath(this.path),a.setWithCredentials(r.withCredentials),a.load(t,(function(t){let n;try{n=r.parse(t)}catch(a){if(void 0===i)return void console.error(a);i(a)}void 0!==n.image?s.image=n.image:void 0!==n.data&&(s.image.width=n.width,s.image.height=n.height,s.image.data=n.data),s.wrapS=void 0!==n.wrapS?n.wrapS:V,s.wrapT=void 0!==n.wrapT?n.wrapT:V,s.magFilter=void 0!==n.magFilter?n.magFilter:X,s.minFilter=void 0!==n.minFilter?n.minFilter:X,s.anisotropy=void 0!==n.anisotropy?n.anisotropy:1,void 0!==n.colorSpace&&(s.colorSpace=n.colorSpace),void 0!==n.flipY&&(s.flipY=n.flipY),void 0!==n.format&&(s.format=n.format),void 0!==n.type&&(s.type=n.type),void 0!==n.mipmaps&&(s.mipmaps=n.mipmaps,s.minFilter=Z),1===n.mipmapCount&&(s.minFilter=X),void 0!==n.generateMipmaps&&(s.generateMipmaps=n.generateMipmaps),s.needsUpdate=!0,e&&e(s,n)}),n,i),s}},DataUtils:Hi,DecrementStencilOp:7683,DecrementWrapStencilOp:34056,DefaultLoadingManager:El,DepthFormat:dt,DepthStencilFormat:mt,DepthTexture:va,DetachedBindMode:L,DirectionalLight:Yl,DirectionalLightHelper:class extends pi{constructor(t,e,n){super(),this.light=t,this.matrix=t.matrixWorld,this.matrixAutoUpdate=!1,this.color=n,this.type="DirectionalLightHelper",void 0===e&&(e=1);let i=new ir;i.setAttribute("position",new Zi([-e,e,0,e,e,0,e,-e,0,-e,-e,0,-e,e,0],3));const r=new Ks({fog:!1,toneMapped:!1});this.lightPlane=new aa(i,r),this.add(this.lightPlane),i=new ir,i.setAttribute("position",new Zi([0,0,0,0,0,1],3)),this.targetLine=new aa(i,r),this.add(this.targetLine),this.update()}dispose(){this.lightPlane.geometry.dispose(),this.lightPlane.material.dispose(),this.targetLine.geometry.dispose(),this.targetLine.material.dispose()}update(){this.light.updateWorldMatrix(!0,!1),this.light.target.updateWorldMatrix(!0,!1),Qh.setFromMatrixPosition(this.light.matrixWorld),tc.setFromMatrixPosition(this.light.target.matrixWorld),ec.subVectors(tc,Qh),this.lightPlane.lookAt(tc),void 0!==this.color?(this.lightPlane.material.color.set(this.color),this.targetLine.material.color.set(this.color)):(this.lightPlane.material.color.copy(this.light.color),this.targetLine.material.color.copy(this.light.color)),this.targetLine.lookAt(tc),this.targetLine.scale.z=ec.length()}},DiscreteInterpolant:ml,DodecahedronGeometry:Ja,DoubleSide:2,DstAlphaFactor:206,DstColorFactor:208,DynamicCopyUsage:35050,DynamicDrawUsage:35048,DynamicReadUsage:35049,EdgesGeometry:eo,EllipseCurve:ba,EqualCompare:514,EqualDepth:4,EqualStencilFunc:514,EquirectangularReflectionMapping:U,EquirectangularRefractionMapping:O,Euler:Kn,EventDispatcher:Me,ExtrudeGeometry:Io,FileLoader:zl,Float16BufferAttribute:class extends ji{constructor(t,e,n){super(new Uint16Array(t),e,n),this.isFloat16BufferAttribute=!0}getX(t){let e=Vi(this.array[t*this.itemSize]);return this.normalized&&(e=Pe(e,this.array)),e}setX(t,e){return this.normalized&&(e=Le(e,this.array)),this.array[t*this.itemSize]=Bi(e),this}getY(t){let e=Vi(this.array[t*this.itemSize+1]);return this.normalized&&(e=Pe(e,this.array)),e}setY(t,e){return this.normalized&&(e=Le(e,this.array)),this.array[t*this.itemSize+1]=Bi(e),this}getZ(t){let e=Vi(this.array[t*this.itemSize+2]);return this.normalized&&(e=Pe(e,this.array)),e}setZ(t,e){return this.normalized&&(e=Le(e,this.array)),this.array[t*this.itemSize+2]=Bi(e),this}getW(t){let e=Vi(this.array[t*this.itemSize+3]);return this.normalized&&(e=Pe(e,this.array)),e}setW(t,e){return this.normalized&&(e=Le(e,this.array)),this.array[t*this.itemSize+3]=Bi(e),this}setXY(t,e,n){return t*=this.itemSize,this.normalized&&(e=Le(e,this.array),n=Le(n,this.array)),this.array[t+0]=Bi(e),this.array[t+1]=Bi(n),this}setXYZ(t,e,n,i){return t*=this.itemSize,this.normalized&&(e=Le(e,this.array),n=Le(n,this.array),i=Le(i,this.array)),this.array[t+0]=Bi(e),this.array[t+1]=Bi(n),this.array[t+2]=Bi(i),this}setXYZW(t,e,n,i,r){return t*=this.itemSize,this.normalized&&(e=Le(e,this.array),n=Le(n,this.array),i=Le(i,this.array),r=Le(r,this.array)),this.array[t+0]=Bi(e),this.array[t+1]=Bi(n),this.array[t+2]=Bi(i),this.array[t+3]=Bi(r),this}},Float32BufferAttribute:Zi,FloatType:nt,Fog:Pr,FogExp2:Ir,FramebufferTexture:class extends sn{constructor(t,e){super({width:t,height:e}),this.isFramebufferTexture=!0,this.magFilter=G,this.minFilter=G,this.generateMipmaps=!1,this.needsUpdate=!0}},FrontSide:0,Frustum:Ps,GLBufferAttribute:class{constructor(t,e,n,i,r){this.isGLBufferAttribute=!0,this.name="",this.buffer=t,this.type=e,this.itemSize=n,this.elementSize=i,this.count=r,this.version=0}set needsUpdate(t){!0===t&&this.version++}setBuffer(t){return this.buffer=t,this}setType(t,e){return this.type=t,this.elementSize=e,this}setItemSize(t){return this.itemSize=t,this}setCount(t){return this.count=t,this}},GLSL1:"100",GLSL3:ve,GreaterCompare:516,GreaterDepth:6,GreaterEqualCompare:518,GreaterEqualDepth:5,GreaterEqualStencilFunc:518,GreaterStencilFunc:516,GridHelper:Kh,Group:_a,HalfFloatType:it,HemisphereLight:Ll,HemisphereLightHelper:class extends pi{constructor(t,e,n){super(),this.light=t,this.matrix=t.matrixWorld,this.matrixAutoUpdate=!1,this.color=n,this.type="HemisphereLightHelper";const i=new No(e);i.rotateY(.5*Math.PI),this.material=new Ui({wireframe:!0,fog:!1,toneMapped:!1}),void 0===this.color&&(this.material.vertexColors=!0);const r=i.getAttribute("position"),s=new Float32Array(3*r.count);i.setAttribute("color",new ji(s,3)),this.add(new pr(i,this.material)),this.update()}dispose(){this.children[0].geometry.dispose(),this.children[0].material.dispose()}update(){const t=this.children[0];if(void 0!==this.color)this.material.color.set(this.color);else{const e=t.geometry.getAttribute("color");Jh.copy(this.light.color),$h.copy(this.light.groundColor);for(let t=0,n=e.count;t<n;t++){const i=t<n/2?Jh:$h;e.setXYZ(t,i.r,i.g,i.b)}e.needsUpdate=!0}this.light.updateWorldMatrix(!0,!1),t.lookAt(Zh.setFromMatrixPosition(this.light.matrixWorld).negate())}},IcosahedronGeometry:Lo,ImageBitmapLoader:class extends Al{constructor(t){super(t),this.isImageBitmapLoader=!0,"undefined"==typeof createImageBitmap&&console.warn("THREE.ImageBitmapLoader: createImageBitmap() not supported."),"undefined"==typeof fetch&&console.warn("THREE.ImageBitmapLoader: fetch() not supported."),this.options={premultiplyAlpha:"none"}}setOptions(t){return this.options=t,this}load(t,e,n,i){void 0===t&&(t=""),void 0!==this.path&&(t=this.path+t),t=this.manager.resolveURL(t);const r=this,s=Sl.get(t);if(void 0!==s)return r.manager.itemStart(t),s.then?void s.then((n=>{e&&e(n),r.manager.itemEnd(t)})).catch((t=>{i&&i(t)})):(setTimeout((function(){e&&e(s),r.manager.itemEnd(t)}),0),s);const a={};a.credentials="anonymous"===this.crossOrigin?"same-origin":"include",a.headers=this.requestHeader;const o=fetch(t,a).then((function(t){return t.blob()})).then((function(t){return createImageBitmap(t,Object.assign(r.options,{colorSpaceConversion:"none"}))})).then((function(n){return Sl.add(t,n),e&&e(n),r.manager.itemEnd(t),n})).catch((function(e){i&&i(e),Sl.remove(t),r.manager.itemError(t),r.manager.itemEnd(t)}));Sl.add(t,o),r.manager.itemStart(t)}},ImageLoader:Il,ImageUtils:Qe,IncrementStencilOp:7682,IncrementWrapStencilOp:34055,InstancedBufferAttribute:xs,InstancedBufferGeometry:eh,InstancedInterleavedBuffer:class extends Nr{constructor(t,e,n=1){super(t,e),this.isInstancedInterleavedBuffer=!0,this.meshPerAttribute=n}copy(t){return super.copy(t),this.meshPerAttribute=t.meshPerAttribute,this}clone(t){const e=super.clone(t);return e.meshPerAttribute=this.meshPerAttribute,e}toJSON(t){const e=super.toJSON(t);return e.isInstancedInterleavedBuffer=!0,e.meshPerAttribute=this.meshPerAttribute,e}},InstancedMesh:Ts,Int16BufferAttribute:class extends ji{constructor(t,e,n){super(new Int16Array(t),e,n)}},Int32BufferAttribute:class extends ji{constructor(t,e,n){super(new Int32Array(t),e,n)}},Int8BufferAttribute:class extends ji{constructor(t,e,n){super(new Int8Array(t),e,n)}},IntType:tt,InterleavedBuffer:Nr,InterleavedBufferAttribute:Ur,Interpolant:ql,InterpolateDiscrete:Kt,InterpolateLinear:Qt,InterpolateSmooth:te,InvertStencilOp:5386,KeepStencilOp:qe,KeyframeTrack:pl,LOD:ns,LatheGeometry:Ga,Layers:Qn,LessCompare:513,LessDepth:2,LessEqualCompare:515,LessEqualDepth:3,LessEqualStencilFunc:515,LessStencilFunc:513,Light:Pl,LightProbe:Kl,Line:aa,Line3:class{constructor(t=new un,e=new un){this.start=t,this.end=e}set(t,e){return this.start.copy(t),this.end.copy(e),this}copy(t){return this.start.copy(t.start),this.end.copy(t.end),this}getCenter(t){return t.addVectors(this.start,this.end).multiplyScalar(.5)}delta(t){return t.subVectors(this.end,this.start)}distanceSq(){return this.start.distanceToSquared(this.end)}distance(){return this.start.distanceTo(this.end)}at(t,e){return this.delta(e).multiplyScalar(t).add(this.start)}closestPointToPointParameter(t,e){Vh.subVectors(t,this.start),Hh.subVectors(this.end,this.start);const n=Hh.dot(Hh);let i=Hh.dot(Vh)/n;return e&&(i=Re(i,0,1)),i}closestPointToPoint(t,e,n){const i=this.closestPointToPointParameter(t,e);return this.delta(n).multiplyScalar(i).add(this.start)}applyMatrix4(t){return this.start.applyMatrix4(t),this.end.applyMatrix4(t),this}equals(t){return t.start.equals(this.start)&&t.end.equals(this.end)}clone(){return(new this.constructor).copy(this)}},LineBasicMaterial:Ks,LineCurve:ka,LineCurve3:Da,LineDashedMaterial:rl,LineLoop:qa,LineSegments:ca,LinearFilter:X,LinearInterpolant:dl,LinearMipMapLinearFilter:1008,LinearMipMapNearestFilter:1007,LinearMipmapLinearFilter:Z,LinearMipmapNearestFilter:Y,LinearSRGBColorSpace:le,LinearToneMapping:1,LinearTransfer:he,Loader:Al,LoaderUtils:th,LoadingManager:Tl,LoopOnce:2200,LoopPingPong:2202,LoopRepeat:2201,LuminanceAlphaFormat:ut,LuminanceFormat:qt,MOUSE:n,Material:Di,MaterialLoader:Ql,MathUtils:Ne,Matrix2:Oh,Matrix3:De,Matrix4:Vn,MaxEquation:104,Mesh:pr,MeshBasicMaterial:Ui,MeshDepthMaterial:el,MeshDistanceMaterial:nl,MeshLambertMaterial:tl,MeshMatcapMaterial:il,MeshNormalMaterial:Qo,MeshPhongMaterial:$o,MeshPhysicalMaterial:Jo,MeshStandardMaterial:Zo,MeshToonMaterial:Ko,MinEquation:103,MirroredRepeatWrapping:H,MixOperation:1,MultiplyBlending:4,MultiplyOperation:0,NearestFilter:G,NearestMipMapLinearFilter:1005,NearestMipMapNearestFilter:1004,NearestMipmapLinearFilter:j,NearestMipmapNearestFilter:W,NeutralToneMapping:7,NeverCompare:512,NeverDepth:0,NeverStencilFunc:512,NoBlending:0,NoColorSpace:ae,NoToneMapping:0,NormalAnimationBlendMode:re,NormalBlending:1,NotEqualCompare:517,NotEqualDepth:7,NotEqualStencilFunc:517,NumberKeyframeTrack:xl,Object3D:pi,ObjectLoader:class extends Al{constructor(t){super(t)}load(t,e,n,i){const r=this,s=""===this.path?th.extractUrlBase(t):this.path;this.resourcePath=this.resourcePath||s;const a=new zl(this.manager);a.setPath(this.path),a.setRequestHeader(this.requestHeader),a.setWithCredentials(this.withCredentials),a.load(t,(function(n){let s=null;try{s=JSON.parse(n)}catch(o){return void 0!==i&&i(o),void console.error("THREE:ObjectLoader: Can't parse "+t+".",o.message)}const a=s.metadata;if(void 0===a||void 0===a.type||"geometry"===a.type.toLowerCase())return void 0!==i&&i(new Error("THREE.ObjectLoader: Can't load "+t)),void console.error("THREE.ObjectLoader: Can't load "+t);r.parse(s,e)}),n,i)}async loadAsync(t,e){const n=""===this.path?th.extractUrlBase(t):this.path;this.resourcePath=this.resourcePath||n;const i=new zl(this.manager);i.setPath(this.path),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials);const r=await i.loadAsync(t,e),s=JSON.parse(r),a=s.metadata;if(void 0===a||void 0===a.type||"geometry"===a.type.toLowerCase())throw new Error("THREE.ObjectLoader: Can't load "+t);return await this.parseAsync(s)}parse(t,e){const n=this.parseAnimations(t.animations),i=this.parseShapes(t.shapes),r=this.parseGeometries(t.geometries,i),s=this.parseImages(t.images,(function(){void 0!==e&&e(l)})),a=this.parseTextures(t.textures,s),o=this.parseMaterials(t.materials,a),l=this.parseObject(t.object,r,o,a,n),h=this.parseSkeletons(t.skeletons,l);if(this.bindSkeletons(l,h),this.bindLightTargets(l),void 0!==e){let t=!1;for(const e in s)if(s[e].data instanceof HTMLImageElement){t=!0;break}!1===t&&e(l)}return l}async parseAsync(t){const e=this.parseAnimations(t.animations),n=this.parseShapes(t.shapes),i=this.parseGeometries(t.geometries,n),r=await this.parseImagesAsync(t.images),s=this.parseTextures(t.textures,r),a=this.parseMaterials(t.materials,s),o=this.parseObject(t.object,i,a,s,e),l=this.parseSkeletons(t.skeletons,o);return this.bindSkeletons(o,l),this.bindLightTargets(o),o}parseShapes(t){const e={};if(void 0!==t)for(let n=0,i=t.length;n<i;n++){const i=(new no).fromJSON(t[n]);e[i.uuid]=i}return e}parseSkeletons(t,e){const n={},i={};if(e.traverse((function(t){t.isBone&&(i[t.uuid]=t)})),void 0!==t)for(let r=0,s=t.length;r<s;r++){const e=(new gs).fromJSON(t[r],i);n[e.uuid]=e}return n}parseGeometries(t,e){const n={};if(void 0!==t){const i=new nh;for(let r=0,s=t.length;r<s;r++){let s;const a=t[r];switch(a.type){case"BufferGeometry":case"InstancedBufferGeometry":s=i.parse(a);break;default:a.type in jo?s=jo[a.type].fromJSON(a,e):console.warn(`THREE.ObjectLoader: Unsupported geometry type "${a.type}"`)}s.uuid=a.uuid,void 0!==a.name&&(s.name=a.name),void 0!==a.userData&&(s.userData=a.userData),n[a.uuid]=s}}return n}parseMaterials(t,e){const n={},i={};if(void 0!==t){const r=new Ql;r.setTextures(e);for(let e=0,s=t.length;e<s;e++){const s=t[e];void 0===n[s.uuid]&&(n[s.uuid]=r.parse(s)),i[s.uuid]=n[s.uuid]}}return i}parseAnimations(t){const e={};if(void 0!==t)for(let n=0;n<t.length;n++){const i=t[n],r=bl.parse(i);e[r.uuid]=r}return e}parseImages(t,e){const n=this,i={};let r;function s(t){if("string"==typeof t){const e=t;return function(t){return n.manager.itemStart(t),r.load(t,(function(){n.manager.itemEnd(t)}),void 0,(function(){n.manager.itemError(t),n.manager.itemEnd(t)}))}(/^(\/\/)|([a-z]+:(\/\/)?)/i.test(e)?e:n.resourcePath+e)}return t.data?{data:Be(t.type,t.data),width:t.width,height:t.height}:null}if(void 0!==t&&t.length>0){const n=new Tl(e);r=new Il(n),r.setCrossOrigin(this.crossOrigin);for(let e=0,r=t.length;e<r;e++){const n=t[e],r=n.url;if(Array.isArray(r)){const t=[];for(let e=0,n=r.length;e<n;e++){const n=s(r[e]);null!==n&&(n instanceof HTMLImageElement?t.push(n):t.push(new ms(n.data,n.width,n.height)))}i[n.uuid]=new en(t)}else{const t=s(n.url);i[n.uuid]=new en(t)}}}return i}async parseImagesAsync(t){const e=this,n={};let i;async function r(t){if("string"==typeof t){const n=t,r=/^(\/\/)|([a-z]+:(\/\/)?)/i.test(n)?n:e.resourcePath+n;return await i.loadAsync(r)}return t.data?{data:Be(t.type,t.data),width:t.width,height:t.height}:null}if(void 0!==t&&t.length>0){i=new Il(this.manager),i.setCrossOrigin(this.crossOrigin);for(let e=0,i=t.length;e<i;e++){const i=t[e],s=i.url;if(Array.isArray(s)){const t=[];for(let e=0,n=s.length;e<n;e++){const n=s[e],i=await r(n);null!==i&&(i instanceof HTMLImageElement?t.push(i):t.push(new ms(i.data,i.width,i.height)))}n[i.uuid]=new en(t)}else{const t=await r(i.url);n[i.uuid]=new en(t)}}}return n}parseTextures(t,e){function n(t,e){return"number"==typeof t?t:(console.warn("THREE.ObjectLoader.parseTexture: Constant should be in numeric form.",t),e[t])}const i={};if(void 0!==t)for(let r=0,s=t.length;r<s;r++){const s=t[r];void 0===s.image&&console.warn('THREE.ObjectLoader: No "image" specified for',s.uuid),void 0===e[s.image]&&console.warn("THREE.ObjectLoader: Undefined image",s.image);const a=e[s.image],o=a.data;let l;Array.isArray(o)?(l=new Rr,6===o.length&&(l.needsUpdate=!0)):(l=o&&o.data?new ms:new sn,o&&(l.needsUpdate=!0)),l.source=a,l.uuid=s.uuid,void 0!==s.name&&(l.name=s.name),void 0!==s.mapping&&(l.mapping=n(s.mapping,ih)),void 0!==s.channel&&(l.channel=s.channel),void 0!==s.offset&&l.offset.fromArray(s.offset),void 0!==s.repeat&&l.repeat.fromArray(s.repeat),void 0!==s.center&&l.center.fromArray(s.center),void 0!==s.rotation&&(l.rotation=s.rotation),void 0!==s.wrap&&(l.wrapS=n(s.wrap[0],rh),l.wrapT=n(s.wrap[1],rh)),void 0!==s.format&&(l.format=s.format),void 0!==s.internalFormat&&(l.internalFormat=s.internalFormat),void 0!==s.type&&(l.type=s.type),void 0!==s.colorSpace&&(l.colorSpace=s.colorSpace),void 0!==s.minFilter&&(l.minFilter=n(s.minFilter,sh)),void 0!==s.magFilter&&(l.magFilter=n(s.magFilter,sh)),void 0!==s.anisotropy&&(l.anisotropy=s.anisotropy),void 0!==s.flipY&&(l.flipY=s.flipY),void 0!==s.generateMipmaps&&(l.generateMipmaps=s.generateMipmaps),void 0!==s.premultiplyAlpha&&(l.premultiplyAlpha=s.premultiplyAlpha),void 0!==s.unpackAlignment&&(l.unpackAlignment=s.unpackAlignment),void 0!==s.compareFunction&&(l.compareFunction=s.compareFunction),void 0!==s.userData&&(l.userData=s.userData),i[s.uuid]=l}return i}parseObject(t,e,n,i,r){let s,a,o;function l(t){return void 0===e[t]&&console.warn("THREE.ObjectLoader: Undefined geometry",t),e[t]}function h(t){if(void 0!==t){if(Array.isArray(t)){const e=[];for(let i=0,r=t.length;i<r;i++){const r=t[i];void 0===n[r]&&console.warn("THREE.ObjectLoader: Undefined material",r),e.push(n[r])}return e}return void 0===n[t]&&console.warn("THREE.ObjectLoader: Undefined material",t),n[t]}}function c(t){return void 0===i[t]&&console.warn("THREE.ObjectLoader: Undefined texture",t),i[t]}switch(t.type){case"Scene":s=new Lr,void 0!==t.background&&(Number.isInteger(t.background)?s.background=new Li(t.background):s.background=c(t.background)),void 0!==t.environment&&(s.environment=c(t.environment)),void 0!==t.fog&&("Fog"===t.fog.type?s.fog=new Pr(t.fog.color,t.fog.near,t.fog.far):"FogExp2"===t.fog.type&&(s.fog=new Ir(t.fog.color,t.fog.density)),""!==t.fog.name&&(s.fog.name=t.fog.name)),void 0!==t.backgroundBlurriness&&(s.backgroundBlurriness=t.backgroundBlurriness),void 0!==t.backgroundIntensity&&(s.backgroundIntensity=t.backgroundIntensity),void 0!==t.backgroundRotation&&s.backgroundRotation.fromArray(t.backgroundRotation),void 0!==t.environmentIntensity&&(s.environmentIntensity=t.environmentIntensity),void 0!==t.environmentRotation&&s.environmentRotation.fromArray(t.environmentRotation);break;case"PerspectiveCamera":s=new Er(t.fov,t.aspect,t.near,t.far),void 0!==t.focus&&(s.focus=t.focus),void 0!==t.zoom&&(s.zoom=t.zoom),void 0!==t.filmGauge&&(s.filmGauge=t.filmGauge),void 0!==t.filmOffset&&(s.filmOffset=t.filmOffset),void 0!==t.view&&(s.view=Object.assign({},t.view));break;case"OrthographicCamera":s=new jl(t.left,t.right,t.top,t.bottom,t.near,t.far),void 0!==t.zoom&&(s.zoom=t.zoom),void 0!==t.view&&(s.view=Object.assign({},t.view));break;case"AmbientLight":s=new Zl(t.color,t.intensity);break;case"DirectionalLight":s=new Yl(t.color,t.intensity),s.target=t.target||"";break;case"PointLight":s=new Wl(t.color,t.intensity,t.distance,t.decay);break;case"RectAreaLight":s=new Jl(t.color,t.intensity,t.width,t.height);break;case"SpotLight":s=new Fl(t.color,t.intensity,t.distance,t.angle,t.penumbra,t.decay),s.target=t.target||"";break;case"HemisphereLight":s=new Ll(t.color,t.groundColor,t.intensity);break;case"LightProbe":s=(new Kl).fromJSON(t);break;case"SkinnedMesh":a=l(t.geometry),o=h(t.material),s=new us(a,o),void 0!==t.bindMode&&(s.bindMode=t.bindMode),void 0!==t.bindMatrix&&s.bindMatrix.fromArray(t.bindMatrix),void 0!==t.skeleton&&(s.skeleton=t.skeleton);break;case"Mesh":a=l(t.geometry),o=h(t.material),s=new pr(a,o);break;case"InstancedMesh":a=l(t.geometry),o=h(t.material);const e=t.count,n=t.instanceMatrix,i=t.instanceColor;s=new Ts(a,o,e),s.instanceMatrix=new xs(new Float32Array(n.array),16),void 0!==i&&(s.instanceColor=new xs(new Float32Array(i.array),i.itemSize));break;case"BatchedMesh":a=l(t.geometry),o=h(t.material),s=new $s(t.maxInstanceCount,t.maxVertexCount,t.maxIndexCount,o),s.geometry=a,s.perObjectFrustumCulled=t.perObjectFrustumCulled,s.sortObjects=t.sortObjects,s._drawRanges=t.drawRanges,s._reservedRanges=t.reservedRanges,s._visibility=t.visibility,s._active=t.active,s._bounds=t.bounds.map((t=>{const e=new pn;e.min.fromArray(t.boxMin),e.max.fromArray(t.boxMax);const n=new Pn;return n.radius=t.sphereRadius,n.center.fromArray(t.sphereCenter),{boxInitialized:t.boxInitialized,box:e,sphereInitialized:t.sphereInitialized,sphere:n}})),s._maxInstanceCount=t.maxInstanceCount,s._maxVertexCount=t.maxVertexCount,s._maxIndexCount=t.maxIndexCount,s._geometryInitialized=t.geometryInitialized,s._geometryCount=t.geometryCount,s._matricesTexture=c(t.matricesTexture.uuid),void 0!==t.colorsTexture&&(s._colorsTexture=c(t.colorsTexture.uuid));break;case"LOD":s=new ns;break;case"Line":s=new aa(l(t.geometry),h(t.material));break;case"LineLoop":s=new qa(l(t.geometry),h(t.material));break;case"LineSegments":s=new ca(l(t.geometry),h(t.material));break;case"PointCloud":case"Points":s=new ga(l(t.geometry),h(t.material));break;case"Sprite":s=new Kr(h(t.material));break;case"Group":s=new _a;break;case"Bone":s=new ds;break;default:s=new pi}if(s.uuid=t.uuid,void 0!==t.name&&(s.name=t.name),void 0!==t.matrix?(s.matrix.fromArray(t.matrix),void 0!==t.matrixAutoUpdate&&(s.matrixAutoUpdate=t.matrixAutoUpdate),s.matrixAutoUpdate&&s.matrix.decompose(s.position,s.quaternion,s.scale)):(void 0!==t.position&&s.position.fromArray(t.position),void 0!==t.rotation&&s.rotation.fromArray(t.rotation),void 0!==t.quaternion&&s.quaternion.fromArray(t.quaternion),void 0!==t.scale&&s.scale.fromArray(t.scale)),void 0!==t.up&&s.up.fromArray(t.up),void 0!==t.castShadow&&(s.castShadow=t.castShadow),void 0!==t.receiveShadow&&(s.receiveShadow=t.receiveShadow),t.shadow&&(void 0!==t.shadow.intensity&&(s.shadow.intensity=t.shadow.intensity),void 0!==t.shadow.bias&&(s.shadow.bias=t.shadow.bias),void 0!==t.shadow.normalBias&&(s.shadow.normalBias=t.shadow.normalBias),void 0!==t.shadow.radius&&(s.shadow.radius=t.shadow.radius),void 0!==t.shadow.mapSize&&s.shadow.mapSize.fromArray(t.shadow.mapSize),void 0!==t.shadow.camera&&(s.shadow.camera=this.parseObject(t.shadow.camera))),void 0!==t.visible&&(s.visible=t.visible),void 0!==t.frustumCulled&&(s.frustumCulled=t.frustumCulled),void 0!==t.renderOrder&&(s.renderOrder=t.renderOrder),void 0!==t.userData&&(s.userData=t.userData),void 0!==t.layers&&(s.layers.mask=t.layers),void 0!==t.children){const a=t.children;for(let t=0;t<a.length;t++)s.add(this.parseObject(a[t],e,n,i,r))}if(void 0!==t.animations){const e=t.animations;for(let t=0;t<e.length;t++){const n=e[t];s.animations.push(r[n])}}if("LOD"===t.type){void 0!==t.autoUpdate&&(s.autoUpdate=t.autoUpdate);const e=t.levels;for(let t=0;t<e.length;t++){const n=e[t],i=s.getObjectByProperty("uuid",n.object);void 0!==i&&s.addLevel(i,n.distance,n.hysteresis)}}return s}bindSkeletons(t,e){0!==Object.keys(e).length&&t.traverse((function(t){if(!0===t.isSkinnedMesh&&void 0!==t.skeleton){const n=e[t.skeleton];void 0===n?console.warn("THREE.ObjectLoader: No skeleton found with UUID:",t.skeleton):t.bind(n,t.bindMatrix)}}))}bindLightTargets(t){t.traverse((function(e){if(e.isDirectionalLight||e.isSpotLight){const n=e.target,i=t.getObjectByProperty("uuid",n);e.target=void 0!==i?i:new pi}}))}},ObjectSpaceNormalMap:1,OctahedronGeometry:No,OneFactor:201,OneMinusConstantAlphaFactor:214,OneMinusConstantColorFactor:212,OneMinusDstAlphaFactor:207,OneMinusDstColorFactor:209,OneMinusSrcAlphaFactor:p,OneMinusSrcColorFactor:203,OrthographicCamera:jl,PCFShadowMap:1,PCFSoftShadowMap:2,PMREMGenerator:Fc,Path:Ha,PerspectiveCamera:Er,Plane:Rs,PlaneGeometry:ko,PlaneHelper:class extends aa{constructor(t,e=1,n=16776960){const i=n,r=new ir;r.setAttribute("position",new Zi([1,-1,0,-1,1,0,-1,-1,0,1,1,0,-1,1,0,-1,-1,0,1,-1,0,1,1,0],3)),r.computeBoundingSphere(),super(r,new Ks({color:i,toneMapped:!1})),this.type="PlaneHelper",this.plane=t,this.size=e;const s=new ir;s.setAttribute("position",new Zi([1,1,0,-1,1,0,-1,-1,0,1,1,0,-1,-1,0,1,-1,0],3)),s.computeBoundingSphere(),this.add(new pr(s,new Ui({color:i,opacity:.2,transparent:!0,depthWrite:!1,toneMapped:!1})))}updateMatrixWorld(t){this.position.set(0,0,0),this.scale.set(.5*this.size,.5*this.size,1),this.lookAt(this.plane.normal),this.translateZ(-this.plane.constant),super.updateMatrixWorld(t)}dispose(){this.geometry.dispose(),this.material.dispose(),this.children[0].geometry.dispose(),this.children[0].material.dispose()}},PointLight:Wl,PointLightHelper:class extends pr{constructor(t,e,n){super(new Oo(e,4,2),new Ui({wireframe:!0,fog:!1,toneMapped:!1})),this.light=t,this.color=n,this.type="PointLightHelper",this.matrix=this.light.matrixWorld,this.matrixAutoUpdate=!1,this.update()}dispose(){this.geometry.dispose(),this.material.dispose()}update(){this.light.updateWorldMatrix(!0,!1),void 0!==this.color?this.material.color.set(this.color):this.material.color.copy(this.light.color)}},Points:ga,PointsMaterial:ua,PolarGridHelper:class extends ca{constructor(t=10,e=16,n=8,i=64,r=4473924,s=8947848){r=new Li(r),s=new Li(s);const a=[],o=[];if(e>1)for(let h=0;h<e;h++){const n=h/e*(2*Math.PI),i=Math.sin(n)*t,l=Math.cos(n)*t;a.push(0,0,0),a.push(i,0,l);const c=1&h?r:s;o.push(c.r,c.g,c.b),o.push(c.r,c.g,c.b)}for(let h=0;h<n;h++){const e=1&h?r:s,l=t-t/n*h;for(let t=0;t<i;t++){let n=t/i*(2*Math.PI),r=Math.sin(n)*l,s=Math.cos(n)*l;a.push(r,0,s),o.push(e.r,e.g,e.b),n=(t+1)/i*(2*Math.PI),r=Math.sin(n)*l,s=Math.cos(n)*l,a.push(r,0,s),o.push(e.r,e.g,e.b)}}const l=new ir;l.setAttribute("position",new Zi(a,3)),l.setAttribute("color",new Zi(o,3));super(l,new Ks({vertexColors:!0,toneMapped:!1})),this.type="PolarGridHelper"}dispose(){this.geometry.dispose(),this.material.dispose()}},PolyhedronGeometry:Za,PositionalAudio:class extends xh{constructor(t){super(t),this.panner=this.context.createPanner(),this.panner.panningModel="HRTF",this.panner.connect(this.gain)}connect(){super.connect(),this.panner.connect(this.gain)}disconnect(){super.disconnect(),this.panner.disconnect(this.gain)}getOutput(){return this.panner}getRefDistance(){return this.panner.refDistance}setRefDistance(t){return this.panner.refDistance=t,this}getRolloffFactor(){return this.panner.rolloffFactor}setRolloffFactor(t){return this.panner.rolloffFactor=t,this}getDistanceModel(){return this.panner.distanceModel}setDistanceModel(t){return this.panner.distanceModel=t,this}getMaxDistance(){return this.panner.maxDistance}setMaxDistance(t){return this.panner.maxDistance=t,this}setDirectionalCone(t,e,n){return this.panner.coneInnerAngle=t,this.panner.coneOuterAngle=e,this.panner.coneOuterGain=n,this}updateMatrixWorld(t){if(super.updateMatrixWorld(t),!0===this.hasPlaybackControl&&!1===this.isPlaying)return;this.matrixWorld.decompose(_h,yh,vh),wh.set(0,0,1).applyQuaternion(yh);const e=this.panner;if(e.positionX){const t=this.context.currentTime+this.listener.timeDelta;e.positionX.linearRampToValueAtTime(_h.x,t),e.positionY.linearRampToValueAtTime(_h.y,t),e.positionZ.linearRampToValueAtTime(_h.z,t),e.orientationX.linearRampToValueAtTime(wh.x,t),e.orientationY.linearRampToValueAtTime(wh.y,t),e.orientationZ.linearRampToValueAtTime(wh.z,t)}else e.setPosition(_h.x,_h.y,_h.z),e.setOrientation(wh.x,wh.y,wh.z)}},PropertyBinding:Rh,PropertyMixer:bh,QuadraticBezierCurve:Ua,QuadraticBezierCurve3:Oa,Quaternion:qn,QuaternionKeyframeTrack:yl,QuaternionLinearInterpolant:_l,RED_GREEN_RGTC2_Format:Jt,RED_RGTC1_Format:Yt,REVISION:e,RGBADepthPacking:3201,RGBAFormat:ct,RGBAIntegerFormat:_t,RGBA_ASTC_10x10_Format:Vt,RGBA_ASTC_10x5_Format:Ot,RGBA_ASTC_10x6_Format:Ft,RGBA_ASTC_10x8_Format:Bt,RGBA_ASTC_12x10_Format:Ht,RGBA_ASTC_12x12_Format:Gt,RGBA_ASTC_4x4_Format:zt,RGBA_ASTC_5x4_Format:It,RGBA_ASTC_5x5_Format:Pt,RGBA_ASTC_6x5_Format:Lt,RGBA_ASTC_6x6_Format:Nt,RGBA_ASTC_8x5_Format:kt,RGBA_ASTC_8x6_Format:Dt,RGBA_ASTC_8x8_Format:Ut,RGBA_BPTC_Format:Wt,RGBA_ETC2_EAC_Format:Rt,RGBA_PVRTC_2BPPV1_Format:Et,RGBA_PVRTC_4BPPV1_Format:Tt,RGBA_S3TC_DXT1_Format:vt,RGBA_S3TC_DXT3_Format:wt,RGBA_S3TC_DXT5_Format:bt,RGBDepthPacking:3202,RGBFormat:ht,RGBIntegerFormat:1032,RGB_BPTC_SIGNED_Format:jt,RGB_BPTC_UNSIGNED_Format:Xt,RGB_ETC1_Format:At,RGB_ETC2_Format:Ct,RGB_PVRTC_2BPPV1_Format:St,RGB_PVRTC_4BPPV1_Format:Mt,RGB_S3TC_DXT1_Format:yt,RGDepthPacking:3203,RGFormat:gt,RGIntegerFormat:xt,RawShaderMaterial:Yo,Ray:Bn,Raycaster:class{constructor(t,e,n=0,i=1/0){this.ray=new Bn(t,e),this.near=n,this.far=i,this.camera=null,this.layers=new Qn,this.params={Mesh:{},Line:{threshold:1},LOD:{},Points:{threshold:1},Sprite:{}}}set(t,e){this.ray.set(t,e)}setFromCamera(t,e){e.isPerspectiveCamera?(this.ray.origin.setFromMatrixPosition(e.matrixWorld),this.ray.direction.set(t.x,t.y,.5).unproject(e).sub(this.ray.origin).normalize(),this.camera=e):e.isOrthographicCamera?(this.ray.origin.set(t.x,t.y,(e.near+e.far)/(e.near-e.far)).unproject(e),this.ray.direction.set(0,0,-1).transformDirection(e.matrixWorld),this.camera=e):console.error("THREE.Raycaster: Unsupported camera type: "+e.type)}setFromXRController(t){return Nh.identity().extractRotation(t.matrixWorld),this.ray.origin.setFromMatrixPosition(t.matrixWorld),this.ray.direction.set(0,0,-1).applyMatrix4(Nh),this}intersectObject(t,e=!0,n=[]){return Dh(t,this,n,e),n.sort(kh),n}intersectObjects(t,e=!0,n=[]){for(let i=0,r=t.length;i<r;i++)Dh(t[i],this,n,e);return n.sort(kh),n}},RectAreaLight:Jl,RedFormat:pt,RedIntegerFormat:ft,ReinhardToneMapping:2,RenderTarget:on,RenderTarget3D:class extends on{constructor(t=1,e=1,n=1,i={}){super(t,e,i),this.isRenderTarget3D=!0,this.depth=n,this.texture=new cn(null,t,e,n),this.texture.isRenderTargetTexture=!0}},RenderTargetArray:class extends on{constructor(t=1,e=1,n=1,i={}){super(t,e,i),this.isRenderTargetArray=!0,this.depth=n,this.texture=new hn(null,t,e,n),this.texture.isRenderTargetTexture=!0}},RepeatWrapping:B,ReplaceStencilOp:7681,ReverseSubtractEquation:102,RingGeometry:Do,SIGNED_RED_GREEN_RGTC2_Format:$t,SIGNED_RED_RGTC1_Format:Zt,SRGBColorSpace:oe,SRGBTransfer:ce,Scene:Lr,ShaderChunk:gc,ShaderLib:_c,ShaderMaterial:wr,ShadowMaterial:Xo,Shape:no,ShapeGeometry:Uo,ShapePath:qc,ShapeUtils:Co,ShortType:K,Skeleton:gs,SkeletonHelper:class extends ca{constructor(t){const e=Yh(t),n=new ir,i=[],r=[],s=new Li(0,0,1),a=new Li(0,1,0);for(let o=0;o<e.length;o++){const t=e[o];t.parent&&t.parent.isBone&&(i.push(0,0,0),i.push(0,0,0),r.push(s.r,s.g,s.b),r.push(a.r,a.g,a.b))}n.setAttribute("position",new Zi(i,3)),n.setAttribute("color",new Zi(r,3));super(n,new Ks({vertexColors:!0,depthTest:!1,depthWrite:!1,toneMapped:!1,transparent:!0})),this.isSkeletonHelper=!0,this.type="SkeletonHelper",this.root=t,this.bones=e,this.matrix=t.matrixWorld,this.matrixAutoUpdate=!1}updateMatrixWorld(t){const e=this.bones,n=this.geometry,i=n.getAttribute("position");Xh.copy(this.root.matrixWorld).invert();for(let r=0,s=0;r<e.length;r++){const t=e[r];t.parent&&t.parent.isBone&&(jh.multiplyMatrices(Xh,t.matrixWorld),Wh.setFromMatrixPosition(jh),i.setXYZ(s,Wh.x,Wh.y,Wh.z),jh.multiplyMatrices(Xh,t.parent.matrixWorld),Wh.setFromMatrixPosition(jh),i.setXYZ(s+1,Wh.x,Wh.y,Wh.z),s+=2)}n.getAttribute("position").needsUpdate=!0,super.updateMatrixWorld(t)}dispose(){this.geometry.dispose(),this.material.dispose()}},SkinnedMesh:us,Source:en,Sphere:Pn,SphereGeometry:Oo,Spherical:Uh,SphericalHarmonics3:$l,SplineCurve:Fa,SpotLight:Fl,SpotLightHelper:class extends pi{constructor(t,e){super(),this.light=t,this.matrixAutoUpdate=!1,this.color=e,this.type="SpotLightHelper";const n=new ir,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];for(let s=0,a=1,o=32;s<o;s++,a++){const t=s/o*Math.PI*2,e=a/o*Math.PI*2;i.push(Math.cos(t),Math.sin(t),1,Math.cos(e),Math.sin(e),1)}n.setAttribute("position",new Zi(i,3));const r=new Ks({fog:!1,toneMapped:!1});this.cone=new ca(n,r),this.add(this.cone),this.update()}dispose(){this.cone.geometry.dispose(),this.cone.material.dispose()}update(){this.light.updateWorldMatrix(!0,!1),this.light.target.updateWorldMatrix(!0,!1),this.parent?(this.parent.updateWorldMatrix(!0),this.matrix.copy(this.parent.matrixWorld).invert().multiply(this.light.matrixWorld)):this.matrix.copy(this.light.matrixWorld),this.matrixWorld.copy(this.light.matrixWorld);const t=this.light.distance?this.light.distance:1e3,e=t*Math.tan(this.light.angle);this.cone.scale.set(e,e,t),Gh.setFromMatrixPosition(this.light.target.matrixWorld),this.cone.lookAt(Gh),void 0!==this.color?this.cone.material.color.set(this.color):this.cone.material.color.copy(this.light.color)}},Sprite:Kr,SpriteMaterial:Or,SrcAlphaFactor:m,SrcAlphaSaturateFactor:210,SrcColorFactor:202,StaticCopyUsage:35046,StaticDrawUsage:ye,StaticReadUsage:35045,StereoCamera:class{constructor(){this.type="StereoCamera",this.aspect=1,this.eyeSep=.064,this.cameraL=new Er,this.cameraL.layers.enable(1),this.cameraL.matrixAutoUpdate=!1,this.cameraR=new Er,this.cameraR.layers.enable(2),this.cameraR.matrixAutoUpdate=!1,this._cache={focus:null,fov:null,aspect:null,near:null,far:null,zoom:null,eyeSep:null}}update(t){const e=this._cache;if(e.focus!==t.focus||e.fov!==t.fov||e.aspect!==t.aspect*this.aspect||e.near!==t.near||e.far!==t.far||e.zoom!==t.zoom||e.eyeSep!==this.eyeSep){e.focus=t.focus,e.fov=t.fov,e.aspect=t.aspect*this.aspect,e.near=t.near,e.far=t.far,e.zoom=t.zoom,e.eyeSep=this.eyeSep,ch.copy(t.projectionMatrix);const n=e.eyeSep/2,i=n*e.near/e.focus,r=e.near*Math.tan(Ee*e.fov*.5)/e.zoom;let s,a;hh.elements[12]=-n,lh.elements[12]=n,s=-r*e.aspect+i,a=r*e.aspect+i,ch.elements[0]=2*e.near/(a-s),ch.elements[8]=(a+s)/(a-s),this.cameraL.projectionMatrix.copy(ch),s=-r*e.aspect-i,a=r*e.aspect-i,ch.elements[0]=2*e.near/(a-s),ch.elements[8]=(a+s)/(a-s),this.cameraR.projectionMatrix.copy(ch)}this.cameraL.matrixWorld.copy(t.matrixWorld).multiply(hh),this.cameraR.matrixWorld.copy(t.matrixWorld).multiply(lh)}},StreamCopyUsage:35042,StreamDrawUsage:35040,StreamReadUsage:35041,StringKeyframeTrack:vl,SubtractEquation:101,SubtractiveBlending:3,TOUCH:i,TangentSpaceNormalMap:0,TetrahedronGeometry:Fo,Texture:sn,TextureLoader:class extends Al{constructor(t){super(t)}load(t,e,n,i){const r=new sn,s=new Il(this.manager);return s.setCrossOrigin(this.crossOrigin),s.setPath(this.path),s.load(t,(function(t){r.image=t,r.needsUpdate=!0,void 0!==e&&e(r)}),n,i),r}},TextureUtils:mc,TorusGeometry:Bo,TorusKnotGeometry:Vo,Triangle:Ci,TriangleFanDrawMode:2,TriangleStripDrawMode:1,TrianglesDrawMode:0,TubeGeometry:Ho,UVMapping:N,Uint16BufferAttribute:Xi,Uint32BufferAttribute:Yi,Uint8BufferAttribute:class extends ji{constructor(t,e,n){super(new Uint8Array(t),e,n)}},Uint8ClampedBufferAttribute:class extends ji{constructor(t,e,n){super(new Uint8ClampedArray(t),e,n)}},Uniform:Ph,UniformsGroup:class extends Me{constructor(){super(),this.isUniformsGroup=!0,Object.defineProperty(this,"id",{value:Lh++}),this.name="",this.usage=ye,this.uniforms=[]}add(t){return this.uniforms.push(t),this}remove(t){const e=this.uniforms.indexOf(t);return-1!==e&&this.uniforms.splice(e,1),this}setName(t){return this.name=t,this}setUsage(t){return this.usage=t,this}dispose(){return this.dispatchEvent({type:"dispose"}),this}copy(t){this.name=t.name,this.usage=t.usage;const e=t.uniforms;this.uniforms.length=0;for(let n=0,i=e.length;n<i;n++){const t=Array.isArray(e[n])?e[n]:[e[n]];for(let e=0;e<t.length;e++)this.uniforms.push(t[e].clone())}return this}clone(){return(new this.constructor).copy(this)}},UniformsLib:xc,UniformsUtils:vr,UnsignedByteType:J,UnsignedInt248Type:at,UnsignedInt5999Type:ot,UnsignedIntType:et,UnsignedShort4444Type:rt,UnsignedShort5551Type:st,UnsignedShortType:Q,VSMShadowMap:3,Vector2:ke,Vector3:un,Vector4:an,VectorKeyframeTrack:wl,VideoTexture:class extends sn{constructor(t,e,n,i,r,s,a,o,l){super(t,e,n,i,r,s,a,o,l),this.isVideoTexture=!0,this.minFilter=void 0!==s?s:X,this.magFilter=void 0!==r?r:X,this.generateMipmaps=!1;const h=this;"requestVideoFrameCallback"in t&&t.requestVideoFrameCallback((function e(){h.needsUpdate=!0,t.requestVideoFrameCallback(e)}))}clone(){return new this.constructor(this.image).copy(this)}update(){const t=this.image;!1==="requestVideoFrameCallback"in t&&t.readyState>=t.HAVE_CURRENT_DATA&&(this.needsUpdate=!0)}},WebGL3DRenderTarget:class extends ln{constructor(t=1,e=1,n=1,i={}){super(t,e,i),this.isWebGL3DRenderTarget=!0,this.depth=n,this.texture=new cn(null,t,e,n),this.texture.isRenderTargetTexture=!0}},WebGLArrayRenderTarget:class extends ln{constructor(t=1,e=1,n=1,i={}){super(t,e,i),this.isWebGLArrayRenderTarget=!0,this.depth=n,this.texture=new hn(null,t,e,n),this.texture.isRenderTargetTexture=!0}},WebGLCoordinateSystem:we,WebGLCubeRenderTarget:zr,WebGLRenderTarget:ln,WebGLRenderer:Ku,WebGLUtils:Hu,WebGPUCoordinateSystem:be,WireframeGeometry:Go,WrapAroundEnding:ie,ZeroCurvatureEnding:ee,ZeroFactor:200,ZeroSlopeEnding:ne,ZeroStencilOp:0,createCanvasElement:He},Symbol.toStringTag,{value:"Module"}));var td=Object.freeze({Linear:Object.freeze({None:function(t){return t},In:function(t){return t},Out:function(t){return t},InOut:function(t){return t}}),Quadratic:Object.freeze({In:function(t){return t*t},Out:function(t){return t*(2-t)},InOut:function(t){return(t*=2)<1?.5*t*t:-.5*(--t*(t-2)-1)}}),Cubic:Object.freeze({In:function(t){return t*t*t},Out:function(t){return--t*t*t+1},InOut:function(t){return(t*=2)<1?.5*t*t*t:.5*((t-=2)*t*t+2)}}),Quartic:Object.freeze({In:function(t){return t*t*t*t},Out:function(t){return 1- --t*t*t*t},InOut:function(t){return(t*=2)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2)}}),Quintic:Object.freeze({In:function(t){return t*t*t*t*t},Out:function(t){return--t*t*t*t*t+1},InOut:function(t){return(t*=2)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2)}}),Sinusoidal:Object.freeze({In:function(t){return 1-Math.sin((1-t)*Math.PI/2)},Out:function(t){return Math.sin(t*Math.PI/2)},InOut:function(t){return.5*(1-Math.sin(Math.PI*(.5-t)))}}),Exponential:Object.freeze({In:function(t){return 0===t?0:Math.pow(1024,t-1)},Out:function(t){return 1===t?1:1-Math.pow(2,-10*t)},InOut:function(t){return 0===t?0:1===t?1:(t*=2)<1?.5*Math.pow(1024,t-1):.5*(2-Math.pow(2,-10*(t-1)))}}),Circular:Object.freeze({In:function(t){return 1-Math.sqrt(1-t*t)},Out:function(t){return Math.sqrt(1- --t*t)},InOut:function(t){return(t*=2)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)}}),Elastic:Object.freeze({In:function(t){return 0===t?0:1===t?1:-Math.pow(2,10*(t-1))*Math.sin(5*(t-1.1)*Math.PI)},Out:function(t){return 0===t?0:1===t?1:Math.pow(2,-10*t)*Math.sin(5*(t-.1)*Math.PI)+1},InOut:function(t){return 0===t?0:1===t?1:(t*=2)<1?-.5*Math.pow(2,10*(t-1))*Math.sin(5*(t-1.1)*Math.PI):.5*Math.pow(2,-10*(t-1))*Math.sin(5*(t-1.1)*Math.PI)+1}}),Back:Object.freeze({In:function(t){var e=1.70158;return 1===t?1:t*t*((e+1)*t-e)},Out:function(t){var e=1.70158;return 0===t?0:--t*t*((e+1)*t+e)+1},InOut:function(t){var e=2.5949095;return(t*=2)<1?t*t*((e+1)*t-e)*.5:.5*((t-=2)*t*((e+1)*t+e)+2)}}),Bounce:Object.freeze({In:function(t){return 1-td.Bounce.Out(1-t)},Out:function(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375},InOut:function(t){return t<.5?.5*td.Bounce.In(2*t):.5*td.Bounce.Out(2*t-1)+.5}}),generatePow:function(t){return void 0===t&&(t=4),t=(t=t<Number.EPSILON?Number.EPSILON:t)>1e4?1e4:t,{In:function(e){return Math.pow(e,t)},Out:function(e){return 1-Math.pow(1-e,t)},InOut:function(e){return e<.5?Math.pow(2*e,t)/2:(1-Math.pow(2-2*e,t))/2+.5}}}}),ed=function(){return performance.now()},nd=function(){function t(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];this._tweens={},this._tweensAddedDuringUpdate={},this.add.apply(this,t)}return t.prototype.getAll=function(){var t=this;return Object.keys(this._tweens).map((function(e){return t._tweens[e]}))},t.prototype.removeAll=function(){this._tweens={}},t.prototype.add=function(){for(var t,e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];for(var i=0,r=e;i<r.length;i++){var s=r[i];null===(t=s._group)||void 0===t||t.remove(s),s._group=this,this._tweens[s.getId()]=s,this._tweensAddedDuringUpdate[s.getId()]=s}},t.prototype.remove=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];for(var n=0,i=t;n<i.length;n++){var r=i[n];r._group=void 0,delete this._tweens[r.getId()],delete this._tweensAddedDuringUpdate[r.getId()]}},t.prototype.allStopped=function(){return this.getAll().every((function(t){return!t.isPlaying()}))},t.prototype.update=function(t,e){void 0===t&&(t=ed()),void 0===e&&(e=!0);var n=Object.keys(this._tweens);if(0!==n.length)for(;n.length>0;){this._tweensAddedDuringUpdate={};for(var i=0;i<n.length;i++){var r=this._tweens[n[i]],s=!e;r&&!1===r.update(t,s)&&!e&&this.remove(r)}n=Object.keys(this._tweensAddedDuringUpdate)}},t}(),id={Linear:function(t,e){var n=t.length-1,i=n*e,r=Math.floor(i),s=id.Utils.Linear;return e<0?s(t[0],t[1],i):e>1?s(t[n],t[n-1],n-i):s(t[r],t[r+1>n?n:r+1],i-r)},Utils:{Linear:function(t,e,n){return(e-t)*n+t}}},rd=function(){function t(){}return t.nextId=function(){return t._nextId++},t._nextId=0,t}(),sd=new nd,ad=function(){function t(t,e){this._isPaused=!1,this._pauseStart=0,this._valuesStart={},this._valuesEnd={},this._valuesStartRepeat={},this._duration=1e3,this._isDynamic=!1,this._initialRepeat=0,this._repeat=0,this._yoyo=!1,this._isPlaying=!1,this._reversed=!1,this._delayTime=0,this._startTime=0,this._easingFunction=td.Linear.None,this._interpolationFunction=id.Linear,this._chainedTweens=[],this._onStartCallbackFired=!1,this._onEveryStartCallbackFired=!1,this._id=rd.nextId(),this._isChainStopped=!1,this._propertiesAreSetUp=!1,this._goToEnd=!1,this._object=t,"object"==typeof e?(this._group=e,e.add(this)):!0===e&&(this._group=sd,sd.add(this))}return t.prototype.getId=function(){return this._id},t.prototype.isPlaying=function(){return this._isPlaying},t.prototype.isPaused=function(){return this._isPaused},t.prototype.getDuration=function(){return this._duration},t.prototype.to=function(t,e){if(void 0===e&&(e=1e3),this._isPlaying)throw new Error("Can not call Tween.to() while Tween is already started or paused. Stop the Tween first.");return this._valuesEnd=t,this._propertiesAreSetUp=!1,this._duration=e<0?0:e,this},t.prototype.duration=function(t){return void 0===t&&(t=1e3),this._duration=t<0?0:t,this},t.prototype.dynamic=function(t){return void 0===t&&(t=!1),this._isDynamic=t,this},t.prototype.start=function(t,e){if(void 0===t&&(t=ed()),void 0===e&&(e=!1),this._isPlaying)return this;if(this._repeat=this._initialRepeat,this._reversed)for(var n in this._reversed=!1,this._valuesStartRepeat)this._swapEndStartRepeatValues(n),this._valuesStart[n]=this._valuesStartRepeat[n];if(this._isPlaying=!0,this._isPaused=!1,this._onStartCallbackFired=!1,this._onEveryStartCallbackFired=!1,this._isChainStopped=!1,this._startTime=t,this._startTime+=this._delayTime,!this._propertiesAreSetUp||e){if(this._propertiesAreSetUp=!0,!this._isDynamic){var i={};for(var r in this._valuesEnd)i[r]=this._valuesEnd[r];this._valuesEnd=i}this._setupProperties(this._object,this._valuesStart,this._valuesEnd,this._valuesStartRepeat,e)}return this},t.prototype.startFromCurrentValues=function(t){return this.start(t,!0)},t.prototype._setupProperties=function(t,e,n,i,r){for(var s in n){var a=t[s],o=Array.isArray(a),l=o?"array":typeof a,h=!o&&Array.isArray(n[s]);if("undefined"!==l&&"function"!==l){if(h){if(0===(f=n[s]).length)continue;for(var c=[a],q=0,u=f.length;q<u;q+=1){var d=this._handleRelativeValue(a,f[q]);if(isNaN(d)){h=!1,console.warn("Found invalid interpolation list. Skipping.");break}c.push(d)}h&&(n[s]=c)}if("object"!==l&&!o||!a||h)(void 0===e[s]||r)&&(e[s]=a),o||(e[s]*=1),i[s]=h?n[s].slice().reverse():e[s]||0;else{e[s]=o?[]:{};var m=a;for(var p in m)e[s][p]=m[p];i[s]=o?[]:{};var f=n[s];if(!this._isDynamic){var g={};for(var p in f)g[p]=f[p];n[s]=f=g}this._setupProperties(m,e[s],f,i[s],r)}}}},t.prototype.stop=function(){return this._isChainStopped||(this._isChainStopped=!0,this.stopChainedTweens()),this._isPlaying?(this._isPlaying=!1,this._isPaused=!1,this._onStopCallback&&this._onStopCallback(this._object),this):this},t.prototype.end=function(){return this._goToEnd=!0,this.update(this._startTime+this._duration),this},t.prototype.pause=function(t){return void 0===t&&(t=ed()),this._isPaused||!this._isPlaying||(this._isPaused=!0,this._pauseStart=t),this},t.prototype.resume=function(t){return void 0===t&&(t=ed()),this._isPaused&&this._isPlaying?(this._isPaused=!1,this._startTime+=t-this._pauseStart,this._pauseStart=0,this):this},t.prototype.stopChainedTweens=function(){for(var t=0,e=this._chainedTweens.length;t<e;t++)this._chainedTweens[t].stop();return this},t.prototype.group=function(t){return t?(t.add(this),this):(console.warn("tween.group() without args has been removed, use group.add(tween) instead."),this)},t.prototype.remove=function(){var t;return null===(t=this._group)||void 0===t||t.remove(this),this},t.prototype.delay=function(t){return void 0===t&&(t=0),this._delayTime=t,this},t.prototype.repeat=function(t){return void 0===t&&(t=0),this._initialRepeat=t,this._repeat=t,this},t.prototype.repeatDelay=function(t){return this._repeatDelayTime=t,this},t.prototype.yoyo=function(t){return void 0===t&&(t=!1),this._yoyo=t,this},t.prototype.easing=function(t){return void 0===t&&(t=td.Linear.None),this._easingFunction=t,this},t.prototype.interpolation=function(t){return void 0===t&&(t=id.Linear),this._interpolationFunction=t,this},t.prototype.chain=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return this._chainedTweens=t,this},t.prototype.onStart=function(t){return this._onStartCallback=t,this},t.prototype.onEveryStart=function(t){return this._onEveryStartCallback=t,this},t.prototype.onUpdate=function(t){return this._onUpdateCallback=t,this},t.prototype.onRepeat=function(t){return this._onRepeatCallback=t,this},t.prototype.onComplete=function(t){return this._onCompleteCallback=t,this},t.prototype.onStop=function(t){return this._onStopCallback=t,this},t.prototype.update=function(e,n){var i,r,s=this;if(void 0===e&&(e=ed()),void 0===n&&(n=t.autoStartOnUpdate),this._isPaused)return!0;if(!this._goToEnd&&!this._isPlaying){if(!n)return!1;this.start(e,!0)}if(this._goToEnd=!1,e<this._startTime)return!0;!1===this._onStartCallbackFired&&(this._onStartCallback&&this._onStartCallback(this._object),this._onStartCallbackFired=!0),!1===this._onEveryStartCallbackFired&&(this._onEveryStartCallback&&this._onEveryStartCallback(this._object),this._onEveryStartCallbackFired=!0);var a=e-this._startTime,o=this._duration+(null!==(i=this._repeatDelayTime)&&void 0!==i?i:this._delayTime),l=this._duration+this._repeat*o,h=function(){if(0===s._duration)return 1;if(a>l)return 1;var t=Math.trunc(a/o),e=a-t*o,n=Math.min(e/s._duration,1);return 0===n&&a===s._duration?1:n}(),c=this._easingFunction(h);if(this._updateProperties(this._object,this._valuesStart,this._valuesEnd,c),this._onUpdateCallback&&this._onUpdateCallback(this._object,h),0===this._duration||a>=this._duration){if(this._repeat>0){var q=Math.min(Math.trunc((a-this._duration)/o)+1,this._repeat);for(r in isFinite(this._repeat)&&(this._repeat-=q),this._valuesStartRepeat)this._yoyo||"string"!=typeof this._valuesEnd[r]||(this._valuesStartRepeat[r]=this._valuesStartRepeat[r]+parseFloat(this._valuesEnd[r])),this._yoyo&&this._swapEndStartRepeatValues(r),this._valuesStart[r]=this._valuesStartRepeat[r];return this._yoyo&&(this._reversed=!this._reversed),this._startTime+=o*q,this._onRepeatCallback&&this._onRepeatCallback(this._object),this._onEveryStartCallbackFired=!1,!0}this._onCompleteCallback&&this._onCompleteCallback(this._object);for(var u=0,d=this._chainedTweens.length;u<d;u++)this._chainedTweens[u].start(this._startTime+this._duration,!1);return this._isPlaying=!1,!1}return!0},t.prototype._updateProperties=function(t,e,n,i){for(var r in n)if(void 0!==e[r]){var s=e[r]||0,a=n[r],o=Array.isArray(t[r]),l=Array.isArray(a);!o&&l?t[r]=this._interpolationFunction(a,i):"object"==typeof a&&a?this._updateProperties(t[r],s,a,i):"number"==typeof(a=this._handleRelativeValue(s,a))&&(t[r]=s+(a-s)*i)}},t.prototype._handleRelativeValue=function(t,e){return"string"!=typeof e?e:"+"===e.charAt(0)||"-"===e.charAt(0)?t+parseFloat(e):parseFloat(e)},t.prototype._swapEndStartRepeatValues=function(t){var e=this._valuesStartRepeat[t],n=this._valuesEnd[t];this._valuesStartRepeat[t]="string"==typeof n?this._valuesStartRepeat[t]+parseFloat(n):this._valuesEnd[t],this._valuesEnd[t]=e},t.autoStartOnUpdate=!1,t}();rd.nextId;var od=sd;od.getAll.bind(od),od.removeAll.bind(od),od.add.bind(od),od.remove.bind(od),od.update.bind(od);const ld={type:"change"},hd={type:"start"},cd={type:"end"},qd=new Bn,ud=new Rs,dd=Math.cos(70*Ne.DEG2RAD),md=new un,pd=2*Math.PI,fd=-1,gd=0,xd=1,_d=2,yd=3,vd=4,wd=5,bd=6,Md=1e-6;class Sd extends uc{constructor(t,e=null){super(t,e),this.state=fd,this.enabled=!0,this.target=new un,this.cursor=new un,this.minDistance=0,this.maxDistance=1/0,this.minZoom=0,this.maxZoom=1/0,this.minTargetRadius=0,this.maxTargetRadius=1/0,this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.minAzimuthAngle=-1/0,this.maxAzimuthAngle=1/0,this.enableDamping=!1,this.dampingFactor=.05,this.enableZoom=!0,this.zoomSpeed=1,this.enableRotate=!0,this.rotateSpeed=1,this.keyRotateSpeed=1,this.enablePan=!0,this.panSpeed=1,this.screenSpacePanning=!0,this.keyPanSpeed=7,this.zoomToCursor=!1,this.autoRotate=!1,this.autoRotateSpeed=2,this.keys={LEFT:"ArrowLeft",UP:"ArrowUp",RIGHT:"ArrowRight",BOTTOM:"ArrowDown"},this.mouseButtons={LEFT:n.ROTATE,MIDDLE:n.DOLLY,RIGHT:n.PAN},this.touches={ONE:i.ROTATE,TWO:i.DOLLY_PAN},this.target0=this.target.clone(),this.position0=this.object.position.clone(),this.zoom0=this.object.zoom,this._domElementKeyEvents=null,this._lastPosition=new un,this._lastQuaternion=new qn,this._lastTargetPosition=new un,this._quat=(new qn).setFromUnitVectors(t.up,new un(0,1,0)),this._quatInverse=this._quat.clone().invert(),this._spherical=new Uh,this._sphericalDelta=new Uh,this._scale=1,this._panOffset=new un,this._rotateStart=new ke,this._rotateEnd=new ke,this._rotateDelta=new ke,this._panStart=new ke,this._panEnd=new ke,this._panDelta=new ke,this._dollyStart=new ke,this._dollyEnd=new ke,this._dollyDelta=new ke,this._dollyDirection=new un,this._mouse=new ke,this._performCursorZoom=!1,this._pointers=[],this._pointerPositions={},this._controlActive=!1,this._onPointerMove=Ed.bind(this),this._onPointerDown=Td.bind(this),this._onPointerUp=Ad.bind(this),this._onContextMenu=Nd.bind(this),this._onMouseWheel=zd.bind(this),this._onKeyDown=Id.bind(this),this._onTouchStart=Pd.bind(this),this._onTouchMove=Ld.bind(this),this._onMouseDown=Cd.bind(this),this._onMouseMove=Rd.bind(this),this._interceptControlDown=kd.bind(this),this._interceptControlUp=Dd.bind(this),null!==this.domElement&&this.connect(),this.update()}connect(){this.domElement.addEventListener("pointerdown",this._onPointerDown),this.domElement.addEventListener("pointercancel",this._onPointerUp),this.domElement.addEventListener("contextmenu",this._onContextMenu),this.domElement.addEventListener("wheel",this._onMouseWheel,{passive:!1});this.domElement.getRootNode().addEventListener("keydown",this._interceptControlDown,{passive:!0,capture:!0}),this.domElement.style.touchAction="none"}disconnect(){this.domElement.removeEventListener("pointerdown",this._onPointerDown),this.domElement.removeEventListener("pointermove",this._onPointerMove),this.domElement.removeEventListener("pointerup",this._onPointerUp),this.domElement.removeEventListener("pointercancel",this._onPointerUp),this.domElement.removeEventListener("wheel",this._onMouseWheel),this.domElement.removeEventListener("contextmenu",this._onContextMenu),this.stopListenToKeyEvents();this.domElement.getRootNode().removeEventListener("keydown",this._interceptControlDown,{capture:!0}),this.domElement.style.touchAction="auto"}dispose(){this.disconnect()}getPolarAngle(){return this._spherical.phi}getAzimuthalAngle(){return this._spherical.theta}getDistance(){return this.object.position.distanceTo(this.target)}listenToKeyEvents(t){t.addEventListener("keydown",this._onKeyDown),this._domElementKeyEvents=t}stopListenToKeyEvents(){null!==this._domElementKeyEvents&&(this._domElementKeyEvents.removeEventListener("keydown",this._onKeyDown),this._domElementKeyEvents=null)}saveState(){this.target0.copy(this.target),this.position0.copy(this.object.position),this.zoom0=this.object.zoom}reset(){this.target.copy(this.target0),this.object.position.copy(this.position0),this.object.zoom=this.zoom0,this.object.updateProjectionMatrix(),this.dispatchEvent(ld),this.update(),this.state=fd}update(t=null){const e=this.object.position;md.copy(e).sub(this.target),md.applyQuaternion(this._quat),this._spherical.setFromVector3(md),this.autoRotate&&this.state===fd&&this._rotateLeft(this._getAutoRotationAngle(t)),this.enableDamping?(this._spherical.theta+=this._sphericalDelta.theta*this.dampingFactor,this._spherical.phi+=this._sphericalDelta.phi*this.dampingFactor):(this._spherical.theta+=this._sphericalDelta.theta,this._spherical.phi+=this._sphericalDelta.phi);let n=this.minAzimuthAngle,i=this.maxAzimuthAngle;isFinite(n)&&isFinite(i)&&(n<-Math.PI?n+=pd:n>Math.PI&&(n-=pd),i<-Math.PI?i+=pd:i>Math.PI&&(i-=pd),this._spherical.theta=n<=i?Math.max(n,Math.min(i,this._spherical.theta)):this._spherical.theta>(n+i)/2?Math.max(n,this._spherical.theta):Math.min(i,this._spherical.theta)),this._spherical.phi=Math.max(this.minPolarAngle,Math.min(this.maxPolarAngle,this._spherical.phi)),this._spherical.makeSafe(),!0===this.enableDamping?this.target.addScaledVector(this._panOffset,this.dampingFactor):this.target.add(this._panOffset),this.target.sub(this.cursor),this.target.clampLength(this.minTargetRadius,this.maxTargetRadius),this.target.add(this.cursor);let r=!1;if(this.zoomToCursor&&this._performCursorZoom||this.object.isOrthographicCamera)this._spherical.radius=this._clampDistance(this._spherical.radius);else{const t=this._spherical.radius;this._spherical.radius=this._clampDistance(this._spherical.radius*this._scale),r=t!=this._spherical.radius}if(md.setFromSpherical(this._spherical),md.applyQuaternion(this._quatInverse),e.copy(this.target).add(md),this.object.lookAt(this.target),!0===this.enableDamping?(this._sphericalDelta.theta*=1-this.dampingFactor,this._sphericalDelta.phi*=1-this.dampingFactor,this._panOffset.multiplyScalar(1-this.dampingFactor)):(this._sphericalDelta.set(0,0,0),this._panOffset.set(0,0,0)),this.zoomToCursor&&this._performCursorZoom){let t=null;if(this.object.isPerspectiveCamera){const e=md.length();t=this._clampDistance(e*this._scale);const n=e-t;this.object.position.addScaledVector(this._dollyDirection,n),this.object.updateMatrixWorld(),r=!!n}else if(this.object.isOrthographicCamera){const e=new un(this._mouse.x,this._mouse.y,0);e.unproject(this.object);const n=this.object.zoom;this.object.zoom=Math.max(this.minZoom,Math.min(this.maxZoom,this.object.zoom/this._scale)),this.object.updateProjectionMatrix(),r=n!==this.object.zoom;const i=new un(this._mouse.x,this._mouse.y,0);i.unproject(this.object),this.object.position.sub(i).add(e),this.object.updateMatrixWorld(),t=md.length()}else console.warn("WARNING: OrbitControls.js encountered an unknown camera type - zoom to cursor disabled."),this.zoomToCursor=!1;null!==t&&(this.screenSpacePanning?this.target.set(0,0,-1).transformDirection(this.object.matrix).multiplyScalar(t).add(this.object.position):(qd.origin.copy(this.object.position),qd.direction.set(0,0,-1).transformDirection(this.object.matrix),Math.abs(this.object.up.dot(qd.direction))<dd?this.object.lookAt(this.target):(ud.setFromNormalAndCoplanarPoint(this.object.up,this.target),qd.intersectPlane(ud,this.target))))}else if(this.object.isOrthographicCamera){const t=this.object.zoom;this.object.zoom=Math.max(this.minZoom,Math.min(this.maxZoom,this.object.zoom/this._scale)),t!==this.object.zoom&&(this.object.updateProjectionMatrix(),r=!0)}return this._scale=1,this._performCursorZoom=!1,!!(r||this._lastPosition.distanceToSquared(this.object.position)>Md||8*(1-this._lastQuaternion.dot(this.object.quaternion))>Md||this._lastTargetPosition.distanceToSquared(this.target)>Md)&&(this.dispatchEvent(ld),this._lastPosition.copy(this.object.position),this._lastQuaternion.copy(this.object.quaternion),this._lastTargetPosition.copy(this.target),!0)}_getAutoRotationAngle(t){return null!==t?pd/60*this.autoRotateSpeed*t:pd/60/60*this.autoRotateSpeed}_getZoomScale(t){const e=Math.abs(.01*t);return Math.pow(.95,this.zoomSpeed*e)}_rotateLeft(t){this._sphericalDelta.theta-=t}_rotateUp(t){this._sphericalDelta.phi-=t}_panLeft(t,e){md.setFromMatrixColumn(e,0),md.multiplyScalar(-t),this._panOffset.add(md)}_panUp(t,e){!0===this.screenSpacePanning?md.setFromMatrixColumn(e,1):(md.setFromMatrixColumn(e,0),md.crossVectors(this.object.up,md)),md.multiplyScalar(t),this._panOffset.add(md)}_pan(t,e){const n=this.domElement;if(this.object.isPerspectiveCamera){const i=this.object.position;md.copy(i).sub(this.target);let r=md.length();r*=Math.tan(this.object.fov/2*Math.PI/180),this._panLeft(2*t*r/n.clientHeight,this.object.matrix),this._panUp(2*e*r/n.clientHeight,this.object.matrix)}else this.object.isOrthographicCamera?(this._panLeft(t*(this.object.right-this.object.left)/this.object.zoom/n.clientWidth,this.object.matrix),this._panUp(e*(this.object.top-this.object.bottom)/this.object.zoom/n.clientHeight,this.object.matrix)):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled."),this.enablePan=!1)}_dollyOut(t){this.object.isPerspectiveCamera||this.object.isOrthographicCamera?this._scale/=t:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),this.enableZoom=!1)}_dollyIn(t){this.object.isPerspectiveCamera||this.object.isOrthographicCamera?this._scale*=t:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),this.enableZoom=!1)}_updateZoomParameters(t,e){if(!this.zoomToCursor)return;this._performCursorZoom=!0;const n=this.domElement.getBoundingClientRect(),i=t-n.left,r=e-n.top,s=n.width,a=n.height;this._mouse.x=i/s*2-1,this._mouse.y=-r/a*2+1,this._dollyDirection.set(this._mouse.x,this._mouse.y,1).unproject(this.object).sub(this.object.position).normalize()}_clampDistance(t){return Math.max(this.minDistance,Math.min(this.maxDistance,t))}_handleMouseDownRotate(t){this._rotateStart.set(t.clientX,t.clientY)}_handleMouseDownDolly(t){this._updateZoomParameters(t.clientX,t.clientX),this._dollyStart.set(t.clientX,t.clientY)}_handleMouseDownPan(t){this._panStart.set(t.clientX,t.clientY)}_handleMouseMoveRotate(t){this._rotateEnd.set(t.clientX,t.clientY),this._rotateDelta.subVectors(this._rotateEnd,this._rotateStart).multiplyScalar(this.rotateSpeed);const e=this.domElement;this._rotateLeft(pd*this._rotateDelta.x/e.clientHeight),this._rotateUp(pd*this._rotateDelta.y/e.clientHeight),this._rotateStart.copy(this._rotateEnd),this.update()}_handleMouseMoveDolly(t){this._dollyEnd.set(t.clientX,t.clientY),this._dollyDelta.subVectors(this._dollyEnd,this._dollyStart),this._dollyDelta.y>0?this._dollyOut(this._getZoomScale(this._dollyDelta.y)):this._dollyDelta.y<0&&this._dollyIn(this._getZoomScale(this._dollyDelta.y)),this._dollyStart.copy(this._dollyEnd),this.update()}_handleMouseMovePan(t){this._panEnd.set(t.clientX,t.clientY),this._panDelta.subVectors(this._panEnd,this._panStart).multiplyScalar(this.panSpeed),this._pan(this._panDelta.x,this._panDelta.y),this._panStart.copy(this._panEnd),this.update()}_handleMouseWheel(t){this._updateZoomParameters(t.clientX,t.clientY),t.deltaY<0?this._dollyIn(this._getZoomScale(t.deltaY)):t.deltaY>0&&this._dollyOut(this._getZoomScale(t.deltaY)),this.update()}_handleKeyDown(t){let e=!1;switch(t.code){case this.keys.UP:t.ctrlKey||t.metaKey||t.shiftKey?this.enableRotate&&this._rotateUp(pd*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(0,this.keyPanSpeed),e=!0;break;case this.keys.BOTTOM:t.ctrlKey||t.metaKey||t.shiftKey?this.enableRotate&&this._rotateUp(-pd*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(0,-this.keyPanSpeed),e=!0;break;case this.keys.LEFT:t.ctrlKey||t.metaKey||t.shiftKey?this.enableRotate&&this._rotateLeft(pd*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(this.keyPanSpeed,0),e=!0;break;case this.keys.RIGHT:t.ctrlKey||t.metaKey||t.shiftKey?this.enableRotate&&this._rotateLeft(-pd*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(-this.keyPanSpeed,0),e=!0}e&&(t.preventDefault(),this.update())}_handleTouchStartRotate(t){if(1===this._pointers.length)this._rotateStart.set(t.pageX,t.pageY);else{const e=this._getSecondPointerPosition(t),n=.5*(t.pageX+e.x),i=.5*(t.pageY+e.y);this._rotateStart.set(n,i)}}_handleTouchStartPan(t){if(1===this._pointers.length)this._panStart.set(t.pageX,t.pageY);else{const e=this._getSecondPointerPosition(t),n=.5*(t.pageX+e.x),i=.5*(t.pageY+e.y);this._panStart.set(n,i)}}_handleTouchStartDolly(t){const e=this._getSecondPointerPosition(t),n=t.pageX-e.x,i=t.pageY-e.y,r=Math.sqrt(n*n+i*i);this._dollyStart.set(0,r)}_handleTouchStartDollyPan(t){this.enableZoom&&this._handleTouchStartDolly(t),this.enablePan&&this._handleTouchStartPan(t)}_handleTouchStartDollyRotate(t){this.enableZoom&&this._handleTouchStartDolly(t),this.enableRotate&&this._handleTouchStartRotate(t)}_handleTouchMoveRotate(t){if(1==this._pointers.length)this._rotateEnd.set(t.pageX,t.pageY);else{const e=this._getSecondPointerPosition(t),n=.5*(t.pageX+e.x),i=.5*(t.pageY+e.y);this._rotateEnd.set(n,i)}this._rotateDelta.subVectors(this._rotateEnd,this._rotateStart).multiplyScalar(this.rotateSpeed);const e=this.domElement;this._rotateLeft(pd*this._rotateDelta.x/e.clientHeight),this._rotateUp(pd*this._rotateDelta.y/e.clientHeight),this._rotateStart.copy(this._rotateEnd)}_handleTouchMovePan(t){if(1===this._pointers.length)this._panEnd.set(t.pageX,t.pageY);else{const e=this._getSecondPointerPosition(t),n=.5*(t.pageX+e.x),i=.5*(t.pageY+e.y);this._panEnd.set(n,i)}this._panDelta.subVectors(this._panEnd,this._panStart).multiplyScalar(this.panSpeed),this._pan(this._panDelta.x,this._panDelta.y),this._panStart.copy(this._panEnd)}_handleTouchMoveDolly(t){const e=this._getSecondPointerPosition(t),n=t.pageX-e.x,i=t.pageY-e.y,r=Math.sqrt(n*n+i*i);this._dollyEnd.set(0,r),this._dollyDelta.set(0,Math.pow(this._dollyEnd.y/this._dollyStart.y,this.zoomSpeed)),this._dollyOut(this._dollyDelta.y),this._dollyStart.copy(this._dollyEnd);const s=.5*(t.pageX+e.x),a=.5*(t.pageY+e.y);this._updateZoomParameters(s,a)}_handleTouchMoveDollyPan(t){this.enableZoom&&this._handleTouchMoveDolly(t),this.enablePan&&this._handleTouchMovePan(t)}_handleTouchMoveDollyRotate(t){this.enableZoom&&this._handleTouchMoveDolly(t),this.enableRotate&&this._handleTouchMoveRotate(t)}_addPointer(t){this._pointers.push(t.pointerId)}_removePointer(t){delete this._pointerPositions[t.pointerId];for(let e=0;e<this._pointers.length;e++)if(this._pointers[e]==t.pointerId)return void this._pointers.splice(e,1)}_isTrackingPointer(t){for(let e=0;e<this._pointers.length;e++)if(this._pointers[e]==t.pointerId)return!0;return!1}_trackPointer(t){let e=this._pointerPositions[t.pointerId];void 0===e&&(e=new ke,this._pointerPositions[t.pointerId]=e),e.set(t.pageX,t.pageY)}_getSecondPointerPosition(t){const e=t.pointerId===this._pointers[0]?this._pointers[1]:this._pointers[0];return this._pointerPositions[e]}_customWheelEvent(t){const e=t.deltaMode,n={clientX:t.clientX,clientY:t.clientY,deltaY:t.deltaY};switch(e){case 1:n.deltaY*=16;break;case 2:n.deltaY*=100}return t.ctrlKey&&!this._controlActive&&(n.deltaY*=10),n}}function Td(t){!1!==this.enabled&&(0===this._pointers.length&&(this.domElement.setPointerCapture(t.pointerId),this.domElement.addEventListener("pointermove",this._onPointerMove),this.domElement.addEventListener("pointerup",this._onPointerUp)),this._isTrackingPointer(t)||(this._addPointer(t),"touch"===t.pointerType?this._onTouchStart(t):this._onMouseDown(t)))}function Ed(t){!1!==this.enabled&&("touch"===t.pointerType?this._onTouchMove(t):this._onMouseMove(t))}function Ad(t){switch(this._removePointer(t),this._pointers.length){case 0:this.domElement.releasePointerCapture(t.pointerId),this.domElement.removeEventListener("pointermove",this._onPointerMove),this.domElement.removeEventListener("pointerup",this._onPointerUp),this.dispatchEvent(cd),this.state=fd;break;case 1:const e=this._pointers[0],n=this._pointerPositions[e];this._onTouchStart({pointerId:e,pageX:n.x,pageY:n.y})}}function Cd(t){let e;switch(t.button){case 0:e=this.mouseButtons.LEFT;break;case 1:e=this.mouseButtons.MIDDLE;break;case 2:e=this.mouseButtons.RIGHT;break;default:e=-1}switch(e){case n.DOLLY:if(!1===this.enableZoom)return;this._handleMouseDownDolly(t),this.state=xd;break;case n.ROTATE:if(t.ctrlKey||t.metaKey||t.shiftKey){if(!1===this.enablePan)return;this._handleMouseDownPan(t),this.state=_d}else{if(!1===this.enableRotate)return;this._handleMouseDownRotate(t),this.state=gd}break;case n.PAN:if(t.ctrlKey||t.metaKey||t.shiftKey){if(!1===this.enableRotate)return;this._handleMouseDownRotate(t),this.state=gd}else{if(!1===this.enablePan)return;this._handleMouseDownPan(t),this.state=_d}break;default:this.state=fd}this.state!==fd&&this.dispatchEvent(hd)}function Rd(t){switch(this.state){case gd:if(!1===this.enableRotate)return;this._handleMouseMoveRotate(t);break;case xd:if(!1===this.enableZoom)return;this._handleMouseMoveDolly(t);break;case _d:if(!1===this.enablePan)return;this._handleMouseMovePan(t)}}function zd(t){!1!==this.enabled&&!1!==this.enableZoom&&this.state===fd&&(t.preventDefault(),this.dispatchEvent(hd),this._handleMouseWheel(this._customWheelEvent(t)),this.dispatchEvent(cd))}function Id(t){!1!==this.enabled&&this._handleKeyDown(t)}function Pd(t){switch(this._trackPointer(t),this._pointers.length){case 1:switch(this.touches.ONE){case i.ROTATE:if(!1===this.enableRotate)return;this._handleTouchStartRotate(t),this.state=yd;break;case i.PAN:if(!1===this.enablePan)return;this._handleTouchStartPan(t),this.state=vd;break;default:this.state=fd}break;case 2:switch(this.touches.TWO){case i.DOLLY_PAN:if(!1===this.enableZoom&&!1===this.enablePan)return;this._handleTouchStartDollyPan(t),this.state=wd;break;case i.DOLLY_ROTATE:if(!1===this.enableZoom&&!1===this.enableRotate)return;this._handleTouchStartDollyRotate(t),this.state=bd;break;default:this.state=fd}break;default:this.state=fd}this.state!==fd&&this.dispatchEvent(hd)}function Ld(t){switch(this._trackPointer(t),this.state){case yd:if(!1===this.enableRotate)return;this._handleTouchMoveRotate(t),this.update();break;case vd:if(!1===this.enablePan)return;this._handleTouchMovePan(t),this.update();break;case wd:if(!1===this.enableZoom&&!1===this.enablePan)return;this._handleTouchMoveDollyPan(t),this.update();break;case bd:if(!1===this.enableZoom&&!1===this.enableRotate)return;this._handleTouchMoveDollyRotate(t),this.update();break;default:this.state=fd}}function Nd(t){!1!==this.enabled&&t.preventDefault()}function kd(t){if("Control"===t.key){this._controlActive=!0;this.domElement.getRootNode().addEventListener("keyup",this._interceptControlUp,{passive:!0,capture:!0})}}function Dd(t){if("Control"===t.key){this._controlActive=!1;this.domElement.getRootNode().removeEventListener("keyup",this._interceptControlUp,{passive:!0,capture:!0})}}class Ud extends Sd{constructor(t,e){super(t,e),this.screenSpacePanning=!1,this.mouseButtons={LEFT:n.PAN,MIDDLE:n.DOLLY,RIGHT:n.ROTATE},this.touches={ONE:i.PAN,TWO:i.DOLLY_ROTATE}}}const Od="vertex",Fd="none",Bd="frame",Vd="render",Hd="object",Gd=["x","y","z","w"],Wd=["00","01","02","03","04","05","06","07","08","09","0a","0b","0c","0d","0e","0f","10","11","12","13","14","15","16","17","18","19","1a","1b","1c","1d","1e","1f","20","21","22","23","24","25","26","27","28","29","2a","2b","2c","2d","2e","2f","30","31","32","33","34","35","36","37","38","39","3a","3b","3c","3d","3e","3f","40","41","42","43","44","45","46","47","48","49","4a","4b","4c","4d","4e","4f","50","51","52","53","54","55","56","57","58","59","5a","5b","5c","5d","5e","5f","60","61","62","63","64","65","66","67","68","69","6a","6b","6c","6d","6e","6f","70","71","72","73","74","75","76","77","78","79","7a","7b","7c","7d","7e","7f","80","81","82","83","84","85","86","87","88","89","8a","8b","8c","8d","8e","8f","90","91","92","93","94","95","96","97","98","99","9a","9b","9c","9d","9e","9f","a0","a1","a2","a3","a4","a5","a6","a7","a8","a9","aa","ab","ac","ad","ae","af","b0","b1","b2","b3","b4","b5","b6","b7","b8","b9","ba","bb","bc","bd","be","bf","c0","c1","c2","c3","c4","c5","c6","c7","c8","c9","ca","cb","cc","cd","ce","cf","d0","d1","d2","d3","d4","d5","d6","d7","d8","d9","da","db","dc","dd","de","df","e0","e1","e2","e3","e4","e5","e6","e7","e8","e9","ea","eb","ec","ed","ee","ef","f0","f1","f2","f3","f4","f5","f6","f7","f8","f9","fa","fb","fc","fd","fe","ff"];let jd=1234567;const Xd=Math.PI/180,Yd=180/Math.PI;function Zd(){const t=4294967295*Math.random()|0,e=4294967295*Math.random()|0,n=4294967295*Math.random()|0,i=4294967295*Math.random()|0;return(Wd[255&t]+Wd[t>>8&255]+Wd[t>>16&255]+Wd[t>>24&255]+"-"+Wd[255&e]+Wd[e>>8&255]+"-"+Wd[e>>16&15|64]+Wd[e>>24&255]+"-"+Wd[63&n|128]+Wd[n>>8&255]+"-"+Wd[n>>16&255]+Wd[n>>24&255]+Wd[255&i]+Wd[i>>8&255]+Wd[i>>16&255]+Wd[i>>24&255]).toLowerCase()}function Jd(t,e,n){return Math.max(e,Math.min(n,t))}function $d(t,e){return(t%e+e)%e}function Kd(t,e,n){return(1-n)*t+n*e}function Qd(t,e){switch(e.constructor){case Float32Array:return t;case Uint32Array:return t/4294967295;case Uint16Array:return t/65535;case Uint8Array:return t/255;case Int32Array:return Math.max(t/2147483647,-1);case Int16Array:return Math.max(t/32767,-1);case Int8Array:return Math.max(t/127,-1);default:throw new Error("Invalid component type.")}}function tm(t,e){switch(e.constructor){case Float32Array:return t;case Uint32Array:return Math.round(4294967295*t);case Uint16Array:return Math.round(65535*t);case Uint8Array:return Math.round(255*t);case Int32Array:return Math.round(2147483647*t);case Int16Array:return Math.round(32767*t);case Int8Array:return Math.round(127*t);default:throw new Error("Invalid component type.")}}const em={DEG2RAD:Xd,RAD2DEG:Yd,generateUUID:Zd,clamp:Jd,euclideanModulo:$d,mapLinear:function(t,e,n,i,r){return i+(t-e)*(r-i)/(n-e)},inverseLerp:function(t,e,n){return t!==e?(n-t)/(e-t):0},lerp:Kd,damp:function(t,e,n,i){return Kd(t,e,1-Math.exp(-n*i))},pingpong:function(t,e=1){return e-Math.abs($d(t,2*e)-e)},smoothstep:function(t,e,n){return t<=e?0:t>=n?1:(t=(t-e)/(n-e))*t*(3-2*t)},smootherstep:function(t,e,n){return t<=e?0:t>=n?1:(t=(t-e)/(n-e))*t*t*(t*(6*t-15)+10)},randInt:function(t,e){return t+Math.floor(Math.random()*(e-t+1))},randFloat:function(t,e){return t+Math.random()*(e-t)},randFloatSpread:function(t){return t*(.5-Math.random())},seededRandom:function(t){void 0!==t&&(jd=t);let e=jd+=1831565813;return e=Math.imul(e^e>>>15,1|e),e^=e+Math.imul(e^e>>>7,61|e),((e^e>>>14)>>>0)/4294967296},degToRad:function(t){return t*Xd},radToDeg:function(t){return t*Yd},isPowerOfTwo:function(t){return!(t&t-1)&&0!==t},ceilPowerOfTwo:function(t){return Math.pow(2,Math.ceil(Math.log(t)/Math.LN2))},floorPowerOfTwo:function(t){return Math.pow(2,Math.floor(Math.log(t)/Math.LN2))},setQuaternionFromProperEuler:function(t,e,n,i,r){const s=Math.cos,a=Math.sin,o=s(n/2),l=a(n/2),h=s((e+i)/2),c=a((e+i)/2),q=s((e-i)/2),u=a((e-i)/2),d=s((i-e)/2),m=a((i-e)/2);switch(r){case"XYX":t.set(o*c,l*q,l*u,o*h);break;case"YZY":t.set(l*u,o*c,l*q,o*h);break;case"ZXZ":t.set(l*q,l*u,o*c,o*h);break;case"XZX":t.set(o*c,l*m,l*d,o*h);break;case"YXY":t.set(l*d,o*c,l*m,o*h);break;case"ZYZ":t.set(l*m,l*d,o*c,o*h);break;default:console.warn("THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: "+r)}},normalize:tm,denormalize:Qd},nm="srgb",im="srgb-linear",rm="linear",sm="srgb",am=35044,om=2e3,lm=2001;class hm{constructor(t,e,n,i,r,s,a,o,l){hm.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1],void 0!==t&&this.set(t,e,n,i,r,s,a,o,l)}set(t,e,n,i,r,s,a,o,l){const h=this.elements;return h[0]=t,h[1]=i,h[2]=a,h[3]=e,h[4]=r,h[5]=o,h[6]=n,h[7]=s,h[8]=l,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(t){const e=this.elements,n=t.elements;return e[0]=n[0],e[1]=n[1],e[2]=n[2],e[3]=n[3],e[4]=n[4],e[5]=n[5],e[6]=n[6],e[7]=n[7],e[8]=n[8],this}extractBasis(t,e,n){return t.setFromMatrix3Column(this,0),e.setFromMatrix3Column(this,1),n.setFromMatrix3Column(this,2),this}setFromMatrix4(t){const e=t.elements;return this.set(e[0],e[4],e[8],e[1],e[5],e[9],e[2],e[6],e[10]),this}multiply(t){return this.multiplyMatrices(this,t)}premultiply(t){return this.multiplyMatrices(t,this)}multiplyMatrices(t,e){const n=t.elements,i=e.elements,r=this.elements,s=n[0],a=n[3],o=n[6],l=n[1],h=n[4],c=n[7],q=n[2],u=n[5],d=n[8],m=i[0],p=i[3],f=i[6],g=i[1],x=i[4],_=i[7],y=i[2],v=i[5],w=i[8];return r[0]=s*m+a*g+o*y,r[3]=s*p+a*x+o*v,r[6]=s*f+a*_+o*w,r[1]=l*m+h*g+c*y,r[4]=l*p+h*x+c*v,r[7]=l*f+h*_+c*w,r[2]=q*m+u*g+d*y,r[5]=q*p+u*x+d*v,r[8]=q*f+u*_+d*w,this}multiplyScalar(t){const e=this.elements;return e[0]*=t,e[3]*=t,e[6]*=t,e[1]*=t,e[4]*=t,e[7]*=t,e[2]*=t,e[5]*=t,e[8]*=t,this}determinant(){const t=this.elements,e=t[0],n=t[1],i=t[2],r=t[3],s=t[4],a=t[5],o=t[6],l=t[7],h=t[8];return e*s*h-e*a*l-n*r*h+n*a*o+i*r*l-i*s*o}invert(){const t=this.elements,e=t[0],n=t[1],i=t[2],r=t[3],s=t[4],a=t[5],o=t[6],l=t[7],h=t[8],c=h*s-a*l,q=a*o-h*r,u=l*r-s*o,d=e*c+n*q+i*u;if(0===d)return this.set(0,0,0,0,0,0,0,0,0);const m=1/d;return t[0]=c*m,t[1]=(i*l-h*n)*m,t[2]=(a*n-i*s)*m,t[3]=q*m,t[4]=(h*e-i*o)*m,t[5]=(i*r-a*e)*m,t[6]=u*m,t[7]=(n*o-l*e)*m,t[8]=(s*e-n*r)*m,this}transpose(){let t;const e=this.elements;return t=e[1],e[1]=e[3],e[3]=t,t=e[2],e[2]=e[6],e[6]=t,t=e[5],e[5]=e[7],e[7]=t,this}getNormalMatrix(t){return this.setFromMatrix4(t).invert().transpose()}transposeIntoArray(t){const e=this.elements;return t[0]=e[0],t[1]=e[3],t[2]=e[6],t[3]=e[1],t[4]=e[4],t[5]=e[7],t[6]=e[2],t[7]=e[5],t[8]=e[8],this}setUvTransform(t,e,n,i,r,s,a){const o=Math.cos(r),l=Math.sin(r);return this.set(n*o,n*l,-n*(o*s+l*a)+s+t,-i*l,i*o,-i*(-l*s+o*a)+a+e,0,0,1),this}scale(t,e){return this.premultiply(cm.makeScale(t,e)),this}rotate(t){return this.premultiply(cm.makeRotation(-t)),this}translate(t,e){return this.premultiply(cm.makeTranslation(t,e)),this}makeTranslation(t,e){return t.isVector2?this.set(1,0,t.x,0,1,t.y,0,0,1):this.set(1,0,t,0,1,e,0,0,1),this}makeRotation(t){const e=Math.cos(t),n=Math.sin(t);return this.set(e,-n,0,n,e,0,0,0,1),this}makeScale(t,e){return this.set(t,0,0,0,e,0,0,0,1),this}equals(t){const e=this.elements,n=t.elements;for(let i=0;i<9;i++)if(e[i]!==n[i])return!1;return!0}fromArray(t,e=0){for(let n=0;n<9;n++)this.elements[n]=t[n+e];return this}toArray(t=[],e=0){const n=this.elements;return t[e]=n[0],t[e+1]=n[1],t[e+2]=n[2],t[e+3]=n[3],t[e+4]=n[4],t[e+5]=n[5],t[e+6]=n[6],t[e+7]=n[7],t[e+8]=n[8],t}clone(){return(new this.constructor).fromArray(this.elements)}}const cm=new hm,qm=(new hm).set(.4123908,.3575843,.1804808,.212639,.7151687,.0721923,.0193308,.1191948,.9505322),um=(new hm).set(3.2409699,-1.5373832,-.4986108,-.9692436,1.8759675,.0415551,.0556301,-.203977,1.0569715);function dm(){const t={enabled:!0,workingColorSpace:im,spaces:{},convert:function(t,e,n){return!1!==this.enabled&&e!==n&&e&&n?(this.spaces[e].transfer===sm&&(t.r=pm(t.r),t.g=pm(t.g),t.b=pm(t.b)),this.spaces[e].primaries!==this.spaces[n].primaries&&(t.applyMatrix3(this.spaces[e].toXYZ),t.applyMatrix3(this.spaces[n].fromXYZ)),this.spaces[n].transfer===sm&&(t.r=fm(t.r),t.g=fm(t.g),t.b=fm(t.b)),t):t},fromWorkingColorSpace:function(t,e){return this.convert(t,this.workingColorSpace,e)},toWorkingColorSpace:function(t,e){return this.convert(t,e,this.workingColorSpace)},getPrimaries:function(t){return this.spaces[t].primaries},getTransfer:function(t){return""===t?rm:this.spaces[t].transfer},getLuminanceCoefficients:function(t,e=this.workingColorSpace){return t.fromArray(this.spaces[e].luminanceCoefficients)},define:function(t){Object.assign(this.spaces,t)},_getMatrix:function(t,e,n){return t.copy(this.spaces[e].toXYZ).multiply(this.spaces[n].fromXYZ)},_getDrawingBufferColorSpace:function(t){return this.spaces[t].outputColorSpaceConfig.drawingBufferColorSpace},_getUnpackColorSpace:function(t=this.workingColorSpace){return this.spaces[t].workingColorSpaceConfig.unpackColorSpace}},e=[.64,.33,.3,.6,.15,.06],n=[.2126,.7152,.0722],i=[.3127,.329];return t.define({[im]:{primaries:e,whitePoint:i,transfer:rm,toXYZ:qm,fromXYZ:um,luminanceCoefficients:n,workingColorSpaceConfig:{unpackColorSpace:nm},outputColorSpaceConfig:{drawingBufferColorSpace:nm}},[nm]:{primaries:e,whitePoint:i,transfer:sm,toXYZ:qm,fromXYZ:um,luminanceCoefficients:n,outputColorSpaceConfig:{drawingBufferColorSpace:nm}}}),t}const mm=dm();function pm(t){return t<.04045?.0773993808*t:Math.pow(.9478672986*t+.0521327014,2.4)}function fm(t){return t<.0031308?12.92*t:1.055*Math.pow(t,.41666)-.055}const gm={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},xm={h:0,s:0,l:0},_m={h:0,s:0,l:0};function ym(t,e,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?t+6*(e-t)*n:n<.5?e:n<2/3?t+6*(e-t)*(2/3-n):t}class vm{constructor(t,e,n){return this.isColor=!0,this.r=1,this.g=1,this.b=1,this.set(t,e,n)}set(t,e,n){if(void 0===e&&void 0===n){const e=t;e&&e.isColor?this.copy(e):"number"==typeof e?this.setHex(e):"string"==typeof e&&this.setStyle(e)}else this.setRGB(t,e,n);return this}setScalar(t){return this.r=t,this.g=t,this.b=t,this}setHex(t,e=nm){return t=Math.floor(t),this.r=(t>>16&255)/255,this.g=(t>>8&255)/255,this.b=(255&t)/255,mm.toWorkingColorSpace(this,e),this}setRGB(t,e,n,i=mm.workingColorSpace){return this.r=t,this.g=e,this.b=n,mm.toWorkingColorSpace(this,i),this}setHSL(t,e,n,i=mm.workingColorSpace){if(t=$d(t,1),e=Jd(e,0,1),n=Jd(n,0,1),0===e)this.r=this.g=this.b=n;else{const i=n<=.5?n*(1+e):n+e-n*e,r=2*n-i;this.r=ym(r,i,t+1/3),this.g=ym(r,i,t),this.b=ym(r,i,t-1/3)}return mm.toWorkingColorSpace(this,i),this}setStyle(t,e=nm){function n(e){void 0!==e&&parseFloat(e)<1&&console.warn("THREE.Color: Alpha component of "+t+" will be ignored.")}let i;if(i=/^(\w+)\(([^\)]*)\)/.exec(t)){let r;const s=i[1],a=i[2];switch(s){case"rgb":case"rgba":if(r=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(a))return n(r[4]),this.setRGB(Math.min(255,parseInt(r[1],10))/255,Math.min(255,parseInt(r[2],10))/255,Math.min(255,parseInt(r[3],10))/255,e);if(r=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(a))return n(r[4]),this.setRGB(Math.min(100,parseInt(r[1],10))/100,Math.min(100,parseInt(r[2],10))/100,Math.min(100,parseInt(r[3],10))/100,e);break;case"hsl":case"hsla":if(r=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)\%\s*,\s*(\d*\.?\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(a))return n(r[4]),this.setHSL(parseFloat(r[1])/360,parseFloat(r[2])/100,parseFloat(r[3])/100,e);break;default:console.warn("THREE.Color: Unknown color model "+t)}}else if(i=/^\#([A-Fa-f\d]+)$/.exec(t)){const n=i[1],r=n.length;if(3===r)return this.setRGB(parseInt(n.charAt(0),16)/15,parseInt(n.charAt(1),16)/15,parseInt(n.charAt(2),16)/15,e);if(6===r)return this.setHex(parseInt(n,16),e);console.warn("THREE.Color: Invalid hex color "+t)}else if(t&&t.length>0)return this.setColorName(t,e);return this}setColorName(t,e=nm){const n=gm[t.toLowerCase()];return void 0!==n?this.setHex(n,e):console.warn("THREE.Color: Unknown color "+t),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(t){return this.r=t.r,this.g=t.g,this.b=t.b,this}copySRGBToLinear(t){return this.r=pm(t.r),this.g=pm(t.g),this.b=pm(t.b),this}copyLinearToSRGB(t){return this.r=fm(t.r),this.g=fm(t.g),this.b=fm(t.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(t=nm){return mm.fromWorkingColorSpace(wm.copy(this),t),65536*Math.round(Jd(255*wm.r,0,255))+256*Math.round(Jd(255*wm.g,0,255))+Math.round(Jd(255*wm.b,0,255))}getHexString(t=nm){return("000000"+this.getHex(t).toString(16)).slice(-6)}getHSL(t,e=mm.workingColorSpace){mm.fromWorkingColorSpace(wm.copy(this),e);const n=wm.r,i=wm.g,r=wm.b,s=Math.max(n,i,r),a=Math.min(n,i,r);let o,l;const h=(a+s)/2;if(a===s)o=0,l=0;else{const t=s-a;switch(l=h<=.5?t/(s+a):t/(2-s-a),s){case n:o=(i-r)/t+(i<r?6:0);break;case i:o=(r-n)/t+2;break;case r:o=(n-i)/t+4}o/=6}return t.h=o,t.s=l,t.l=h,t}getRGB(t,e=mm.workingColorSpace){return mm.fromWorkingColorSpace(wm.copy(this),e),t.r=wm.r,t.g=wm.g,t.b=wm.b,t}getStyle(t=nm){mm.fromWorkingColorSpace(wm.copy(this),t);const e=wm.r,n=wm.g,i=wm.b;return t!==nm?`color(${t} ${e.toFixed(3)} ${n.toFixed(3)} ${i.toFixed(3)})`:`rgb(${Math.round(255*e)},${Math.round(255*n)},${Math.round(255*i)})`}offsetHSL(t,e,n){return this.getHSL(xm),this.setHSL(xm.h+t,xm.s+e,xm.l+n)}add(t){return this.r+=t.r,this.g+=t.g,this.b+=t.b,this}addColors(t,e){return this.r=t.r+e.r,this.g=t.g+e.g,this.b=t.b+e.b,this}addScalar(t){return this.r+=t,this.g+=t,this.b+=t,this}sub(t){return this.r=Math.max(0,this.r-t.r),this.g=Math.max(0,this.g-t.g),this.b=Math.max(0,this.b-t.b),this}multiply(t){return this.r*=t.r,this.g*=t.g,this.b*=t.b,this}multiplyScalar(t){return this.r*=t,this.g*=t,this.b*=t,this}lerp(t,e){return this.r+=(t.r-this.r)*e,this.g+=(t.g-this.g)*e,this.b+=(t.b-this.b)*e,this}lerpColors(t,e,n){return this.r=t.r+(e.r-t.r)*n,this.g=t.g+(e.g-t.g)*n,this.b=t.b+(e.b-t.b)*n,this}lerpHSL(t,e){this.getHSL(xm),t.getHSL(_m);const n=Kd(xm.h,_m.h,e),i=Kd(xm.s,_m.s,e),r=Kd(xm.l,_m.l,e);return this.setHSL(n,i,r),this}setFromVector3(t){return this.r=t.x,this.g=t.y,this.b=t.z,this}applyMatrix3(t){const e=this.r,n=this.g,i=this.b,r=t.elements;return this.r=r[0]*e+r[3]*n+r[6]*i,this.g=r[1]*e+r[4]*n+r[7]*i,this.b=r[2]*e+r[5]*n+r[8]*i,this}equals(t){return t.r===this.r&&t.g===this.g&&t.b===this.b}fromArray(t,e=0){return this.r=t[e],this.g=t[e+1],this.b=t[e+2],this}toArray(t=[],e=0){return t[e]=this.r,t[e+1]=this.g,t[e+2]=this.b,t}fromBufferAttribute(t,e){return this.r=t.getX(e),this.g=t.getY(e),this.b=t.getZ(e),this}toJSON(){return this.getHex()}*[Symbol.iterator](){yield this.r,yield this.g,yield this.b}}const wm=new vm;vm.NAMES=gm;class bm{constructor(t=0,e=0,n=0,i=1){this.isQuaternion=!0,this._x=t,this._y=e,this._z=n,this._w=i}static slerpFlat(t,e,n,i,r,s,a){let o=n[i+0],l=n[i+1],h=n[i+2],c=n[i+3];const q=r[s+0],u=r[s+1],d=r[s+2],m=r[s+3];if(0===a)return t[e+0]=o,t[e+1]=l,t[e+2]=h,void(t[e+3]=c);if(1===a)return t[e+0]=q,t[e+1]=u,t[e+2]=d,void(t[e+3]=m);if(c!==m||o!==q||l!==u||h!==d){let t=1-a;const e=o*q+l*u+h*d+c*m,n=e>=0?1:-1,i=1-e*e;if(i>Number.EPSILON){const r=Math.sqrt(i),s=Math.atan2(r,e*n);t=Math.sin(t*s)/r,a=Math.sin(a*s)/r}const r=a*n;if(o=o*t+q*r,l=l*t+u*r,h=h*t+d*r,c=c*t+m*r,t===1-a){const t=1/Math.sqrt(o*o+l*l+h*h+c*c);o*=t,l*=t,h*=t,c*=t}}t[e]=o,t[e+1]=l,t[e+2]=h,t[e+3]=c}static multiplyQuaternionsFlat(t,e,n,i,r,s){const a=n[i],o=n[i+1],l=n[i+2],h=n[i+3],c=r[s],q=r[s+1],u=r[s+2],d=r[s+3];return t[e]=a*d+h*c+o*u-l*q,t[e+1]=o*d+h*q+l*c-a*u,t[e+2]=l*d+h*u+a*q-o*c,t[e+3]=h*d-a*c-o*q-l*u,t}get x(){return this._x}set x(t){this._x=t,this._onChangeCallback()}get y(){return this._y}set y(t){this._y=t,this._onChangeCallback()}get z(){return this._z}set z(t){this._z=t,this._onChangeCallback()}get w(){return this._w}set w(t){this._w=t,this._onChangeCallback()}set(t,e,n,i){return this._x=t,this._y=e,this._z=n,this._w=i,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._w)}copy(t){return this._x=t.x,this._y=t.y,this._z=t.z,this._w=t.w,this._onChangeCallback(),this}setFromEuler(t,e=!0){const n=t._x,i=t._y,r=t._z,s=t._order,a=Math.cos,o=Math.sin,l=a(n/2),h=a(i/2),c=a(r/2),q=o(n/2),u=o(i/2),d=o(r/2);switch(s){case"XYZ":this._x=q*h*c+l*u*d,this._y=l*u*c-q*h*d,this._z=l*h*d+q*u*c,this._w=l*h*c-q*u*d;break;case"YXZ":this._x=q*h*c+l*u*d,this._y=l*u*c-q*h*d,this._z=l*h*d-q*u*c,this._w=l*h*c+q*u*d;break;case"ZXY":this._x=q*h*c-l*u*d,this._y=l*u*c+q*h*d,this._z=l*h*d+q*u*c,this._w=l*h*c-q*u*d;break;case"ZYX":this._x=q*h*c-l*u*d,this._y=l*u*c+q*h*d,this._z=l*h*d-q*u*c,this._w=l*h*c+q*u*d;break;case"YZX":this._x=q*h*c+l*u*d,this._y=l*u*c+q*h*d,this._z=l*h*d-q*u*c,this._w=l*h*c-q*u*d;break;case"XZY":this._x=q*h*c-l*u*d,this._y=l*u*c-q*h*d,this._z=l*h*d+q*u*c,this._w=l*h*c+q*u*d;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+s)}return!0===e&&this._onChangeCallback(),this}setFromAxisAngle(t,e){const n=e/2,i=Math.sin(n);return this._x=t.x*i,this._y=t.y*i,this._z=t.z*i,this._w=Math.cos(n),this._onChangeCallback(),this}setFromRotationMatrix(t){const e=t.elements,n=e[0],i=e[4],r=e[8],s=e[1],a=e[5],o=e[9],l=e[2],h=e[6],c=e[10],q=n+a+c;if(q>0){const t=.5/Math.sqrt(q+1);this._w=.25/t,this._x=(h-o)*t,this._y=(r-l)*t,this._z=(s-i)*t}else if(n>a&&n>c){const t=2*Math.sqrt(1+n-a-c);this._w=(h-o)/t,this._x=.25*t,this._y=(i+s)/t,this._z=(r+l)/t}else if(a>c){const t=2*Math.sqrt(1+a-n-c);this._w=(r-l)/t,this._x=(i+s)/t,this._y=.25*t,this._z=(o+h)/t}else{const t=2*Math.sqrt(1+c-n-a);this._w=(s-i)/t,this._x=(r+l)/t,this._y=(o+h)/t,this._z=.25*t}return this._onChangeCallback(),this}setFromUnitVectors(t,e){let n=t.dot(e)+1;return n<Number.EPSILON?(n=0,Math.abs(t.x)>Math.abs(t.z)?(this._x=-t.y,this._y=t.x,this._z=0,this._w=n):(this._x=0,this._y=-t.z,this._z=t.y,this._w=n)):(this._x=t.y*e.z-t.z*e.y,this._y=t.z*e.x-t.x*e.z,this._z=t.x*e.y-t.y*e.x,this._w=n),this.normalize()}angleTo(t){return 2*Math.acos(Math.abs(Jd(this.dot(t),-1,1)))}rotateTowards(t,e){const n=this.angleTo(t);if(0===n)return this;const i=Math.min(1,e/n);return this.slerp(t,i),this}identity(){return this.set(0,0,0,1)}invert(){return this.conjugate()}conjugate(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this}dot(t){return this._x*t._x+this._y*t._y+this._z*t._z+this._w*t._w}lengthSq(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}normalize(){let t=this.length();return 0===t?(this._x=0,this._y=0,this._z=0,this._w=1):(t=1/t,this._x=this._x*t,this._y=this._y*t,this._z=this._z*t,this._w=this._w*t),this._onChangeCallback(),this}multiply(t){return this.multiplyQuaternions(this,t)}premultiply(t){return this.multiplyQuaternions(t,this)}multiplyQuaternions(t,e){const n=t._x,i=t._y,r=t._z,s=t._w,a=e._x,o=e._y,l=e._z,h=e._w;return this._x=n*h+s*a+i*l-r*o,this._y=i*h+s*o+r*a-n*l,this._z=r*h+s*l+n*o-i*a,this._w=s*h-n*a-i*o-r*l,this._onChangeCallback(),this}slerp(t,e){if(0===e)return this;if(1===e)return this.copy(t);const n=this._x,i=this._y,r=this._z,s=this._w;let a=s*t._w+n*t._x+i*t._y+r*t._z;if(a<0?(this._w=-t._w,this._x=-t._x,this._y=-t._y,this._z=-t._z,a=-a):this.copy(t),a>=1)return this._w=s,this._x=n,this._y=i,this._z=r,this;const o=1-a*a;if(o<=Number.EPSILON){const t=1-e;return this._w=t*s+e*this._w,this._x=t*n+e*this._x,this._y=t*i+e*this._y,this._z=t*r+e*this._z,this.normalize(),this}const l=Math.sqrt(o),h=Math.atan2(l,a),c=Math.sin((1-e)*h)/l,q=Math.sin(e*h)/l;return this._w=s*c+this._w*q,this._x=n*c+this._x*q,this._y=i*c+this._y*q,this._z=r*c+this._z*q,this._onChangeCallback(),this}slerpQuaternions(t,e,n){return this.copy(t).slerp(e,n)}random(){const t=2*Math.PI*Math.random(),e=2*Math.PI*Math.random(),n=Math.random(),i=Math.sqrt(1-n),r=Math.sqrt(n);return this.set(i*Math.sin(t),i*Math.cos(t),r*Math.sin(e),r*Math.cos(e))}equals(t){return t._x===this._x&&t._y===this._y&&t._z===this._z&&t._w===this._w}fromArray(t,e=0){return this._x=t[e],this._y=t[e+1],this._z=t[e+2],this._w=t[e+3],this._onChangeCallback(),this}toArray(t=[],e=0){return t[e]=this._x,t[e+1]=this._y,t[e+2]=this._z,t[e+3]=this._w,t}fromBufferAttribute(t,e){return this._x=t.getX(e),this._y=t.getY(e),this._z=t.getZ(e),this._w=t.getW(e),this._onChangeCallback(),this}toJSON(){return this.toArray()}_onChange(t){return this._onChangeCallback=t,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}}class Mm{constructor(t=0,e=0,n=0){Mm.prototype.isVector3=!0,this.x=t,this.y=e,this.z=n}set(t,e,n){return void 0===n&&(n=this.z),this.x=t,this.y=e,this.z=n,this}setScalar(t){return this.x=t,this.y=t,this.z=t,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setZ(t){return this.z=t,this}setComponent(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;case 2:this.z=e;break;default:throw new Error("index is out of range: "+t)}return this}getComponent(t){switch(t){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+t)}}clone(){return new this.constructor(this.x,this.y,this.z)}copy(t){return this.x=t.x,this.y=t.y,this.z=t.z,this}add(t){return this.x+=t.x,this.y+=t.y,this.z+=t.z,this}addScalar(t){return this.x+=t,this.y+=t,this.z+=t,this}addVectors(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this.z=t.z+e.z,this}addScaledVector(t,e){return this.x+=t.x*e,this.y+=t.y*e,this.z+=t.z*e,this}sub(t){return this.x-=t.x,this.y-=t.y,this.z-=t.z,this}subScalar(t){return this.x-=t,this.y-=t,this.z-=t,this}subVectors(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this.z=t.z-e.z,this}multiply(t){return this.x*=t.x,this.y*=t.y,this.z*=t.z,this}multiplyScalar(t){return this.x*=t,this.y*=t,this.z*=t,this}multiplyVectors(t,e){return this.x=t.x*e.x,this.y=t.y*e.y,this.z=t.z*e.z,this}applyEuler(t){return this.applyQuaternion(Tm.setFromEuler(t))}applyAxisAngle(t,e){return this.applyQuaternion(Tm.setFromAxisAngle(t,e))}applyMatrix3(t){const e=this.x,n=this.y,i=this.z,r=t.elements;return this.x=r[0]*e+r[3]*n+r[6]*i,this.y=r[1]*e+r[4]*n+r[7]*i,this.z=r[2]*e+r[5]*n+r[8]*i,this}applyNormalMatrix(t){return this.applyMatrix3(t).normalize()}applyMatrix4(t){const e=this.x,n=this.y,i=this.z,r=t.elements,s=1/(r[3]*e+r[7]*n+r[11]*i+r[15]);return this.x=(r[0]*e+r[4]*n+r[8]*i+r[12])*s,this.y=(r[1]*e+r[5]*n+r[9]*i+r[13])*s,this.z=(r[2]*e+r[6]*n+r[10]*i+r[14])*s,this}applyQuaternion(t){const e=this.x,n=this.y,i=this.z,r=t.x,s=t.y,a=t.z,o=t.w,l=2*(s*i-a*n),h=2*(a*e-r*i),c=2*(r*n-s*e);return this.x=e+o*l+s*c-a*h,this.y=n+o*h+a*l-r*c,this.z=i+o*c+r*h-s*l,this}project(t){return this.applyMatrix4(t.matrixWorldInverse).applyMatrix4(t.projectionMatrix)}unproject(t){return this.applyMatrix4(t.projectionMatrixInverse).applyMatrix4(t.matrixWorld)}transformDirection(t){const e=this.x,n=this.y,i=this.z,r=t.elements;return this.x=r[0]*e+r[4]*n+r[8]*i,this.y=r[1]*e+r[5]*n+r[9]*i,this.z=r[2]*e+r[6]*n+r[10]*i,this.normalize()}divide(t){return this.x/=t.x,this.y/=t.y,this.z/=t.z,this}divideScalar(t){return this.multiplyScalar(1/t)}min(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this.z=Math.min(this.z,t.z),this}max(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this.z=Math.max(this.z,t.z),this}clamp(t,e){return this.x=Jd(this.x,t.x,e.x),this.y=Jd(this.y,t.y,e.y),this.z=Jd(this.z,t.z,e.z),this}clampScalar(t,e){return this.x=Jd(this.x,t,e),this.y=Jd(this.y,t,e),this.z=Jd(this.z,t,e),this}clampLength(t,e){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Jd(n,t,e))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(t){return this.x*t.x+this.y*t.y+this.z*t.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(t){return this.normalize().multiplyScalar(t)}lerp(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this.z+=(t.z-this.z)*e,this}lerpVectors(t,e,n){return this.x=t.x+(e.x-t.x)*n,this.y=t.y+(e.y-t.y)*n,this.z=t.z+(e.z-t.z)*n,this}cross(t){return this.crossVectors(this,t)}crossVectors(t,e){const n=t.x,i=t.y,r=t.z,s=e.x,a=e.y,o=e.z;return this.x=i*o-r*a,this.y=r*s-n*o,this.z=n*a-i*s,this}projectOnVector(t){const e=t.lengthSq();if(0===e)return this.set(0,0,0);const n=t.dot(this)/e;return this.copy(t).multiplyScalar(n)}projectOnPlane(t){return Sm.copy(this).projectOnVector(t),this.sub(Sm)}reflect(t){return this.sub(Sm.copy(t).multiplyScalar(2*this.dot(t)))}angleTo(t){const e=Math.sqrt(this.lengthSq()*t.lengthSq());if(0===e)return Math.PI/2;const n=this.dot(t)/e;return Math.acos(Jd(n,-1,1))}distanceTo(t){return Math.sqrt(this.distanceToSquared(t))}distanceToSquared(t){const e=this.x-t.x,n=this.y-t.y,i=this.z-t.z;return e*e+n*n+i*i}manhattanDistanceTo(t){return Math.abs(this.x-t.x)+Math.abs(this.y-t.y)+Math.abs(this.z-t.z)}setFromSpherical(t){return this.setFromSphericalCoords(t.radius,t.phi,t.theta)}setFromSphericalCoords(t,e,n){const i=Math.sin(e)*t;return this.x=i*Math.sin(n),this.y=Math.cos(e)*t,this.z=i*Math.cos(n),this}setFromCylindrical(t){return this.setFromCylindricalCoords(t.radius,t.theta,t.y)}setFromCylindricalCoords(t,e,n){return this.x=t*Math.sin(e),this.y=n,this.z=t*Math.cos(e),this}setFromMatrixPosition(t){const e=t.elements;return this.x=e[12],this.y=e[13],this.z=e[14],this}setFromMatrixScale(t){const e=this.setFromMatrixColumn(t,0).length(),n=this.setFromMatrixColumn(t,1).length(),i=this.setFromMatrixColumn(t,2).length();return this.x=e,this.y=n,this.z=i,this}setFromMatrixColumn(t,e){return this.fromArray(t.elements,4*e)}setFromMatrix3Column(t,e){return this.fromArray(t.elements,3*e)}setFromEuler(t){return this.x=t._x,this.y=t._y,this.z=t._z,this}setFromColor(t){return this.x=t.r,this.y=t.g,this.z=t.b,this}equals(t){return t.x===this.x&&t.y===this.y&&t.z===this.z}fromArray(t,e=0){return this.x=t[e],this.y=t[e+1],this.z=t[e+2],this}toArray(t=[],e=0){return t[e]=this.x,t[e+1]=this.y,t[e+2]=this.z,t}fromBufferAttribute(t,e){return this.x=t.getX(e),this.y=t.getY(e),this.z=t.getZ(e),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){const t=Math.random()*Math.PI*2,e=2*Math.random()-1,n=Math.sqrt(1-e*e);return this.x=n*Math.cos(t),this.y=e,this.z=n*Math.sin(t),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}}const Sm=new Mm,Tm=new bm;class Em{constructor(t,e,n,i,r,s,a,o,l,h,c,q,u,d,m,p){Em.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],void 0!==t&&this.set(t,e,n,i,r,s,a,o,l,h,c,q,u,d,m,p)}set(t,e,n,i,r,s,a,o,l,h,c,q,u,d,m,p){const f=this.elements;return f[0]=t,f[4]=e,f[8]=n,f[12]=i,f[1]=r,f[5]=s,f[9]=a,f[13]=o,f[2]=l,f[6]=h,f[10]=c,f[14]=q,f[3]=u,f[7]=d,f[11]=m,f[15]=p,this}identity(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this}clone(){return(new Em).fromArray(this.elements)}copy(t){const e=this.elements,n=t.elements;return e[0]=n[0],e[1]=n[1],e[2]=n[2],e[3]=n[3],e[4]=n[4],e[5]=n[5],e[6]=n[6],e[7]=n[7],e[8]=n[8],e[9]=n[9],e[10]=n[10],e[11]=n[11],e[12]=n[12],e[13]=n[13],e[14]=n[14],e[15]=n[15],this}copyPosition(t){const e=this.elements,n=t.elements;return e[12]=n[12],e[13]=n[13],e[14]=n[14],this}setFromMatrix3(t){const e=t.elements;return this.set(e[0],e[3],e[6],0,e[1],e[4],e[7],0,e[2],e[5],e[8],0,0,0,0,1),this}extractBasis(t,e,n){return t.setFromMatrixColumn(this,0),e.setFromMatrixColumn(this,1),n.setFromMatrixColumn(this,2),this}makeBasis(t,e,n){return this.set(t.x,e.x,n.x,0,t.y,e.y,n.y,0,t.z,e.z,n.z,0,0,0,0,1),this}extractRotation(t){const e=this.elements,n=t.elements,i=1/Am.setFromMatrixColumn(t,0).length(),r=1/Am.setFromMatrixColumn(t,1).length(),s=1/Am.setFromMatrixColumn(t,2).length();return e[0]=n[0]*i,e[1]=n[1]*i,e[2]=n[2]*i,e[3]=0,e[4]=n[4]*r,e[5]=n[5]*r,e[6]=n[6]*r,e[7]=0,e[8]=n[8]*s,e[9]=n[9]*s,e[10]=n[10]*s,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this}makeRotationFromEuler(t){const e=this.elements,n=t.x,i=t.y,r=t.z,s=Math.cos(n),a=Math.sin(n),o=Math.cos(i),l=Math.sin(i),h=Math.cos(r),c=Math.sin(r);if("XYZ"===t.order){const t=s*h,n=s*c,i=a*h,r=a*c;e[0]=o*h,e[4]=-o*c,e[8]=l,e[1]=n+i*l,e[5]=t-r*l,e[9]=-a*o,e[2]=r-t*l,e[6]=i+n*l,e[10]=s*o}else if("YXZ"===t.order){const t=o*h,n=o*c,i=l*h,r=l*c;e[0]=t+r*a,e[4]=i*a-n,e[8]=s*l,e[1]=s*c,e[5]=s*h,e[9]=-a,e[2]=n*a-i,e[6]=r+t*a,e[10]=s*o}else if("ZXY"===t.order){const t=o*h,n=o*c,i=l*h,r=l*c;e[0]=t-r*a,e[4]=-s*c,e[8]=i+n*a,e[1]=n+i*a,e[5]=s*h,e[9]=r-t*a,e[2]=-s*l,e[6]=a,e[10]=s*o}else if("ZYX"===t.order){const t=s*h,n=s*c,i=a*h,r=a*c;e[0]=o*h,e[4]=i*l-n,e[8]=t*l+r,e[1]=o*c,e[5]=r*l+t,e[9]=n*l-i,e[2]=-l,e[6]=a*o,e[10]=s*o}else if("YZX"===t.order){const t=s*o,n=s*l,i=a*o,r=a*l;e[0]=o*h,e[4]=r-t*c,e[8]=i*c+n,e[1]=c,e[5]=s*h,e[9]=-a*h,e[2]=-l*h,e[6]=n*c+i,e[10]=t-r*c}else if("XZY"===t.order){const t=s*o,n=s*l,i=a*o,r=a*l;e[0]=o*h,e[4]=-c,e[8]=l*h,e[1]=t*c+r,e[5]=s*h,e[9]=n*c-i,e[2]=i*c-n,e[6]=a*h,e[10]=r*c+t}return e[3]=0,e[7]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this}makeRotationFromQuaternion(t){return this.compose(Rm,t,zm)}lookAt(t,e,n){const i=this.elements;return Lm.subVectors(t,e),0===Lm.lengthSq()&&(Lm.z=1),Lm.normalize(),Im.crossVectors(n,Lm),0===Im.lengthSq()&&(1===Math.abs(n.z)?Lm.x+=1e-4:Lm.z+=1e-4,Lm.normalize(),Im.crossVectors(n,Lm)),Im.normalize(),Pm.crossVectors(Lm,Im),i[0]=Im.x,i[4]=Pm.x,i[8]=Lm.x,i[1]=Im.y,i[5]=Pm.y,i[9]=Lm.y,i[2]=Im.z,i[6]=Pm.z,i[10]=Lm.z,this}multiply(t){return this.multiplyMatrices(this,t)}premultiply(t){return this.multiplyMatrices(t,this)}multiplyMatrices(t,e){const n=t.elements,i=e.elements,r=this.elements,s=n[0],a=n[4],o=n[8],l=n[12],h=n[1],c=n[5],q=n[9],u=n[13],d=n[2],m=n[6],p=n[10],f=n[14],g=n[3],x=n[7],_=n[11],y=n[15],v=i[0],w=i[4],b=i[8],M=i[12],S=i[1],T=i[5],E=i[9],A=i[13],C=i[2],R=i[6],z=i[10],I=i[14],P=i[3],L=i[7],N=i[11],k=i[15];return r[0]=s*v+a*S+o*C+l*P,r[4]=s*w+a*T+o*R+l*L,r[8]=s*b+a*E+o*z+l*N,r[12]=s*M+a*A+o*I+l*k,r[1]=h*v+c*S+q*C+u*P,r[5]=h*w+c*T+q*R+u*L,r[9]=h*b+c*E+q*z+u*N,r[13]=h*M+c*A+q*I+u*k,r[2]=d*v+m*S+p*C+f*P,r[6]=d*w+m*T+p*R+f*L,r[10]=d*b+m*E+p*z+f*N,r[14]=d*M+m*A+p*I+f*k,r[3]=g*v+x*S+_*C+y*P,r[7]=g*w+x*T+_*R+y*L,r[11]=g*b+x*E+_*z+y*N,r[15]=g*M+x*A+_*I+y*k,this}multiplyScalar(t){const e=this.elements;return e[0]*=t,e[4]*=t,e[8]*=t,e[12]*=t,e[1]*=t,e[5]*=t,e[9]*=t,e[13]*=t,e[2]*=t,e[6]*=t,e[10]*=t,e[14]*=t,e[3]*=t,e[7]*=t,e[11]*=t,e[15]*=t,this}determinant(){const t=this.elements,e=t[0],n=t[4],i=t[8],r=t[12],s=t[1],a=t[5],o=t[9],l=t[13],h=t[2],c=t[6],q=t[10],u=t[14];return t[3]*(+r*o*c-i*l*c-r*a*q+n*l*q+i*a*u-n*o*u)+t[7]*(+e*o*u-e*l*q+r*s*q-i*s*u+i*l*h-r*o*h)+t[11]*(+e*l*c-e*a*u-r*s*c+n*s*u+r*a*h-n*l*h)+t[15]*(-i*a*h-e*o*c+e*a*q+i*s*c-n*s*q+n*o*h)}transpose(){const t=this.elements;let e;return e=t[1],t[1]=t[4],t[4]=e,e=t[2],t[2]=t[8],t[8]=e,e=t[6],t[6]=t[9],t[9]=e,e=t[3],t[3]=t[12],t[12]=e,e=t[7],t[7]=t[13],t[13]=e,e=t[11],t[11]=t[14],t[14]=e,this}setPosition(t,e,n){const i=this.elements;return t.isVector3?(i[12]=t.x,i[13]=t.y,i[14]=t.z):(i[12]=t,i[13]=e,i[14]=n),this}invert(){const t=this.elements,e=t[0],n=t[1],i=t[2],r=t[3],s=t[4],a=t[5],o=t[6],l=t[7],h=t[8],c=t[9],q=t[10],u=t[11],d=t[12],m=t[13],p=t[14],f=t[15],g=c*p*l-m*q*l+m*o*u-a*p*u-c*o*f+a*q*f,x=d*q*l-h*p*l-d*o*u+s*p*u+h*o*f-s*q*f,_=h*m*l-d*c*l+d*a*u-s*m*u-h*a*f+s*c*f,y=d*c*o-h*m*o-d*a*q+s*m*q+h*a*p-s*c*p,v=e*g+n*x+i*_+r*y;if(0===v)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);const w=1/v;return t[0]=g*w,t[1]=(m*q*r-c*p*r-m*i*u+n*p*u+c*i*f-n*q*f)*w,t[2]=(a*p*r-m*o*r+m*i*l-n*p*l-a*i*f+n*o*f)*w,t[3]=(c*o*r-a*q*r-c*i*l+n*q*l+a*i*u-n*o*u)*w,t[4]=x*w,t[5]=(h*p*r-d*q*r+d*i*u-e*p*u-h*i*f+e*q*f)*w,t[6]=(d*o*r-s*p*r-d*i*l+e*p*l+s*i*f-e*o*f)*w,t[7]=(s*q*r-h*o*r+h*i*l-e*q*l-s*i*u+e*o*u)*w,t[8]=_*w,t[9]=(d*c*r-h*m*r-d*n*u+e*m*u+h*n*f-e*c*f)*w,t[10]=(s*m*r-d*a*r+d*n*l-e*m*l-s*n*f+e*a*f)*w,t[11]=(h*a*r-s*c*r-h*n*l+e*c*l+s*n*u-e*a*u)*w,t[12]=y*w,t[13]=(h*m*i-d*c*i+d*n*q-e*m*q-h*n*p+e*c*p)*w,t[14]=(d*a*i-s*m*i-d*n*o+e*m*o+s*n*p-e*a*p)*w,t[15]=(s*c*i-h*a*i+h*n*o-e*c*o-s*n*q+e*a*q)*w,this}scale(t){const e=this.elements,n=t.x,i=t.y,r=t.z;return e[0]*=n,e[4]*=i,e[8]*=r,e[1]*=n,e[5]*=i,e[9]*=r,e[2]*=n,e[6]*=i,e[10]*=r,e[3]*=n,e[7]*=i,e[11]*=r,this}getMaxScaleOnAxis(){const t=this.elements,e=t[0]*t[0]+t[1]*t[1]+t[2]*t[2],n=t[4]*t[4]+t[5]*t[5]+t[6]*t[6],i=t[8]*t[8]+t[9]*t[9]+t[10]*t[10];return Math.sqrt(Math.max(e,n,i))}makeTranslation(t,e,n){return t.isVector3?this.set(1,0,0,t.x,0,1,0,t.y,0,0,1,t.z,0,0,0,1):this.set(1,0,0,t,0,1,0,e,0,0,1,n,0,0,0,1),this}makeRotationX(t){const e=Math.cos(t),n=Math.sin(t);return this.set(1,0,0,0,0,e,-n,0,0,n,e,0,0,0,0,1),this}makeRotationY(t){const e=Math.cos(t),n=Math.sin(t);return this.set(e,0,n,0,0,1,0,0,-n,0,e,0,0,0,0,1),this}makeRotationZ(t){const e=Math.cos(t),n=Math.sin(t);return this.set(e,-n,0,0,n,e,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(t,e){const n=Math.cos(e),i=Math.sin(e),r=1-n,s=t.x,a=t.y,o=t.z,l=r*s,h=r*a;return this.set(l*s+n,l*a-i*o,l*o+i*a,0,l*a+i*o,h*a+n,h*o-i*s,0,l*o-i*a,h*o+i*s,r*o*o+n,0,0,0,0,1),this}makeScale(t,e,n){return this.set(t,0,0,0,0,e,0,0,0,0,n,0,0,0,0,1),this}makeShear(t,e,n,i,r,s){return this.set(1,n,r,0,t,1,s,0,e,i,1,0,0,0,0,1),this}compose(t,e,n){const i=this.elements,r=e._x,s=e._y,a=e._z,o=e._w,l=r+r,h=s+s,c=a+a,q=r*l,u=r*h,d=r*c,m=s*h,p=s*c,f=a*c,g=o*l,x=o*h,_=o*c,y=n.x,v=n.y,w=n.z;return i[0]=(1-(m+f))*y,i[1]=(u+_)*y,i[2]=(d-x)*y,i[3]=0,i[4]=(u-_)*v,i[5]=(1-(q+f))*v,i[6]=(p+g)*v,i[7]=0,i[8]=(d+x)*w,i[9]=(p-g)*w,i[10]=(1-(q+m))*w,i[11]=0,i[12]=t.x,i[13]=t.y,i[14]=t.z,i[15]=1,this}decompose(t,e,n){const i=this.elements;let r=Am.set(i[0],i[1],i[2]).length();const s=Am.set(i[4],i[5],i[6]).length(),a=Am.set(i[8],i[9],i[10]).length();this.determinant()<0&&(r=-r),t.x=i[12],t.y=i[13],t.z=i[14],Cm.copy(this);const o=1/r,l=1/s,h=1/a;return Cm.elements[0]*=o,Cm.elements[1]*=o,Cm.elements[2]*=o,Cm.elements[4]*=l,Cm.elements[5]*=l,Cm.elements[6]*=l,Cm.elements[8]*=h,Cm.elements[9]*=h,Cm.elements[10]*=h,e.setFromRotationMatrix(Cm),n.x=r,n.y=s,n.z=a,this}makePerspective(t,e,n,i,r,s,a=2e3){const o=this.elements,l=2*r/(e-t),h=2*r/(n-i),c=(e+t)/(e-t),q=(n+i)/(n-i);let u,d;if(a===om)u=-(s+r)/(s-r),d=-2*s*r/(s-r);else{if(a!==lm)throw new Error("THREE.Matrix4.makePerspective(): Invalid coordinate system: "+a);u=-s/(s-r),d=-s*r/(s-r)}return o[0]=l,o[4]=0,o[8]=c,o[12]=0,o[1]=0,o[5]=h,o[9]=q,o[13]=0,o[2]=0,o[6]=0,o[10]=u,o[14]=d,o[3]=0,o[7]=0,o[11]=-1,o[15]=0,this}makeOrthographic(t,e,n,i,r,s,a=2e3){const o=this.elements,l=1/(e-t),h=1/(n-i),c=1/(s-r),q=(e+t)*l,u=(n+i)*h;let d,m;if(a===om)d=(s+r)*c,m=-2*c;else{if(a!==lm)throw new Error("THREE.Matrix4.makeOrthographic(): Invalid coordinate system: "+a);d=r*c,m=-1*c}return o[0]=2*l,o[4]=0,o[8]=0,o[12]=-q,o[1]=0,o[5]=2*h,o[9]=0,o[13]=-u,o[2]=0,o[6]=0,o[10]=m,o[14]=-d,o[3]=0,o[7]=0,o[11]=0,o[15]=1,this}equals(t){const e=this.elements,n=t.elements;for(let i=0;i<16;i++)if(e[i]!==n[i])return!1;return!0}fromArray(t,e=0){for(let n=0;n<16;n++)this.elements[n]=t[n+e];return this}toArray(t=[],e=0){const n=this.elements;return t[e]=n[0],t[e+1]=n[1],t[e+2]=n[2],t[e+3]=n[3],t[e+4]=n[4],t[e+5]=n[5],t[e+6]=n[6],t[e+7]=n[7],t[e+8]=n[8],t[e+9]=n[9],t[e+10]=n[10],t[e+11]=n[11],t[e+12]=n[12],t[e+13]=n[13],t[e+14]=n[14],t[e+15]=n[15],t}}const Am=new Mm,Cm=new Em,Rm=new Mm(0,0,0),zm=new Mm(1,1,1),Im=new Mm,Pm=new Mm,Lm=new Mm;class Nm{constructor(t=0,e=0){Nm.prototype.isVector2=!0,this.x=t,this.y=e}get width(){return this.x}set width(t){this.x=t}get height(){return this.y}set height(t){this.y=t}set(t,e){return this.x=t,this.y=e,this}setScalar(t){return this.x=t,this.y=t,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setComponent(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;default:throw new Error("index is out of range: "+t)}return this}getComponent(t){switch(t){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+t)}}clone(){return new this.constructor(this.x,this.y)}copy(t){return this.x=t.x,this.y=t.y,this}add(t){return this.x+=t.x,this.y+=t.y,this}addScalar(t){return this.x+=t,this.y+=t,this}addVectors(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this}addScaledVector(t,e){return this.x+=t.x*e,this.y+=t.y*e,this}sub(t){return this.x-=t.x,this.y-=t.y,this}subScalar(t){return this.x-=t,this.y-=t,this}subVectors(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this}multiply(t){return this.x*=t.x,this.y*=t.y,this}multiplyScalar(t){return this.x*=t,this.y*=t,this}divide(t){return this.x/=t.x,this.y/=t.y,this}divideScalar(t){return this.multiplyScalar(1/t)}applyMatrix3(t){const e=this.x,n=this.y,i=t.elements;return this.x=i[0]*e+i[3]*n+i[6],this.y=i[1]*e+i[4]*n+i[7],this}min(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this}max(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this}clamp(t,e){return this.x=Jd(this.x,t.x,e.x),this.y=Jd(this.y,t.y,e.y),this}clampScalar(t,e){return this.x=Jd(this.x,t,e),this.y=Jd(this.y,t,e),this}clampLength(t,e){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Jd(n,t,e))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this}negate(){return this.x=-this.x,this.y=-this.y,this}dot(t){return this.x*t.x+this.y*t.y}cross(t){return this.x*t.y-this.y*t.x}lengthSq(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)}normalize(){return this.divideScalar(this.length()||1)}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}angleTo(t){const e=Math.sqrt(this.lengthSq()*t.lengthSq());if(0===e)return Math.PI/2;const n=this.dot(t)/e;return Math.acos(Jd(n,-1,1))}distanceTo(t){return Math.sqrt(this.distanceToSquared(t))}distanceToSquared(t){const e=this.x-t.x,n=this.y-t.y;return e*e+n*n}manhattanDistanceTo(t){return Math.abs(this.x-t.x)+Math.abs(this.y-t.y)}setLength(t){return this.normalize().multiplyScalar(t)}lerp(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this}lerpVectors(t,e,n){return this.x=t.x+(e.x-t.x)*n,this.y=t.y+(e.y-t.y)*n,this}equals(t){return t.x===this.x&&t.y===this.y}fromArray(t,e=0){return this.x=t[e],this.y=t[e+1],this}toArray(t=[],e=0){return t[e]=this.x,t[e+1]=this.y,t}fromBufferAttribute(t,e){return this.x=t.getX(e),this.y=t.getY(e),this}rotateAround(t,e){const n=Math.cos(e),i=Math.sin(e),r=this.x-t.x,s=this.y-t.y;return this.x=r*n-s*i+t.x,this.y=r*i+s*n+t.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}}class km{constructor(t=0,e=0,n=0,i=1){km.prototype.isVector4=!0,this.x=t,this.y=e,this.z=n,this.w=i}get width(){return this.z}set width(t){this.z=t}get height(){return this.w}set height(t){this.w=t}set(t,e,n,i){return this.x=t,this.y=e,this.z=n,this.w=i,this}setScalar(t){return this.x=t,this.y=t,this.z=t,this.w=t,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setZ(t){return this.z=t,this}setW(t){return this.w=t,this}setComponent(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;case 2:this.z=e;break;case 3:this.w=e;break;default:throw new Error("index is out of range: "+t)}return this}getComponent(t){switch(t){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: "+t)}}clone(){return new this.constructor(this.x,this.y,this.z,this.w)}copy(t){return this.x=t.x,this.y=t.y,this.z=t.z,this.w=void 0!==t.w?t.w:1,this}add(t){return this.x+=t.x,this.y+=t.y,this.z+=t.z,this.w+=t.w,this}addScalar(t){return this.x+=t,this.y+=t,this.z+=t,this.w+=t,this}addVectors(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this.z=t.z+e.z,this.w=t.w+e.w,this}addScaledVector(t,e){return this.x+=t.x*e,this.y+=t.y*e,this.z+=t.z*e,this.w+=t.w*e,this}sub(t){return this.x-=t.x,this.y-=t.y,this.z-=t.z,this.w-=t.w,this}subScalar(t){return this.x-=t,this.y-=t,this.z-=t,this.w-=t,this}subVectors(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this.z=t.z-e.z,this.w=t.w-e.w,this}multiply(t){return this.x*=t.x,this.y*=t.y,this.z*=t.z,this.w*=t.w,this}multiplyScalar(t){return this.x*=t,this.y*=t,this.z*=t,this.w*=t,this}applyMatrix4(t){const e=this.x,n=this.y,i=this.z,r=this.w,s=t.elements;return this.x=s[0]*e+s[4]*n+s[8]*i+s[12]*r,this.y=s[1]*e+s[5]*n+s[9]*i+s[13]*r,this.z=s[2]*e+s[6]*n+s[10]*i+s[14]*r,this.w=s[3]*e+s[7]*n+s[11]*i+s[15]*r,this}divide(t){return this.x/=t.x,this.y/=t.y,this.z/=t.z,this.w/=t.w,this}divideScalar(t){return this.multiplyScalar(1/t)}setAxisAngleFromQuaternion(t){this.w=2*Math.acos(t.w);const e=Math.sqrt(1-t.w*t.w);return e<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=t.x/e,this.y=t.y/e,this.z=t.z/e),this}setAxisAngleFromRotationMatrix(t){let e,n,i,r;const s=.01,a=.1,o=t.elements,l=o[0],h=o[4],c=o[8],q=o[1],u=o[5],d=o[9],m=o[2],p=o[6],f=o[10];if(Math.abs(h-q)<s&&Math.abs(c-m)<s&&Math.abs(d-p)<s){if(Math.abs(h+q)<a&&Math.abs(c+m)<a&&Math.abs(d+p)<a&&Math.abs(l+u+f-3)<a)return this.set(1,0,0,0),this;e=Math.PI;const t=(l+1)/2,o=(u+1)/2,g=(f+1)/2,x=(h+q)/4,_=(c+m)/4,y=(d+p)/4;return t>o&&t>g?t<s?(n=0,i=.707106781,r=.707106781):(n=Math.sqrt(t),i=x/n,r=_/n):o>g?o<s?(n=.707106781,i=0,r=.707106781):(i=Math.sqrt(o),n=x/i,r=y/i):g<s?(n=.707106781,i=.707106781,r=0):(r=Math.sqrt(g),n=_/r,i=y/r),this.set(n,i,r,e),this}let g=Math.sqrt((p-d)*(p-d)+(c-m)*(c-m)+(q-h)*(q-h));return Math.abs(g)<.001&&(g=1),this.x=(p-d)/g,this.y=(c-m)/g,this.z=(q-h)/g,this.w=Math.acos((l+u+f-1)/2),this}setFromMatrixPosition(t){const e=t.elements;return this.x=e[12],this.y=e[13],this.z=e[14],this.w=e[15],this}min(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this.z=Math.min(this.z,t.z),this.w=Math.min(this.w,t.w),this}max(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this.z=Math.max(this.z,t.z),this.w=Math.max(this.w,t.w),this}clamp(t,e){return this.x=Jd(this.x,t.x,e.x),this.y=Jd(this.y,t.y,e.y),this.z=Jd(this.z,t.z,e.z),this.w=Jd(this.w,t.w,e.w),this}clampScalar(t,e){return this.x=Jd(this.x,t,e),this.y=Jd(this.y,t,e),this.z=Jd(this.z,t,e),this.w=Jd(this.w,t,e),this}clampLength(t,e){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Jd(n,t,e))}floor(){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(){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(){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(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this.w=Math.trunc(this.w),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-this.w,this}dot(t){return this.x*t.x+this.y*t.y+this.z*t.z+this.w*t.w}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)}normalize(){return this.divideScalar(this.length()||1)}setLength(t){return this.normalize().multiplyScalar(t)}lerp(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this.z+=(t.z-this.z)*e,this.w+=(t.w-this.w)*e,this}lerpVectors(t,e,n){return this.x=t.x+(e.x-t.x)*n,this.y=t.y+(e.y-t.y)*n,this.z=t.z+(e.z-t.z)*n,this.w=t.w+(e.w-t.w)*n,this}equals(t){return t.x===this.x&&t.y===this.y&&t.z===this.z&&t.w===this.w}fromArray(t,e=0){return this.x=t[e],this.y=t[e+1],this.z=t[e+2],this.w=t[e+3],this}toArray(t=[],e=0){return t[e]=this.x,t[e+1]=this.y,t[e+2]=this.z,t[e+3]=this.w,t}fromBufferAttribute(t,e){return this.x=t.getX(e),this.y=t.getY(e),this.z=t.getZ(e),this.w=t.getW(e),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this.w=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z,yield this.w}}function Dm(t,e=0){let n=3735928559^e,i=1103547991^e;if(t instanceof Array)for(let r,s=0;s<t.length;s++)r=t[s],n=Math.imul(n^r,2654435761),i=Math.imul(i^r,1597334677);else for(let r,s=0;s<t.length;s++)r=t.charCodeAt(s),n=Math.imul(n^r,2654435761),i=Math.imul(i^r,1597334677);return n=Math.imul(n^n>>>16,2246822507),n^=Math.imul(i^i>>>13,3266489909),i=Math.imul(i^i>>>16,2246822507),i^=Math.imul(n^n>>>13,3266489909),4294967296*(2097151&i)+(n>>>0)}const Um=(...t)=>Dm(t);function*Om(t,e=!1){for(const n in t){if(!0===n.startsWith("_"))continue;const i=t[n];if(!0===Array.isArray(i))for(let t=0;t<i.length;t++){const r=i[t];r&&(!0===r.isNode||e&&"function"==typeof r.toJSON)&&(yield{property:n,index:t,childNode:r})}else if(i&&!0===i.isNode)yield{property:n,childNode:i};else if("object"==typeof i)for(const t in i){const r=i[t];r&&(!0===r.isNode||e&&"function"==typeof r.toJSON)&&(yield{property:n,index:t,childNode:r})}}}function Fm(t){if(null==t)return null;const e=typeof t;return!0===t.isNode?"node":"number"===e?"float":"boolean"===e?"bool":"string"===e?"string":"function"===e?"shader":!0===t.isVector2?"vec2":!0===t.isVector3?"vec3":!0===t.isVector4?"vec4":!0===t.isMatrix3?"mat3":!0===t.isMatrix4?"mat4":!0===t.isColor?"color":t instanceof ArrayBuffer?"ArrayBuffer":null}function Bm(t,...e){const n=t?t.slice(-4):void 0;return 1===e.length&&("vec2"===n?e=[e[0],e[0]]:"vec3"===n?e=[e[0],e[0],e[0]]:"vec4"===n&&(e=[e[0],e[0],e[0],e[0]])),"color"===t?new vm(...e):"vec2"===n?new Nm(...e):"vec3"===n?new Mm(...e):"vec4"===n?new km(...e):"mat3"===n?new hm(...e):"mat4"===n?new Em(...e):"bool"===t?e[0]||!1:"float"===t||"int"===t||"uint"===t?e[0]||0:"string"===t?e[0]||"":"ArrayBuffer"===t?(i=e[0],Uint8Array.from(atob(i),(t=>t.charCodeAt(0))).buffer):null;var i}class Vm{addEventListener(t,e){void 0===this._listeners&&(this._listeners={});const n=this._listeners;void 0===n[t]&&(n[t]=[]),-1===n[t].indexOf(e)&&n[t].push(e)}hasEventListener(t,e){if(void 0===this._listeners)return!1;const n=this._listeners;return void 0!==n[t]&&-1!==n[t].indexOf(e)}removeEventListener(t,e){if(void 0===this._listeners)return;const n=this._listeners[t];if(void 0!==n){const t=n.indexOf(e);-1!==t&&n.splice(t,1)}}dispatchEvent(t){if(void 0===this._listeners)return;const e=this._listeners[t.type];if(void 0!==e){t.target=this;const n=e.slice(0);for(let e=0,i=n.length;e<i;e++)n[e].call(this,t);t.target=null}}}let Hm=0;class Gm extends Vm{static get type(){return"Node"}constructor(t=null){super(),this.nodeType=t,this.updateType=Fd,this.updateBeforeType=Fd,this.updateAfterType=Fd,this.uuid=em.generateUUID(),this.version=0,this.global=!1,this.isNode=!0,this._cacheKey=null,this._cacheKeyVersion=0,Object.defineProperty(this,"id",{value:Hm++})}set needsUpdate(t){!0===t&&this.version++}get type(){return this.constructor.type}onUpdate(t,e){return this.updateType=e,this.update=t.bind(this.getSelf()),this}onFrameUpdate(t){return this.onUpdate(t,Bd)}onRenderUpdate(t){return this.onUpdate(t,Vd)}onObjectUpdate(t){return this.onUpdate(t,Hd)}onReference(t){return this.updateReference=t.bind(this.getSelf()),this}getSelf(){return this.self||this}updateReference(){return this}isGlobal(){return this.global}*getChildren(){for(const{childNode:t}of Om(this))yield t}dispose(){this.dispatchEvent({type:"dispose"})}traverse(t){t(this);for(const e of this.getChildren())e.traverse(t)}getCacheKey(t=!1){return!0!==(t=t||this.version!==this._cacheKeyVersion)&&null!==this._cacheKey||(this._cacheKey=Um(function(t,e=!1){const n=[];!0===t.isNode&&(n.push(t.id),t=t.getSelf());for(const{property:i,childNode:r}of Om(t))n.push(n,Dm(i.slice(0,-4)),r.getCacheKey(e));return Dm(n)}(this,t),this.customCacheKey()),this._cacheKeyVersion=this.version),this._cacheKey}customCacheKey(){return 0}getScope(){return this}getHash(){return this.uuid}getUpdateType(){return this.updateType}getUpdateBeforeType(){return this.updateBeforeType}getUpdateAfterType(){return this.updateAfterType}getElementType(t){const e=this.getNodeType(t);return t.getElementType(e)}getNodeType(t){const e=t.getNodeProperties(this);return e.outputNode?e.outputNode.getNodeType(t):this.nodeType}getShared(t){const e=this.getHash(t);return t.getNodeFromHash(e)||this}setup(t){const e=t.getNodeProperties(this);let n=0;for(const i of this.getChildren())e["node"+n++]=i;return e.outputNode||null}analyze(t){if(1===t.increaseUsage(this)){const e=t.getNodeProperties(this);for(const n of Object.values(e))n&&!0===n.isNode&&n.build(t)}}generate(t,e){const{outputNode:n}=t.getNodeProperties(this);if(n&&!0===n.isNode)return n.build(t,e)}updateBefore(){console.warn("Abstract function.")}updateAfter(){console.warn("Abstract function.")}update(){console.warn("Abstract function.")}build(t,e=null){const n=this.getShared(t);if(this!==n)return n.build(t,e);t.addNode(this),t.addChain(this);let i=null;const r=t.getBuildStage();if("setup"===r){this.updateReference(t);const e=t.getNodeProperties(this);if(!0!==e.initialized){e.initialized=!0;const n=this.setup(t),i=n&&!0===n.isNode;for(const r of Object.values(e))r&&!0===r.isNode&&r.build(t);i&&n.build(t),e.outputNode=n}}else if("analyze"===r)this.analyze(t);else if("generate"===r){if(1===this.generate.length){const n=this.getNodeType(t),r=t.getDataFromNode(this);i=r.snippet,void 0===i?(i=this.generate(t)||"",r.snippet=i):void 0!==r.flowCodes&&void 0!==t.context.nodeBlock&&t.addFlowCodeHierarchy(this,t.context.nodeBlock),i=t.format(i,n,e)}else i=this.generate(t,e)||""}return t.removeChain(this),t.addSequentialNode(this),i}getSerializeChildren(){return Om(this)}serialize(t){const e=this.getSerializeChildren(),n={};for(const{property:i,index:r,childNode:s}of e)void 0!==r?(void 0===n[i]&&(n[i]=Number.isInteger(r)?[]:{}),n[i][r]=s.toJSON(t.meta).uuid):n[i]=s.toJSON(t.meta).uuid;Object.keys(n).length>0&&(t.inputNodes=n)}deserialize(t){if(void 0!==t.inputNodes){const e=t.meta.nodes;for(const n in t.inputNodes)if(Array.isArray(t.inputNodes[n])){const i=[];for(const r of t.inputNodes[n])i.push(e[r]);this[n]=i}else if("object"==typeof t.inputNodes[n]){const i={};for(const r in t.inputNodes[n]){const s=t.inputNodes[n][r];i[r]=e[s]}this[n]=i}else{const i=t.inputNodes[n];this[n]=e[i]}}}toJSON(t){const{uuid:e,type:n}=this,i=void 0===t||"string"==typeof t;i&&(t={textures:{},images:{},nodes:{}});let r=t.nodes[e];function s(t){const e=[];for(const n in t){const i=t[n];delete i.metadata,e.push(i)}return e}if(void 0===r&&(r={uuid:e,type:n,meta:t,metadata:{version:4.6,type:"Node",generator:"Node.toJSON"}},!0!==i&&(t.nodes[r.uuid]=r),this.serialize(r),delete r.meta),i){const e=s(t.textures),n=s(t.images),i=s(t.nodes);e.length>0&&(r.textures=e),n.length>0&&(r.images=n),i.length>0&&(r.nodes=i)}return r}}class Wm extends Gm{static get type(){return"ArrayElementNode"}constructor(t,e){super(),this.node=t,this.indexNode=e,this.isArrayElementNode=!0}getNodeType(t){return this.node.getElementType(t)}generate(t){return`${this.node.build(t)}[ ${this.indexNode.build(t,"uint")} ]`}}class jm extends Gm{static get type(){return"ConvertNode"}constructor(t,e){super(),this.node=t,this.convertTo=e}getNodeType(t){const e=this.node.getNodeType(t);let n=null;for(const i of this.convertTo.split("|"))null!==n&&t.getTypeLength(e)!==t.getTypeLength(i)||(n=i);return n}serialize(t){super.serialize(t),t.convertTo=this.convertTo}deserialize(t){super.deserialize(t),this.convertTo=t.convertTo}generate(t,e){const n=this.node,i=this.getNodeType(t),r=n.build(t,i);return t.format(r,i,e)}}class Xm extends Gm{static get type(){return"TempNode"}constructor(t=null){super(t),this.isTempNode=!0}hasDependencies(t){return t.getDataFromNode(this).usageCount>1}build(t,e){if("generate"===t.getBuildStage()){const n=t.getVectorType(this.getNodeType(t,e)),i=t.getDataFromNode(this);if(void 0!==i.propertyName)return t.format(i.propertyName,n,e);if("void"!==n&&"void"!==e&&this.hasDependencies(t)){const r=super.build(t,n),s=t.getVarFromNode(this,null,n),a=t.getPropertyName(s);return t.addLineFlowCode(`${a} = ${r}`,this),i.snippet=r,i.propertyName=a,t.format(i.propertyName,n,e)}}return super.build(t,e)}}class Ym extends Xm{static get type(){return"JoinNode"}constructor(t=[],e=null){super(e),this.nodes=t}getNodeType(t){return null!==this.nodeType?t.getVectorType(this.nodeType):t.getTypeFromLength(this.nodes.reduce(((e,n)=>e+t.getTypeLength(n.getNodeType(t))),0))}generate(t,e){const n=this.getNodeType(t),i=this.nodes,r=t.getComponentType(n),s=[];for(const o of i){let e=o.build(t);const n=t.getComponentType(o.getNodeType(t));n!==r&&(e=t.format(e,n,r)),s.push(e)}const a=`${t.getType(n)}( ${s.join(", ")} )`;return t.format(a,n,e)}}const Zm=Gd.join("");class Jm extends Gm{static get type(){return"SplitNode"}constructor(t,e="x"){super(),this.node=t,this.components=e,this.isSplitNode=!0}getVectorLength(){let t=this.components.length;for(const e of this.components)t=Math.max(Gd.indexOf(e)+1,t);return t}getComponentType(t){return t.getComponentType(this.node.getNodeType(t))}getNodeType(t){return t.getTypeFromLength(this.components.length,this.getComponentType(t))}generate(t,e){const n=this.node,i=t.getTypeLength(n.getNodeType(t));let r=null;if(i>1){let s=null;this.getVectorLength()>=i&&(s=t.getTypeFromLength(this.getVectorLength(),this.getComponentType(t)));const a=n.build(t,s);r=this.components.length===i&&this.components===Zm.slice(0,this.components.length)?t.format(a,s,e):t.format(`${a}.${this.components}`,this.getNodeType(t),e)}else r=n.build(t,e);return r}serialize(t){super.serialize(t),t.components=this.components}deserialize(t){super.deserialize(t),this.components=t.components}}class $m extends Xm{static get type(){return"SetNode"}constructor(t,e,n){super(),this.sourceNode=t,this.components=e,this.targetNode=n}getNodeType(t){return this.sourceNode.getNodeType(t)}generate(t){const{sourceNode:e,components:n,targetNode:i}=this,r=this.getNodeType(t),s=t.getComponentType(i.getNodeType(t)),a=t.getTypeFromLength(n.length,s),o=i.build(t,a),l=e.build(t,r),h=t.getTypeLength(r),c=[];for(let q=0;q<h;q++){const t=Gd[q];t===n[0]?(c.push(o),q+=n.length-1):c.push(l+"."+t)}return`${t.getType(r)}( ${c.join(", ")} )`}}class Km extends Xm{static get type(){return"FlipNode"}constructor(t,e){super(),this.sourceNode=t,this.components=e}getNodeType(t){return this.sourceNode.getNodeType(t)}generate(t){const{components:e,sourceNode:n}=this,i=this.getNodeType(t),r=n.build(t),s=t.getVarFromNode(this),a=t.getPropertyName(s);t.addLineFlowCode(a+" = "+r,this);const o=t.getTypeLength(i),l=[];let h=0;for(let c=0;c<o;c++){const t=Gd[c];t===e[h]?(l.push("1.0 - "+a+"."+t),h++):l.push(a+"."+t)}return`${t.getType(i)}( ${l.join(", ")} )`}}class Qm extends Gm{static get type(){return"InputNode"}constructor(t,e=null){super(e),this.isInputNode=!0,this.value=t,this.precision=null}getNodeType(){return null===this.nodeType?Fm(this.value):this.nodeType}getInputType(t){return this.getNodeType(t)}setPrecision(t){return this.precision=t,this}serialize(t){super.serialize(t),t.value=this.value,this.value&&this.value.toArray&&(t.value=this.value.toArray()),t.valueType=Fm(this.value),t.nodeType=this.nodeType,"ArrayBuffer"===t.valueType&&(t.value=function(t){let e="";const n=new Uint8Array(t);for(let i=0;i<n.length;i++)e+=String.fromCharCode(n[i]);return btoa(e)}(t.value)),t.precision=this.precision}deserialize(t){super.deserialize(t),this.nodeType=t.nodeType,this.value=Array.isArray(t.value)?Bm(t.valueType,...t.value):t.value,this.precision=t.precision||null,this.value&&this.value.fromArray&&(this.value=this.value.fromArray(t.value))}generate(){console.warn("Abstract function.")}}class tp extends Qm{static get type(){return"ConstNode"}constructor(t,e=null){super(t,e),this.isConstNode=!0}generateConst(t){return t.generateConst(this.getNodeType(t),this.value)}generate(t,e){const n=this.getNodeType(t);return t.format(this.generateConst(t),n,e)}}const ep=new Map;function np(t,e){if(ep.has(t))console.warn(`Redefinition of method chaining ${t}`);else{if("function"!=typeof e)throw new Error(`Node element ${t} is not a function`);ep.set(t,e)}}const ip=t=>t.replace(/r|s/g,"x").replace(/g|t/g,"y").replace(/b|p/g,"z").replace(/a|q/g,"w"),rp=t=>ip(t).split("").sort().join(""),sp={setup(t,e){const n=e.shift();return t(Ep(n),...e)},get(t,e,n){if("string"==typeof e&&void 0===t[e]){if(!0!==t.isStackNode&&"assign"===e)return(...t)=>(null.assign(n,...t),n);if(ep.has(e)){const i=ep.get(e);return t.isStackNode?(...t)=>n.add(i(...t)):(...t)=>i(n,...t)}if("self"===e)return t;if(e.endsWith("Assign")&&ep.has(e.slice(0,e.length-6))){const i=ep.get(e.slice(0,e.length-6));return t.isStackNode?(...t)=>n.assign(t[0],i(...t)):(...t)=>n.assign(i(n,...t))}if(!0===/^[xyzwrgbastpq]{1,4}$/.test(e))return e=ip(e),Tp(new Jm(n,e));if(!0===/^set[XYZWRGBASTPQ]{1,4}$/.test(e))return e=rp(e.slice(3).toLowerCase()),n=>Tp(new $m(t,e,n));if(!0===/^flip[XYZWRGBASTPQ]{1,4}$/.test(e))return e=rp(e.slice(4).toLowerCase()),()=>Tp(new Km(Tp(t),e));if("width"===e||"height"===e||"depth"===e)return"width"===e?e="x":"height"===e?e="y":"depth"===e&&(e="z"),Tp(new Jm(t,e));if(!0===/^\d+$/.test(e))return Tp(new Wm(n,new tp(Number(e),"uint")))}return Reflect.get(t,e,n)},set:(t,e,n,i)=>"string"!=typeof e||void 0!==t[e]||!0!==/^[xyzwrgbastpq]{1,4}$/.test(e)&&"width"!==e&&"height"!==e&&"depth"!==e&&!0!==/^\d+$/.test(e)?Reflect.set(t,e,n,i):(i[e].assign(n),!0)},ap=new WeakMap,op=new WeakMap,lp=function(t,e=null){for(const n in t)t[n]=Tp(t[n],e);return t},hp=function(t,e=null){const n=t.length;for(let i=0;i<n;i++)t[i]=Tp(t[i],e);return t},cp=function(t,e=null,n=null,i=null){const r=t=>Tp(null!==i?Object.assign(t,i):t);return null===e?(...e)=>r(new t(...Ap(e))):null!==n?(n=Tp(n),(...i)=>r(new t(e,...Ap(i),n))):(...n)=>r(new t(e,...Ap(n)))};class qp extends Gm{constructor(t,e){super(),this.shaderNode=t,this.inputNodes=e}getNodeType(t){return this.shaderNode.nodeType||this.getOutputNode(t).getNodeType(t)}call(t){const{shaderNode:e,inputNodes:n}=this,i=t.getNodeProperties(e);if(i.onceOutput)return i.onceOutput;let r=null;if(e.layout){let i=op.get(t.constructor);void 0===i&&(i=new WeakMap,op.set(t.constructor,i));let s=i.get(e);void 0===s&&(s=Tp(t.buildFunctionNode(e)),i.set(e,s)),null!==t.currentFunctionNode&&t.currentFunctionNode.includes.push(s),r=Tp(s.call(n))}else{const i=e.jsFunc,s=null!==n?i(n,t):i(t);r=Tp(s)}return e.once&&(i.onceOutput=r),r}getOutputNode(t){const e=t.getNodeProperties(this);return null===e.outputNode&&(e.outputNode=this.setupOutput(t)),e.outputNode}setup(t){return this.getOutputNode(t)}setupOutput(t){return t.addStack(),t.stack.outputNode=this.call(t),t.removeStack()}generate(t,e){return this.getOutputNode(t).build(t,e)}}class up extends Gm{constructor(t,e){super(e),this.jsFunc=t,this.layout=null,this.global=!0,this.once=!1}setLayout(t){return this.layout=t,this}call(t=null){return Ep(t),Tp(new qp(this,t))}setup(){return this.call()}}const dp=[!1,!0],mp=[0,1,2,3],pp=[-1,-2],fp=[.5,1.5,1/3,1e-6,1e6,Math.PI,2*Math.PI,1/Math.PI,2/Math.PI,1/(2*Math.PI),Math.PI/2],gp=new Map;for(const r_ of dp)gp.set(r_,new tp(r_));const xp=new Map;for(const r_ of mp)xp.set(r_,new tp(r_,"uint"));const _p=new Map([...xp].map((t=>new tp(t.value,"int"))));for(const r_ of pp)_p.set(r_,new tp(r_,"int"));const yp=new Map([..._p].map((t=>new tp(t.value))));for(const r_ of fp)yp.set(r_,new tp(r_));for(const r_ of fp)yp.set(-r_,new tp(-r_));const vp={bool:gp,uint:xp,ints:_p,float:yp},wp=new Map([...gp,...yp]),bp=(t,e)=>wp.has(t)?wp.get(t):!0===t.isNode?t:new tp(t,e),Mp=function(t,e=null){return(...n)=>{if((0===n.length||!["bool","float","int","uint"].includes(t)&&n.every((t=>"object"!=typeof t)))&&(n=[Bm(t,...n)]),1===n.length&&null!==e&&e.has(n[0]))return Tp(e.get(n[0]));if(1===n.length){const e=bp(n[0],t);return(t=>{try{return t.getNodeType()}catch(e){return}})(e)===t?Tp(e):Tp(new jm(e,t))}const i=n.map((t=>bp(t)));return Tp(new Ym(i,t))}};function Sp(t,e){return new Proxy(new up(t,e),sp)}const Tp=(t,e=null)=>function(t,e=null){const n=Fm(t);if("node"===n){let e=ap.get(t);return void 0===e&&(e=new Proxy(t,sp),ap.set(t,e),ap.set(e,e)),e}return null===e&&("float"===n||"boolean"===n)||n&&"shader"!==n&&"string"!==n?Tp(bp(t,e)):"shader"===n?Rp(t):t}(t,e),Ep=(t,e=null)=>new lp(t,e),Ap=(t,e=null)=>new hp(t,e),Cp=(...t)=>new cp(...t),Rp=(t,e)=>{const n=new Sp(t,e),i=(...t)=>{let e;return Ep(t),e=t[0]&&t[0].isNode?[...t]:t[0],n.call(e)};return i.shaderNode=n,i.setLayout=t=>(n.setLayout(t),i),i.once=()=>(n.once=!0,i),i};np("toGlobal",(t=>(t.global=!0,t))),np("append",(function(t){return t}));const zp=new Mp("color"),Ip=new Mp("float",vp.float),Pp=new Mp("int",vp.ints),Lp=new Mp("uint",vp.uint),Np=new Mp("bool",vp.bool),kp=new Mp("vec2"),Dp=new Mp("ivec2"),Up=new Mp("uvec2"),Op=new Mp("bvec2"),Fp=new Mp("vec3"),Bp=new Mp("ivec3"),Vp=new Mp("uvec3"),Hp=new Mp("bvec3"),Gp=new Mp("vec4"),Wp=new Mp("ivec4"),jp=new Mp("uvec4"),Xp=new Mp("bvec4"),Yp=new Mp("mat2"),Zp=new Mp("mat3"),Jp=new Mp("mat4");np("toColor",zp),np("toFloat",Ip),np("toInt",Pp),np("toUint",Lp),np("toBool",Np),np("toVec2",kp),np("toIVec2",Dp),np("toUVec2",Up),np("toBVec2",Op),np("toVec3",Fp),np("toIVec3",Bp),np("toUVec3",Vp),np("toBVec3",Hp),np("toVec4",Gp),np("toIVec4",Wp),np("toUVec4",jp),np("toBVec4",Xp),np("toMat2",Yp),np("toMat3",Zp),np("toMat4",Jp);np("element",Cp(Wm)),np("convert",((t,e)=>Tp(new jm(Tp(t),e))));class $p extends Gm{static get type(){return"UniformGroupNode"}constructor(t,e=!1,n=1){super("string"),this.name=t,this.shared=e,this.order=n,this.isUniformGroup=!0}serialize(t){super.serialize(t),t.name=this.name,t.version=this.version,t.shared=this.shared}deserialize(t){super.deserialize(t),this.name=t.name,this.version=t.version,this.shared=t.shared}}const Kp=t=>new $p(t),Qp=((t,e=0)=>new $p(t,!0,e))("render"),tf=Kp("object");class ef extends Qm{static get type(){return"UniformNode"}constructor(t,e=null){super(t,e),this.isUniformNode=!0,this.name="",this.groupNode=tf}label(t){return this.name=t,this}setGroup(t){return this.groupNode=t,this}getGroup(){return this.groupNode}getUniformHash(t){return this.getHash(t)}onUpdate(t,e){const n=this.getSelf();return t=t.bind(n),super.onUpdate((e=>{const i=t(e,n);void 0!==i&&(this.value=i)}),e)}generate(t,e){const n=this.getNodeType(t),i=this.getUniformHash(t);let r=t.getNodeFromHash(i);void 0===r&&(t.setHashNode(this,i),r=this);const s=r.getInputType(t),a=t.getUniformFromNode(r,s,t.shaderStage,this.name||t.context.label),o=t.getPropertyName(a);return void 0!==t.context.label&&delete t.context.label,t.format(o,n,e)}}class nf extends Gm{static get type(){return"PropertyNode"}constructor(t,e=null,n=!1){super(t),this.name=e,this.varying=n,this.isPropertyNode=!0}getHash(t){return this.name||super.getHash(t)}isGlobal(){return!0}generate(t){let e;return!0===this.varying?(e=t.getVaryingFromNode(this,this.name),e.needsInterpolation=!0):e=t.getVarFromNode(this,this.name),t.getPropertyName(e)}}class rf extends Xm{static get type(){return"AssignNode"}constructor(t,e){super(),this.targetNode=t,this.sourceNode=e}hasDependencies(){return!1}getNodeType(t,e){return"void"!==e?this.targetNode.getNodeType(t):"void"}needsSplitAssign(t){const{targetNode:e}=this;if(!1===t.isAvailable("swizzleAssign")&&e.isSplitNode&&e.components.length>1){const n=t.getTypeLength(e.node.getNodeType(t));return Gd.join("").slice(0,n)!==e.components}return!1}generate(t,e){const{targetNode:n,sourceNode:i}=this,r=this.needsSplitAssign(t),s=n.getNodeType(t),a=n.context({assign:!0}).build(t),o=i.build(t,s),l=i.getNodeType(t),h=t.getDataFromNode(this);let c;if(!0===h.initialized)"void"!==e&&(c=a);else if(r){const i=t.getVarFromNode(this,null,s),r=t.getPropertyName(i);t.addLineFlowCode(`${r} = ${o}`,this);const l=n.node.context({assign:!0}).build(t);for(let e=0;e<n.components.length;e++){const i=n.components[e];t.addLineFlowCode(`${l}.${i} = ${r}[ ${e} ]`,this)}"void"!==e&&(c=a)}else c=`${a} = ${o}`,"void"!==e&&"void"!==l||(t.addLineFlowCode(c,this),"void"!==e&&(c=a));return h.initialized=!0,t.format(c,s,e)}}np("assign",Cp(rf));class sf extends Xm{static get type(){return"FunctionCallNode"}constructor(t=null,e={}){super(),this.functionNode=t,this.parameters=e}setParameters(t){return this.parameters=t,this}getParameters(){return this.parameters}getNodeType(t){return this.functionNode.getNodeType(t)}generate(t){const e=[],n=this.functionNode,i=n.getInputs(t),r=this.parameters,s=(e,n)=>{const i=n.type;let r;return r="pointer"===i?"&"+e.build(t):e.build(t,i),r};if(Array.isArray(r))for(let a=0;a<r.length;a++)e.push(s(r[a],i[a]));else for(const a of i){const t=r[a.name];if(void 0===t)throw new Error(`FunctionCallNode: Input '${a.name}' not found in FunctionNode.`);e.push(s(t,a))}return`${n.build(t,"property")}( ${e.join(", ")} )`}}np("call",((t,...e)=>(e=e.length>1||e[0]&&!0===e[0].isNode?Ap(e):Ep(e[0]),Tp(new sf(Tp(t),e)))));class af extends Xm{static get type(){return"OperatorNode"}constructor(t,e,n,...i){if(super(),i.length>0){let r=new af(t,e,n);for(let e=0;e<i.length-1;e++)r=new af(t,r,i[e]);e=r,n=i[i.length-1]}this.op=t,this.aNode=e,this.bNode=n}getNodeType(t,e){const n=this.op,i=this.aNode,r=this.bNode,s=i.getNodeType(t),a=void 0!==r?r.getNodeType(t):null;if("void"===s||"void"===a)return"void";if("%"===n)return s;if("~"===n||"&"===n||"|"===n||"^"===n||">>"===n||"<<"===n)return t.getIntegerType(s);if("!"===n||"=="===n||"&&"===n||"||"===n||"^^"===n)return"bool";if("<"===n||">"===n||"<="===n||">="===n){const n=e?t.getTypeLength(e):Math.max(t.getTypeLength(s),t.getTypeLength(a));return n>1?`bvec${n}`:"bool"}return"float"===s&&t.isMatrix(a)?a:t.isMatrix(s)&&t.isVector(a)?t.getVectorFromMatrix(s):t.isVector(s)&&t.isMatrix(a)?t.getVectorFromMatrix(a):t.getTypeLength(a)>t.getTypeLength(s)?a:s}generate(t,e){const n=this.op,i=this.aNode,r=this.bNode,s=this.getNodeType(t,e);let a=null,o=null;"void"!==s?(a=i.getNodeType(t),o=void 0!==r?r.getNodeType(t):null,"<"===n||">"===n||"<="===n||">="===n||"=="===n?t.isVector(a)?o=a:a!==o&&(a=o="float"):">>"===n||"<<"===n?(a=s,o=t.changeComponentType(o,"uint")):t.isMatrix(a)&&t.isVector(o)?o=t.getVectorFromMatrix(a):a=t.isVector(a)&&t.isMatrix(o)?t.getVectorFromMatrix(o):o=s):a=o=s;const l=i.build(t,a),h=void 0!==r?r.build(t,o):null,c=t.getTypeLength(e),q=t.getFunctionOperator(n);return"void"!==e?"<"===n&&c>1?t.useComparisonMethod?t.format(`${t.getMethod("lessThan",e)}( ${l}, ${h} )`,s,e):t.format(`( ${l} < ${h} )`,s,e):"<="===n&&c>1?t.useComparisonMethod?t.format(`${t.getMethod("lessThanEqual",e)}( ${l}, ${h} )`,s,e):t.format(`( ${l} <= ${h} )`,s,e):">"===n&&c>1?t.useComparisonMethod?t.format(`${t.getMethod("greaterThan",e)}( ${l}, ${h} )`,s,e):t.format(`( ${l} > ${h} )`,s,e):">="===n&&c>1?t.useComparisonMethod?t.format(`${t.getMethod("greaterThanEqual",e)}( ${l}, ${h} )`,s,e):t.format(`( ${l} >= ${h} )`,s,e):"!"===n||"~"===n?t.format(`(${n}${l})`,a,e):q?t.format(`${q}( ${l}, ${h} )`,s,e):t.format(`( ${l} ${n} ${h} )`,s,e):"void"!==a?q?t.format(`${q}( ${l}, ${h} )`,s,e):t.format(`${l} ${n} ${h}`,s,e):void 0}serialize(t){super.serialize(t),t.op=this.op}deserialize(t){super.deserialize(t),this.op=t.op}}const of=Cp(af,"+"),lf=Cp(af,"-"),hf=Cp(af,"*"),cf=Cp(af,"/"),qf=Cp(af,"%"),uf=Cp(af,"=="),df=Cp(af,"!="),mf=Cp(af,"<"),pf=Cp(af,">"),ff=Cp(af,"<="),gf=Cp(af,">="),xf=Cp(af,"&&"),_f=Cp(af,"||"),yf=Cp(af,"!"),vf=Cp(af,"^^"),wf=Cp(af,"&"),bf=Cp(af,"~"),Mf=Cp(af,"|"),Sf=Cp(af,"^"),Tf=Cp(af,"<<"),Ef=Cp(af,">>");np("add",of),np("sub",lf),np("mul",hf),np("div",cf),np("modInt",qf),np("equal",uf),np("notEqual",df),np("lessThan",mf),np("greaterThan",pf),np("lessThanEqual",ff),np("greaterThanEqual",gf),np("and",xf),np("or",_f),np("not",yf),np("xor",vf),np("bitAnd",wf),np("bitNot",bf),np("bitOr",Mf),np("bitXor",Sf),np("shiftLeft",Tf),np("shiftRight",Ef);np("remainder",((...t)=>(console.warn("TSL.OperatorNode: .remainder() has been renamed to .modInt()."),qf(...t))));class Af extends Xm{static get type(){return"MathNode"}constructor(t,e,n=null,i=null){super(),this.method=t,this.aNode=e,this.bNode=n,this.cNode=i}getInputType(t){const e=this.aNode.getNodeType(t),n=this.bNode?this.bNode.getNodeType(t):null,i=this.cNode?this.cNode.getNodeType(t):null,r=t.isMatrix(e)?0:t.getTypeLength(e),s=t.isMatrix(n)?0:t.getTypeLength(n),a=t.isMatrix(i)?0:t.getTypeLength(i);return r>s&&r>a?e:s>a?n:a>r?i:e}getNodeType(t){const e=this.method;return e===Af.LENGTH||e===Af.DISTANCE||e===Af.DOT?"float":e===Af.CROSS?"vec3":e===Af.ALL?"bool":e===Af.EQUALS?t.changeComponentType(this.aNode.getNodeType(t),"bool"):e===Af.MOD?this.aNode.getNodeType(t):this.getInputType(t)}generate(t,e){let n=this.method;const i=this.getNodeType(t),r=this.getInputType(t),s=this.aNode,a=this.bNode,o=this.cNode,l=t.renderer.coordinateSystem;if(n===Af.TRANSFORM_DIRECTION){let n=s,i=a;t.isMatrix(n.getNodeType(t))?i=Gp(Fp(i),0):n=Gp(Fp(n),0);const r=hf(n,i).xyz;return Vf(r).build(t,e)}if(n===Af.NEGATE)return t.format("( - "+s.build(t,r)+" )",i,e);if(n===Af.ONE_MINUS)return lf(1,s).build(t,e);if(n===Af.RECIPROCAL)return cf(1,s).build(t,e);if(n===Af.DIFFERENCE)return Jf(lf(s,a)).build(t,e);{const h=[];return n===Af.CROSS||n===Af.MOD?h.push(s.build(t,i),a.build(t,i)):l===om&&n===Af.STEP?h.push(s.build(t,1===t.getTypeLength(s.getNodeType(t))?"float":r),a.build(t,r)):l===om&&(n===Af.MIN||n===Af.MAX)||n===Af.MOD?h.push(s.build(t,r),a.build(t,1===t.getTypeLength(a.getNodeType(t))?"float":r)):n===Af.REFRACT?h.push(s.build(t,r),a.build(t,r),o.build(t,"float")):n===Af.MIX?h.push(s.build(t,r),a.build(t,r),o.build(t,1===t.getTypeLength(o.getNodeType(t))?"float":r)):(l===lm&&n===Af.ATAN&&null!==a&&(n="atan2"),h.push(s.build(t,r)),null!==a&&h.push(a.build(t,r)),null!==o&&h.push(o.build(t,r))),t.format(`${t.getMethod(n,i)}( ${h.join(", ")} )`,i,e)}}serialize(t){super.serialize(t),t.method=this.method}deserialize(t){super.deserialize(t),this.method=t.method}}Af.ALL="all",Af.ANY="any",Af.RADIANS="radians",Af.DEGREES="degrees",Af.EXP="exp",Af.EXP2="exp2",Af.LOG="log",Af.LOG2="log2",Af.SQRT="sqrt",Af.INVERSE_SQRT="inversesqrt",Af.FLOOR="floor",Af.CEIL="ceil",Af.NORMALIZE="normalize",Af.FRACT="fract",Af.SIN="sin",Af.COS="cos",Af.TAN="tan",Af.ASIN="asin",Af.ACOS="acos",Af.ATAN="atan",Af.ABS="abs",Af.SIGN="sign",Af.LENGTH="length",Af.NEGATE="negate",Af.ONE_MINUS="oneMinus",Af.DFDX="dFdx",Af.DFDY="dFdy",Af.ROUND="round",Af.RECIPROCAL="reciprocal",Af.TRUNC="trunc",Af.FWIDTH="fwidth",Af.TRANSPOSE="transpose",Af.BITCAST="bitcast",Af.EQUALS="equals",Af.MIN="min",Af.MAX="max",Af.MOD="mod",Af.STEP="step",Af.REFLECT="reflect",Af.DISTANCE="distance",Af.DIFFERENCE="difference",Af.DOT="dot",Af.CROSS="cross",Af.POW="pow",Af.TRANSFORM_DIRECTION="transformDirection",Af.MIX="mix",Af.CLAMP="clamp",Af.REFRACT="refract",Af.SMOOTHSTEP="smoothstep",Af.FACEFORWARD="faceforward";const Cf=Ip(Math.PI),Rf=Cp(Af,Af.ALL),zf=Cp(Af,Af.ANY),If=Cp(Af,Af.RADIANS),Pf=Cp(Af,Af.DEGREES),Lf=Cp(Af,Af.EXP),Nf=Cp(Af,Af.EXP2),kf=Cp(Af,Af.LOG),Df=Cp(Af,Af.LOG2),Uf=Cp(Af,Af.SQRT),Of=Cp(Af,Af.INVERSE_SQRT),Ff=Cp(Af,Af.FLOOR),Bf=Cp(Af,Af.CEIL),Vf=Cp(Af,Af.NORMALIZE),Hf=Cp(Af,Af.FRACT),Gf=Cp(Af,Af.SIN),Wf=Cp(Af,Af.COS),jf=Cp(Af,Af.TAN),Xf=Cp(Af,Af.ASIN),Yf=Cp(Af,Af.ACOS),Zf=Cp(Af,Af.ATAN),Jf=Cp(Af,Af.ABS),$f=Cp(Af,Af.SIGN),Kf=Cp(Af,Af.LENGTH),Qf=Cp(Af,Af.NEGATE),tg=Cp(Af,Af.ONE_MINUS),eg=Cp(Af,Af.DFDX),ng=Cp(Af,Af.DFDY),ig=Cp(Af,Af.ROUND),rg=Cp(Af,Af.RECIPROCAL),sg=Cp(Af,Af.TRUNC),ag=Cp(Af,Af.FWIDTH),og=Cp(Af,Af.TRANSPOSE);Af.BITCAST;const lg=Cp(Af,Af.EQUALS),hg=Cp(Af,Af.MIN),cg=Cp(Af,Af.MAX),qg=Cp(Af,Af.MOD),ug=Cp(Af,Af.STEP),dg=Cp(Af,Af.REFLECT),mg=Cp(Af,Af.DISTANCE),pg=Cp(Af,Af.DIFFERENCE),fg=Cp(Af,Af.DOT),gg=Cp(Af,Af.CROSS),xg=Cp(Af,Af.POW),_g=Cp(Af,Af.POW,2),yg=Cp(Af,Af.POW,3),vg=Cp(Af,Af.POW,4),wg=Cp(Af,Af.TRANSFORM_DIRECTION),bg=Cp(Af,Af.MIX),Mg=(t,e=0,n=1)=>Tp(new Af(Af.CLAMP,Tp(t),Tp(e),Tp(n))),Sg=Cp(Af,Af.REFRACT),Tg=Cp(Af,Af.SMOOTHSTEP),Eg=Cp(Af,Af.FACEFORWARD),Ag=Rp((([t])=>{const e=fg(t.xy,kp(12.9898,78.233)),n=qg(e,Cf);return Hf(Gf(n).mul(43758.5453))}));np("all",Rf),np("any",zf),np("equals",lg),np("radians",If),np("degrees",Pf),np("exp",Lf),np("exp2",Nf),np("log",kf),np("log2",Df),np("sqrt",Uf),np("inverseSqrt",Of),np("floor",Ff),np("ceil",Bf),np("normalize",Vf),np("fract",Hf),np("sin",Gf),np("cos",Wf),np("tan",jf),np("asin",Xf),np("acos",Yf),np("atan",Zf),np("abs",Jf),np("sign",$f),np("length",Kf),np("lengthSq",(t=>fg(t,t))),np("negate",Qf),np("oneMinus",tg),np("dFdx",eg),np("dFdy",ng),np("round",ig),np("reciprocal",rg),np("trunc",sg),np("fwidth",ag),np("atan2",((t,e)=>(console.warn('THREE.TSL: "atan2" is overloaded. Use "atan" instead.'),Zf(t,e)))),np("min",hg),np("max",cg),np("mod",qg),np("step",ug),np("reflect",dg),np("distance",mg),np("dot",fg),np("cross",gg),np("pow",xg),np("pow2",_g),np("pow3",yg),np("pow4",vg),np("transformDirection",wg),np("mix",((t,e,n)=>bg(e,n,t))),np("clamp",Mg),np("refract",Sg),np("smoothstep",((t,e,n)=>Tg(e,n,t))),np("faceForward",Eg),np("difference",pg),np("saturate",(t=>Mg(t))),np("cbrt",(t=>hf($f(t),xg(Jf(t),1/3)))),np("transpose",og),np("rand",Ag);class Cg extends Gm{static get type(){return"ConditionalNode"}constructor(t,e,n=null){super(),this.condNode=t,this.ifNode=e,this.elseNode=n}getNodeType(t){const{ifNode:e,elseNode:n}=t.getNodeProperties(this);if(void 0===e)return this.setup(t),this.getNodeType(t);const i=e.getNodeType(t);if(null!==n){const e=n.getNodeType(t);if(t.getTypeLength(e)>t.getTypeLength(i))return e}return i}setup(t){const e=this.condNode.cache(),n=this.ifNode.cache(),i=this.elseNode?this.elseNode.cache():null,r=t.context.nodeBlock;t.getDataFromNode(n).parentNodeBlock=r,null!==i&&(t.getDataFromNode(i).parentNodeBlock=r);const s=t.getNodeProperties(this);s.condNode=e,s.ifNode=n.context({nodeBlock:n}),s.elseNode=i?i.context({nodeBlock:i}):null}generate(t,e){const n=this.getNodeType(t),i=t.getDataFromNode(this);if(void 0!==i.nodeProperty)return i.nodeProperty;const{condNode:r,ifNode:s,elseNode:a}=t.getNodeProperties(this),o="void"!==e,l=o?((t,e)=>Tp(new nf(t,e)))(n).build(t):"";i.nodeProperty=l;const h=r.build(t,"bool");t.addFlowCode(`\n${t.tab}if ( ${h} ) {\n\n`).addFlowTab();let c=s.build(t,n);if(c&&(c=o?l+" = "+c+";":"return "+c+";"),t.removeFlowTab().addFlowCode(t.tab+"\t"+c+"\n\n"+t.tab+"}"),null!==a){t.addFlowCode(" else {\n\n").addFlowTab();let e=a.build(t,n);e&&(e=o?l+" = "+e+";":"return "+e+";"),t.removeFlowTab().addFlowCode(t.tab+"\t"+e+"\n\n"+t.tab+"}\n\n")}else t.addFlowCode("\n\n");return t.format(l,n,e)}}const Rg=Cp(Cg);np("select",Rg);np("cond",((...t)=>(console.warn("TSL.ConditionalNode: cond() has been renamed to select()."),Rg(...t))));class zg extends Gm{static get type(){return"ContextNode"}constructor(t,e={}){super(),this.isContextNode=!0,this.node=t,this.value=e}getScope(){return this.node.getScope()}getNodeType(t){return this.node.getNodeType(t)}analyze(t){this.node.build(t)}setup(t){const e=t.getContext();t.setContext({...t.context,...this.value});const n=this.node.build(t);return t.setContext(e),n}generate(t,e){const n=t.getContext();t.setContext({...t.context,...this.value});const i=this.node.build(t,e);return t.setContext(n),i}}const Ig=Cp(zg);np("context",Ig),np("label",((t,e)=>Ig(t,{label:e})));class Pg extends Gm{static get type(){return"VarNode"}constructor(t,e=null){super(),this.node=t,this.name=e,this.global=!0,this.isVarNode=!0}getHash(t){return this.name||super.getHash(t)}getNodeType(t){return this.node.getNodeType(t)}generate(t){const{node:e,name:n}=this,i=t.getVarFromNode(this,n,t.getVectorType(this.getNodeType(t))),r=t.getPropertyName(i),s=e.build(t,i.type);return t.addLineFlowCode(`${r} = ${s}`,this),r}}const Lg=Cp(Pg);np("toVar",((...t)=>Lg(...t).append()));np("temp",(t=>(console.warn('TSL: "temp" is deprecated. Use ".toVar()" instead.'),Lg(t))));class Ng extends Gm{static get type(){return"VaryingNode"}constructor(t,e=null){super(),this.node=t,this.name=e,this.isVaryingNode=!0}isGlobal(){return!0}getHash(t){return this.name||super.getHash(t)}getNodeType(t){return this.node.getNodeType(t)}setupVarying(t){const e=t.getNodeProperties(this);let n=e.varying;if(void 0===n){const i=this.name,r=this.getNodeType(t);e.varying=n=t.getVaryingFromNode(this,i,r),e.node=this.node}return n.needsInterpolation||(n.needsInterpolation="fragment"===t.shaderStage),n}setup(t){this.setupVarying(t)}analyze(t){return this.setupVarying(t),this.node.analyze(t)}generate(t){const e=t.getNodeProperties(this),n=this.setupVarying(t),i="fragment"===t.shaderStage&&!0===e.reassignPosition&&t.context.needsPositionReassign;if(void 0===e.propertyName||i){const r=this.getNodeType(t),s=t.getPropertyName(n,Od);t.flowNodeFromShaderStage(Od,this.node,r,s),e.propertyName=s,i?e.reassignPosition=!1:void 0===e.reassignPosition&&t.context.isPositionNodeInput&&(e.reassignPosition=!0)}return t.getPropertyName(n)}}const kg=Cp(Ng);np("varying",kg),np("vertexStage",(t=>kg(t)));const Dg=Rp((([t])=>{const e=t.mul(.9478672986).add(.0521327014).pow(2.4),n=t.mul(.0773993808),i=t.lessThanEqual(.04045);return bg(e,n,i)})).setLayout({name:"sRGBTransferEOTF",type:"vec3",inputs:[{name:"color",type:"vec3"}]}),Ug=Rp((([t])=>{const e=t.pow(.41666).mul(1.055).sub(.055),n=t.mul(12.92),i=t.lessThanEqual(.0031308);return bg(e,n,i)})).setLayout({name:"sRGBTransferOETF",type:"vec3",inputs:[{name:"color",type:"vec3"}]}),Og="WorkingColorSpace",Fg="OutputColorSpace";class Bg extends Xm{static get type(){return"ColorSpaceNode"}constructor(t,e,n){super("vec4"),this.colorNode=t,this.source=e,this.target=n}resolveColorSpace(t,e){return e===Og?mm.workingColorSpace:e===Fg?t.context.outputColorSpace||t.renderer.outputColorSpace:e}setup(t){const{colorNode:e}=this,n=this.resolveColorSpace(t,this.source),i=this.resolveColorSpace(t,this.target);let r=e;return!1!==mm.enabled&&n!==i&&n&&i?(mm.getTransfer(n)===sm&&(r=Gp(Dg(r.rgb),r.a)),mm.getPrimaries(n)!==mm.getPrimaries(i)&&(r=Gp(Zp(mm._getMatrix(new hm,n,i)).mul(r.rgb),r.a)),mm.getTransfer(i)===sm&&(r=Gp(Ug(r.rgb),r.a)),r):r}}np("toOutputColorSpace",(t=>Tp(new Bg(Tp(t),Og,Fg)))),np("toWorkingColorSpace",(t=>Tp(new Bg(Tp(t),Fg,Og)))),np("workingToColorSpace",((t,e)=>Tp(new Bg(Tp(t),Og,e)))),np("colorSpaceToWorking",((t,e)=>Tp(new Bg(Tp(t),e,Og))));class Vg extends Wm{static get type(){return"ReferenceElementNode"}constructor(t,e){super(t,e),this.referenceNode=t,this.isReferenceElementNode=!0}getNodeType(){return this.referenceNode.uniformType}generate(t){const e=super.generate(t),n=this.referenceNode.getNodeType(),i=this.getNodeType();return t.format(e,n,i)}}class Hg extends Gm{static get type(){return"ReferenceBaseNode"}constructor(t,e,n=null,i=null){super(),this.property=t,this.uniformType=e,this.object=n,this.count=i,this.properties=t.split("."),this.reference=n,this.node=null,this.group=null,this.updateType=Hd}setGroup(t){return this.group=t,this}element(t){return Tp(new Vg(this,Tp(t)))}setNodeType(t){const e=((t,e)=>{const n=(i=e||t,null!=i?i.nodeType||i.convertTo||("string"==typeof i?i:null):null);var i;return Tp(new ef(t,n))})(null,t).getSelf();null!==this.group&&e.setGroup(this.group),this.node=e}getNodeType(t){return null===this.node&&(this.updateReference(t),this.updateValue()),this.node.getNodeType(t)}getValueFromReference(t=this.reference){const{properties:e}=this;let n=t[e[0]];for(let i=1;i<e.length;i++)n=n[e[i]];return n}updateReference(t){return this.reference=null!==this.object?this.object:t.object,this.reference}setup(){return this.updateValue(),this.node}update(){this.updateValue()}updateValue(){null===this.node&&this.setNodeType(this.uniformType);const t=this.getValueFromReference();Array.isArray(t)?this.node.array=t:this.node.value=t}}class Gg extends Hg{static get type(){return"RendererReferenceNode"}constructor(t,e,n=null){super(t,e,n),this.renderer=n,this.setGroup(Qp)}updateReference(t){return this.reference=null!==this.renderer?this.renderer:t.renderer,this.reference}}const Wg=(t,e,n=null)=>Tp(new Gg(t,e,n));class jg extends Xm{static get type(){return"ToneMappingNode"}constructor(t,e=Xg,n=null){super("vec3"),this.toneMapping=t,this.exposureNode=e,this.colorNode=n}customCacheKey(){return Um(this.toneMapping)}setup(t){const e=this.colorNode||t.context.color,n=this.toneMapping;if(0===n)return e;let i=null;const r=t.renderer.library.getToneMappingFunction(n);return null!==r?i=Gp(r(e.rgb,this.exposureNode),e.a):(console.error("ToneMappingNode: Unsupported Tone Mapping configuration.",n),i=e),i}}const Xg=Wg("toneMappingExposure","float");np("toneMapping",((t,e,n)=>((t,e,n)=>Tp(new jg(t,Tp(e),Tp(n))))(e,n,t)));const Yg=new Mm,Zg=new Nm;class Jg{constructor(t,e,n=!1){if(Array.isArray(t))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.isBufferAttribute=!0,this.name="",this.array=t,this.itemSize=e,this.count=void 0!==t?t.length/e:0,this.normalized=n,this.usage=am,this.updateRanges=[],this.gpuType=1015,this.version=0}onUploadCallback(){}set needsUpdate(t){!0===t&&this.version++}setUsage(t){return this.usage=t,this}addUpdateRange(t,e){this.updateRanges.push({start:t,count:e})}clearUpdateRanges(){this.updateRanges.length=0}copy(t){return this.name=t.name,this.array=new t.array.constructor(t.array),this.itemSize=t.itemSize,this.count=t.count,this.normalized=t.normalized,this.usage=t.usage,this.gpuType=t.gpuType,this}copyAt(t,e,n){t*=this.itemSize,n*=e.itemSize;for(let i=0,r=this.itemSize;i<r;i++)this.array[t+i]=e.array[n+i];return this}copyArray(t){return this.array.set(t),this}applyMatrix3(t){if(2===this.itemSize)for(let e=0,n=this.count;e<n;e++)Zg.fromBufferAttribute(this,e),Zg.applyMatrix3(t),this.setXY(e,Zg.x,Zg.y);else if(3===this.itemSize)for(let e=0,n=this.count;e<n;e++)Yg.fromBufferAttribute(this,e),Yg.applyMatrix3(t),this.setXYZ(e,Yg.x,Yg.y,Yg.z);return this}applyMatrix4(t){for(let e=0,n=this.count;e<n;e++)Yg.fromBufferAttribute(this,e),Yg.applyMatrix4(t),this.setXYZ(e,Yg.x,Yg.y,Yg.z);return this}applyNormalMatrix(t){for(let e=0,n=this.count;e<n;e++)Yg.fromBufferAttribute(this,e),Yg.applyNormalMatrix(t),this.setXYZ(e,Yg.x,Yg.y,Yg.z);return this}transformDirection(t){for(let e=0,n=this.count;e<n;e++)Yg.fromBufferAttribute(this,e),Yg.transformDirection(t),this.setXYZ(e,Yg.x,Yg.y,Yg.z);return this}set(t,e=0){return this.array.set(t,e),this}getComponent(t,e){let n=this.array[t*this.itemSize+e];return this.normalized&&(n=Qd(n,this.array)),n}setComponent(t,e,n){return this.normalized&&(n=tm(n,this.array)),this.array[t*this.itemSize+e]=n,this}getX(t){let e=this.array[t*this.itemSize];return this.normalized&&(e=Qd(e,this.array)),e}setX(t,e){return this.normalized&&(e=tm(e,this.array)),this.array[t*this.itemSize]=e,this}getY(t){let e=this.array[t*this.itemSize+1];return this.normalized&&(e=Qd(e,this.array)),e}setY(t,e){return this.normalized&&(e=tm(e,this.array)),this.array[t*this.itemSize+1]=e,this}getZ(t){let e=this.array[t*this.itemSize+2];return this.normalized&&(e=Qd(e,this.array)),e}setZ(t,e){return this.normalized&&(e=tm(e,this.array)),this.array[t*this.itemSize+2]=e,this}getW(t){let e=this.array[t*this.itemSize+3];return this.normalized&&(e=Qd(e,this.array)),e}setW(t,e){return this.normalized&&(e=tm(e,this.array)),this.array[t*this.itemSize+3]=e,this}setXY(t,e,n){return t*=this.itemSize,this.normalized&&(e=tm(e,this.array),n=tm(n,this.array)),this.array[t+0]=e,this.array[t+1]=n,this}setXYZ(t,e,n,i){return t*=this.itemSize,this.normalized&&(e=tm(e,this.array),n=tm(n,this.array),i=tm(i,this.array)),this.array[t+0]=e,this.array[t+1]=n,this.array[t+2]=i,this}setXYZW(t,e,n,i,r){return t*=this.itemSize,this.normalized&&(e=tm(e,this.array),n=tm(n,this.array),i=tm(i,this.array),r=tm(r,this.array)),this.array[t+0]=e,this.array[t+1]=n,this.array[t+2]=i,this.array[t+3]=r,this}onUpload(t){return this.onUploadCallback=t,this}clone(){return new this.constructor(this.array,this.itemSize).copy(this)}toJSON(){const t={itemSize:this.itemSize,type:this.array.constructor.name,array:Array.from(this.array),normalized:this.normalized};return""!==this.name&&(t.name=this.name),this.usage!==am&&(t.usage=this.usage),t}}const $g=new Mm;class Kg{constructor(t,e,n,i=!1){this.isInterleavedBufferAttribute=!0,this.name="",this.data=t,this.itemSize=e,this.offset=n,this.normalized=i}get count(){return this.data.count}get array(){return this.data.array}set needsUpdate(t){this.data.needsUpdate=t}applyMatrix4(t){for(let e=0,n=this.data.count;e<n;e++)$g.fromBufferAttribute(this,e),$g.applyMatrix4(t),this.setXYZ(e,$g.x,$g.y,$g.z);return this}applyNormalMatrix(t){for(let e=0,n=this.count;e<n;e++)$g.fromBufferAttribute(this,e),$g.applyNormalMatrix(t),this.setXYZ(e,$g.x,$g.y,$g.z);return this}transformDirection(t){for(let e=0,n=this.count;e<n;e++)$g.fromBufferAttribute(this,e),$g.transformDirection(t),this.setXYZ(e,$g.x,$g.y,$g.z);return this}getComponent(t,e){let n=this.array[t*this.data.stride+this.offset+e];return this.normalized&&(n=Qd(n,this.array)),n}setComponent(t,e,n){return this.normalized&&(n=tm(n,this.array)),this.data.array[t*this.data.stride+this.offset+e]=n,this}setX(t,e){return this.normalized&&(e=tm(e,this.array)),this.data.array[t*this.data.stride+this.offset]=e,this}setY(t,e){return this.normalized&&(e=tm(e,this.array)),this.data.array[t*this.data.stride+this.offset+1]=e,this}setZ(t,e){return this.normalized&&(e=tm(e,this.array)),this.data.array[t*this.data.stride+this.offset+2]=e,this}setW(t,e){return this.normalized&&(e=tm(e,this.array)),this.data.array[t*this.data.stride+this.offset+3]=e,this}getX(t){let e=this.data.array[t*this.data.stride+this.offset];return this.normalized&&(e=Qd(e,this.array)),e}getY(t){let e=this.data.array[t*this.data.stride+this.offset+1];return this.normalized&&(e=Qd(e,this.array)),e}getZ(t){let e=this.data.array[t*this.data.stride+this.offset+2];return this.normalized&&(e=Qd(e,this.array)),e}getW(t){let e=this.data.array[t*this.data.stride+this.offset+3];return this.normalized&&(e=Qd(e,this.array)),e}setXY(t,e,n){return t=t*this.data.stride+this.offset,this.normalized&&(e=tm(e,this.array),n=tm(n,this.array)),this.data.array[t+0]=e,this.data.array[t+1]=n,this}setXYZ(t,e,n,i){return t=t*this.data.stride+this.offset,this.normalized&&(e=tm(e,this.array),n=tm(n,this.array),i=tm(i,this.array)),this.data.array[t+0]=e,this.data.array[t+1]=n,this.data.array[t+2]=i,this}setXYZW(t,e,n,i,r){return t=t*this.data.stride+this.offset,this.normalized&&(e=tm(e,this.array),n=tm(n,this.array),i=tm(i,this.array),r=tm(r,this.array)),this.data.array[t+0]=e,this.data.array[t+1]=n,this.data.array[t+2]=i,this.data.array[t+3]=r,this}clone(t){if(void 0===t){console.log("THREE.InterleavedBufferAttribute.clone(): Cloning an interleaved buffer attribute will de-interleave buffer data.");const t=[];for(let e=0;e<this.count;e++){const n=e*this.data.stride+this.offset;for(let e=0;e<this.itemSize;e++)t.push(this.data.array[n+e])}return new Jg(new this.array.constructor(t),this.itemSize,this.normalized)}return void 0===t.interleavedBuffers&&(t.interleavedBuffers={}),void 0===t.interleavedBuffers[this.data.uuid]&&(t.interleavedBuffers[this.data.uuid]=this.data.clone(t)),new Kg(t.interleavedBuffers[this.data.uuid],this.itemSize,this.offset,this.normalized)}toJSON(t){if(void 0===t){console.log("THREE.InterleavedBufferAttribute.toJSON(): Serializing an interleaved buffer attribute will de-interleave buffer data.");const t=[];for(let e=0;e<this.count;e++){const n=e*this.data.stride+this.offset;for(let e=0;e<this.itemSize;e++)t.push(this.data.array[n+e])}return{itemSize:this.itemSize,type:this.array.constructor.name,array:t,normalized:this.normalized}}return void 0===t.interleavedBuffers&&(t.interleavedBuffers={}),void 0===t.interleavedBuffers[this.data.uuid]&&(t.interleavedBuffers[this.data.uuid]=this.data.toJSON(t)),{isInterleavedBufferAttribute:!0,itemSize:this.itemSize,data:this.data.uuid,offset:this.offset,normalized:this.normalized}}}class Qg{constructor(t,e){this.isInterleavedBuffer=!0,this.array=t,this.stride=e,this.count=void 0!==t?t.length/e:0,this.usage=am,this.updateRanges=[],this.version=0,this.uuid=Zd()}onUploadCallback(){}set needsUpdate(t){!0===t&&this.version++}setUsage(t){return this.usage=t,this}addUpdateRange(t,e){this.updateRanges.push({start:t,count:e})}clearUpdateRanges(){this.updateRanges.length=0}copy(t){return this.array=new t.array.constructor(t.array),this.count=t.count,this.stride=t.stride,this.usage=t.usage,this}copyAt(t,e,n){t*=this.stride,n*=e.stride;for(let i=0,r=this.stride;i<r;i++)this.array[t+i]=e.array[n+i];return this}set(t,e=0){return this.array.set(t,e),this}clone(t){void 0===t.arrayBuffers&&(t.arrayBuffers={}),void 0===this.array.buffer._uuid&&(this.array.buffer._uuid=Zd()),void 0===t.arrayBuffers[this.array.buffer._uuid]&&(t.arrayBuffers[this.array.buffer._uuid]=this.array.slice(0).buffer);const e=new this.array.constructor(t.arrayBuffers[this.array.buffer._uuid]),n=new this.constructor(e,this.stride);return n.setUsage(this.usage),n}onUpload(t){return this.onUploadCallback=t,this}toJSON(t){return void 0===t.arrayBuffers&&(t.arrayBuffers={}),void 0===this.array.buffer._uuid&&(this.array.buffer._uuid=Zd()),void 0===t.arrayBuffers[this.array.buffer._uuid]&&(t.arrayBuffers[this.array.buffer._uuid]=Array.from(new Uint32Array(this.array.buffer))),{uuid:this.uuid,buffer:this.array.buffer._uuid,type:this.array.constructor.name,stride:this.stride}}}class tx extends Qm{static get type(){return"BufferAttributeNode"}constructor(t,e=null,n=0,i=0){super(t,e),this.isBufferNode=!0,this.bufferType=e,this.bufferStride=n,this.bufferOffset=i,this.usage=am,this.instanced=!1,this.attribute=null,this.global=!0,t&&!0===t.isBufferAttribute&&(this.attribute=t,this.usage=t.usage,this.instanced=t.isInstancedBufferAttribute)}getHash(t){if(0===this.bufferStride&&0===this.bufferOffset){let e=t.globalCache.getData(this.value);return void 0===e&&(e={node:this},t.globalCache.setData(this.value,e)),e.node.uuid}return this.uuid}getNodeType(t){return null===this.bufferType&&(this.bufferType=t.getTypeFromAttribute(this.attribute)),this.bufferType}setup(t){if(null!==this.attribute)return;const e=this.getNodeType(t),n=this.value,i=t.getTypeLength(e),r=this.bufferStride||i,s=this.bufferOffset,a=!0===n.isInterleavedBuffer?n:new Qg(n,r),o=new Kg(a,i,s);a.setUsage(this.usage),this.attribute=o,this.attribute.isInstancedBufferAttribute=this.instanced}generate(t){const e=this.getNodeType(t),n=t.getBufferAttributeFromNode(this,e),i=t.getPropertyName(n);let r=null;if("vertex"===t.shaderStage||"compute"===t.shaderStage)this.name=i,r=i;else{r=kg(this).build(t,e)}return r}getInputType(){return"bufferAttribute"}setUsage(t){return this.usage=t,this.attribute&&!0===this.attribute.isBufferAttribute&&(this.attribute.usage=t),this}setInstanced(t){return this.instanced=t,this}}np("toAttribute",(t=>((t,e=null,n=0,i=0)=>Tp(new tx(t,e,n,i)))(t.value)));class ex extends Gm{static get type(){return"ComputeNode"}constructor(t,e,n=[64]){super("void"),this.isComputeNode=!0,this.computeNode=t,this.count=e,this.workgroupSize=n,this.dispatchCount=0,this.version=1,this.name="",this.updateBeforeType=Hd,this.onInitFunction=null,this.updateDispatchCount()}dispose(){this.dispatchEvent({type:"dispose"})}label(t){return this.name=t,this}updateDispatchCount(){const{count:t,workgroupSize:e}=this;let n=e[0];for(let i=1;i<e.length;i++)n*=e[i];this.dispatchCount=Math.ceil(t/n)}onInit(t){return this.onInitFunction=t,this}updateBefore({renderer:t}){t.compute(this)}generate(t){const{shaderStage:e}=t;if("compute"===e){const e=this.computeNode.build(t,"void");""!==e&&t.addLineFlowCode(e,this)}}}np("compute",((t,e,n)=>Tp(new ex(Tp(t),e,n))));class nx extends Gm{static get type(){return"CacheNode"}constructor(t,e=!0){super(),this.node=t,this.parent=e,this.isCacheNode=!0}getNodeType(t){const e=t.getCache(),n=t.getCacheFromNode(this,this.parent);t.setCache(n);const i=this.node.getNodeType(t);return t.setCache(e),i}build(t,...e){const n=t.getCache(),i=t.getCacheFromNode(this,this.parent);t.setCache(i);const r=this.node.build(t,...e);return t.setCache(n),r}}np("cache",((t,e)=>Tp(new nx(Tp(t),e))));class ix extends Gm{static get type(){return"BypassNode"}constructor(t,e){super(),this.isBypassNode=!0,this.outputNode=t,this.callNode=e}getNodeType(t){return this.outputNode.getNodeType(t)}generate(t){const e=this.callNode.build(t,"void");return""!==e&&t.addLineFlowCode(e,this),this.outputNode.build(t)}}np("bypass",Cp(ix));class rx extends Gm{static get type(){return"RemapNode"}constructor(t,e,n,i=Ip(0),r=Ip(1)){super(),this.node=t,this.inLowNode=e,this.inHighNode=n,this.outLowNode=i,this.outHighNode=r,this.doClamp=!0}setup(){const{node:t,inLowNode:e,inHighNode:n,outLowNode:i,outHighNode:r,doClamp:s}=this;let a=t.sub(e).div(n.sub(e));return!0===s&&(a=a.clamp()),a.mul(r.sub(i)).add(i)}}const sx=Cp(rx,null,null,{doClamp:!1}),ax=Cp(rx);np("remap",sx),np("remapClamp",ax);class ox extends Gm{static get type(){return"ExpressionNode"}constructor(t="",e="void"){super(e),this.snippet=t}generate(t,e){const n=this.getNodeType(t),i=this.snippet;if("void"!==n)return t.format(`( ${i} )`,n,e);t.addLineFlowCode(i,this)}}const lx=Cp(ox);np("discard",(t=>(t?Rg(t,lx("discard")):lx("discard")).append()));class hx extends Xm{static get type(){return"RenderOutputNode"}constructor(t,e,n){super("vec4"),this.colorNode=t,this.toneMapping=e,this.outputColorSpace=n,this.isRenderOutputNode=!0}setup({context:t}){let e=this.colorNode||t.color;const n=(null!==this.toneMapping?this.toneMapping:t.toneMapping)||0,i=(null!==this.outputColorSpace?this.outputColorSpace:t.outputColorSpace)||"";return 0!==n&&(e=e.toneMapping(n)),""!==i&&i!==mm.workingColorSpace&&(e=e.workingToColorSpace(i)),e}}np("renderOutput",((t,e=null,n=null)=>Tp(new hx(Tp(t),e,n))));class cx{constructor(t,e){this.geometry=t,this.material=e,this.width=this.getSize().x,this.height=this.getSize().y}getSize(){var t=new un;return this.geometry.computeBoundingBox(),this.geometry.boundingBox.getSize(t),t}}class qx extends tl{constructor(t){super({vertexColors:!1,color:t,side:2,emissive:new Li(t),emissiveIntensity:.1})}}class ux extends cx{constructor(){super(new gr(1,1,1),new qx(255))}}const dx=48,mx={steps:2,depth:.6,bevelEnabled:!0,bevelThickness:.2,bevelSize:.4,bevelOffset:0,bevelSegments:4},px=26265,fx=26265;class gx extends Al{constructor(t){super(t)}load(t,e,n,i){const r=this,s=new zl(this.manager);s.setPath(this.path),s.setRequestHeader(this.requestHeader),s.setWithCredentials(this.withCredentials),s.load(t,(function(t){const n=r.parse(JSON.parse(t));e&&e(n)}),n,i)}parse(t){return new xx(t)}}class xx{constructor(t){this.isFont=!0,this.type="Font",this.data=t}generateShapes(t,e=100){const n=[],i=function(t,e,n){const i=Array.from(t),r=e/n.resolution,s=(n.boundingBox.yMax-n.boundingBox.yMin+n.underlineThickness)*r,a=[];let o=0,l=0;for(let h=0;h<i.length;h++){const t=i[h];if("\n"===t)o=0,l-=s;else{const e=_x(t,r,o,l,n);o+=e.offsetX,a.push(e.path)}}return a}(t,e,this.data);for(let r=0,s=i.length;r<s;r++)n.push(...i[r].toShapes());return n}}function _x(t,e,n,i,r){const s=r.glyphs[t]||r.glyphs["?"];if(!s)return void console.error('THREE.Font: character "'+t+'" does not exists in font family '+r.familyName+".");const a=new qc;let o,l,h,c,q,u,d,m;if(s.o){const t=s._cachedOutline||(s._cachedOutline=s.o.split(" "));for(let r=0,s=t.length;r<s;){switch(t[r++]){case"m":o=t[r++]*e+n,l=t[r++]*e+i,a.moveTo(o,l);break;case"l":o=t[r++]*e+n,l=t[r++]*e+i,a.lineTo(o,l);break;case"q":h=t[r++]*e+n,c=t[r++]*e+i,q=t[r++]*e+n,u=t[r++]*e+i,a.quadraticCurveTo(q,u,h,c);break;case"b":h=t[r++]*e+n,c=t[r++]*e+i,q=t[r++]*e+n,u=t[r++]*e+i,d=t[r++]*e+n,m=t[r++]*e+i,a.bezierCurveTo(q,u,d,m,h,c)}}}return{offsetX:s.ha*e,path:a}}class yx extends Io{constructor(t,e={}){const n=e.font;if(void 0===n)super();else{const i=n.generateShapes(t,e.size);void 0===e.depth&&void 0!==e.height&&console.warn("THREE.TextGeometry: .height is now depreciated. Please use .depth instead"),e.depth=void 0!==e.depth?e.depth:void 0!==e.height?e.height:50,void 0===e.bevelThickness&&(e.bevelThickness=10),void 0===e.bevelSize&&(e.bevelSize=8),void 0===e.bevelEnabled&&(e.bevelEnabled=!1),super(i,e)}this.type="TextGeometry"}}const vx={glyphs:JSON.parse('{"0":{"ha":781,"x_min":78,"x_max":702,"o":"m 702 572 l 702 422 q 680 217 702 300 q 618 83 659 134 q 520 9 577 32 q 391 -14 463 -14 q 286 1 334 -14 q 199 46 237 15 q 134 129 161 78 q 92 252 106 180 q 78 422 78 325 l 78 572 q 100 776 78 694 q 163 908 122 858 q 261 979 203 958 q 389 1001 318 1001 q 495 987 447 1001 q 582 943 544 973 q 647 863 620 913 q 688 741 673 813 q 702 572 702 669 m 576 401 l 576 593 q 568 710 576 660 q 545 797 560 761 q 508 855 530 833 q 455 888 485 878 q 389 899 426 899 q 310 882 345 899 q 252 829 275 865 q 216 735 229 793 q 204 593 204 677 l 204 401 q 212 284 204 335 q 235 196 220 233 q 273 136 251 159 q 325 101 296 112 q 391 90 355 90 q 471 107 437 90 q 529 162 506 125 q 564 259 553 200 q 576 401 576 319 z "},"1":{"ha":781,"x_min":116,"x_max":494,"o":"m 494 993 l 494 0 l 369 0 l 369 836 l 116 744 l 116 857 l 475 993 l 494 993 z "},"2":{"ha":781,"x_min":64,"x_max":729,"o":"m 729 103 l 729 0 l 83 0 l 83 90 l 406 450 q 499 563 466 517 q 545 647 532 610 q 558 722 558 684 q 538 811 558 771 q 479 874 518 850 q 386 898 441 898 q 276 872 320 898 q 211 802 233 847 q 189 697 189 756 l 64 697 q 100 850 64 781 q 209 960 137 919 q 386 1001 281 1001 q 546 968 479 1001 q 648 876 612 935 q 684 737 684 817 q 669 649 684 694 q 629 561 654 605 q 570 474 604 517 q 498 390 536 431 l 234 103 l 729 103 z "},"3":{"ha":781,"x_min":64,"x_max":690,"o":"m 265 555 l 355 555 q 464 577 420 555 q 528 638 507 600 q 549 724 549 676 q 530 820 549 781 q 473 878 511 859 q 377 898 435 898 q 284 877 324 898 q 221 819 243 857 q 198 729 198 781 l 73 729 q 111 866 73 804 q 217 964 149 928 q 377 1001 286 1001 q 534 969 467 1001 q 638 876 601 938 q 675 722 675 814 q 658 642 675 684 q 605 563 641 600 q 511 503 568 526 q 372 479 453 479 l 265 479 l 265 555 m 265 452 l 265 528 l 372 528 q 528 505 467 528 q 626 446 590 483 q 676 364 661 408 q 690 275 690 319 q 667 153 690 206 q 601 62 644 99 q 502 5 559 24 q 378 -14 445 -14 q 257 5 313 -14 q 157 58 200 23 q 89 144 113 93 q 64 261 64 195 l 190 261 q 213 171 190 210 q 278 111 235 132 q 378 90 320 90 q 477 110 435 90 q 542 170 519 130 q 564 273 564 211 q 538 374 564 334 q 466 433 513 414 q 355 452 418 452 l 265 452 z "},"4":{"ha":781,"x_min":36,"x_max":749,"o":"m 749 332 l 749 229 l 36 229 l 36 303 l 478 987 l 581 987 l 471 789 l 178 332 l 749 332 m 612 987 l 612 0 l 486 0 l 486 987 l 612 987 z "},"5":{"ha":781,"x_min":104,"x_max":726,"o":"m 241 470 l 140 496 l 190 987 l 696 987 l 696 871 l 296 871 l 267 603 q 335 632 294 618 q 431 646 377 646 q 554 622 500 646 q 647 555 608 599 q 705 451 685 512 q 726 315 726 390 q 706 184 726 243 q 648 80 687 124 q 551 11 610 35 q 413 -14 492 -14 q 300 3 353 -14 q 205 54 247 20 q 137 139 163 88 q 104 260 111 191 l 224 260 q 256 166 232 204 q 320 109 281 128 q 413 90 360 90 q 492 105 458 90 q 551 150 527 121 q 587 220 574 179 q 600 313 600 262 q 587 400 600 360 q 548 470 574 440 q 486 516 523 500 q 402 533 450 533 q 307 516 339 533 q 241 470 275 499 z "},"6":{"ha":781,"x_min":90,"x_max":714,"o":"m 564 989 l 574 989 l 574 882 l 564 882 q 397 850 464 882 q 290 764 330 818 q 234 643 251 710 q 216 507 216 576 l 216 361 q 232 245 216 296 q 275 160 248 195 q 336 108 302 125 q 408 90 370 90 q 485 107 451 90 q 542 154 519 123 q 578 225 566 184 q 590 316 590 267 q 579 401 590 360 q 546 474 568 442 q 490 525 524 507 q 410 544 456 544 q 313 518 358 544 q 239 452 268 493 q 206 363 210 411 l 140 363 q 175 493 149 439 q 240 582 201 547 q 328 632 279 616 q 431 648 376 648 q 558 620 505 648 q 646 546 612 592 q 697 441 681 499 q 714 322 714 383 q 694 191 714 252 q 636 84 675 130 q 540 12 597 38 q 408 -14 483 -14 q 268 19 328 -14 q 169 107 208 52 q 110 229 130 162 q 90 366 90 296 l 90 425 q 111 629 90 529 q 184 811 132 730 q 328 941 236 892 q 564 989 420 989 z "},"7":{"ha":781,"x_min":53,"x_max":720,"o":"m 720 987 l 720 917 l 311 0 l 179 0 l 587 884 l 53 884 l 53 987 l 720 987 z "},"8":{"ha":781,"x_min":77,"x_max":705,"o":"m 705 267 q 663 114 705 177 q 550 19 621 52 q 391 -14 479 -14 q 231 19 302 -14 q 118 114 159 52 q 77 267 77 177 q 99 375 77 326 q 164 461 122 425 q 263 518 205 498 q 389 538 320 538 q 551 503 480 538 q 664 407 623 468 q 705 267 705 346 m 578 270 q 555 367 578 325 q 488 433 531 410 q 389 457 446 457 q 290 433 332 457 q 225 367 248 410 q 202 270 202 325 q 225 173 202 213 q 290 111 248 132 q 391 90 332 90 q 491 111 449 90 q 556 173 533 132 q 578 270 578 213 m 682 730 q 644 601 682 659 q 540 510 606 543 q 391 477 474 477 q 240 510 306 477 q 136 601 174 543 q 99 730 99 659 q 137 877 99 817 q 240 969 174 937 q 390 1001 306 1001 q 541 969 475 1001 q 644 877 606 937 q 682 730 682 817 m 556 728 q 535 816 556 778 q 477 876 514 854 q 390 898 439 898 q 303 877 340 898 q 246 819 267 857 q 225 728 225 781 q 246 640 225 677 q 304 581 267 602 q 391 559 341 559 q 477 581 440 559 q 535 640 514 602 q 556 728 556 677 z "},"9":{"ha":781,"x_min":68,"x_max":689,"o":"m 207 105 l 220 105 q 396 136 328 105 q 500 218 464 166 q 551 334 537 269 q 564 467 564 399 l 564 618 q 549 738 564 686 q 507 825 534 790 q 446 879 480 861 q 374 897 412 897 q 297 880 331 897 q 239 831 262 863 q 203 758 216 800 q 191 667 191 716 q 202 581 191 623 q 235 507 213 540 q 291 454 258 473 q 370 435 325 435 q 449 451 412 435 q 515 497 486 468 q 561 562 544 526 q 581 639 578 599 l 641 639 q 619 528 641 583 q 557 429 597 473 q 465 357 518 384 q 350 330 412 330 q 223 359 277 330 q 135 435 170 387 q 84 541 101 482 q 68 660 68 600 q 87 792 68 730 q 146 901 107 854 q 242 975 184 948 q 374 1001 299 1001 q 519 967 459 1001 q 616 876 578 933 q 671 748 654 819 q 689 602 689 677 l 689 556 q 679 400 689 479 q 642 250 669 321 q 562 121 614 178 q 426 32 510 64 q 220 -1 342 -1 l 207 -1 l 207 105 z "},"\\u0000":{"ha":0,"x_min":0,"x_max":0,"o":""},"\\u0002":{"ha":0,"x_min":0,"x_max":0,"o":""},"\\r":{"ha":345,"x_min":0,"x_max":0,"o":""}," ":{"ha":345,"x_min":0,"x_max":0,"o":""},"!":{"ha":358,"x_min":109,"x_max":258,"o":"m 245 987 l 236 279 l 123 279 l 113 987 l 245 987 m 109 63 q 128 115 109 94 q 183 136 146 136 q 238 115 219 136 q 258 63 258 94 q 238 13 258 34 q 183 -8 219 -8 q 128 13 146 -8 q 109 63 109 34 z "},"\\"":{"ha":445,"x_min":93,"x_max":372,"o":"m 189 1042 l 189 949 l 168 707 l 93 707 l 93 943 l 93 1042 l 189 1042 m 372 1042 l 372 949 l 351 707 l 276 707 l 276 948 l 276 1042 l 372 1042 z "},"#":{"ha":855,"x_min":81,"x_max":838,"o":"m 189 0 l 381 987 l 479 987 l 286 0 l 189 0 m 465 0 l 658 987 l 755 987 l 562 0 l 465 0 m 838 611 l 132 611 l 132 705 l 838 705 l 838 611 m 787 278 l 81 278 l 81 372 l 787 372 l 787 278 z "},"$":{"ha":781,"x_min":75,"x_max":707,"o":"m 457 1147 l 457 941 l 355 941 l 355 1147 l 457 1147 m 445 40 l 445 -141 l 344 -141 l 344 40 l 445 40 m 581 254 q 562 328 581 295 q 502 387 544 360 q 389 437 460 414 q 242 502 304 464 q 146 596 180 540 q 113 732 113 652 q 149 876 113 816 q 250 969 184 937 q 405 1002 316 1002 q 528 981 474 1002 q 620 920 583 960 q 678 820 658 879 q 698 684 698 761 l 573 684 q 562 767 573 729 q 530 833 551 805 q 477 877 508 861 q 405 892 446 892 q 311 872 348 892 q 256 817 274 852 q 239 734 239 781 q 256 659 239 691 q 316 600 274 626 q 433 549 359 574 q 582 483 521 521 q 675 391 643 446 q 707 256 707 336 q 667 108 707 168 q 557 17 628 48 q 390 -14 486 -14 q 276 1 332 -14 q 174 53 220 17 q 102 147 129 88 q 75 291 75 205 l 201 291 q 217 196 201 233 q 262 136 234 158 q 323 105 290 114 q 390 96 357 96 q 493 115 451 96 q 558 170 536 134 q 581 254 581 206 z "},"%":{"ha":1017,"x_min":71,"x_max":957,"o":"m 71 745 l 71 798 q 96 900 71 854 q 165 974 120 946 q 273 1002 211 1002 q 382 974 337 1002 q 452 900 427 946 q 476 798 476 854 l 476 745 q 452 644 476 690 q 383 570 428 598 q 275 543 338 543 q 166 570 212 543 q 96 644 120 598 q 71 745 71 690 m 165 798 l 165 745 q 177 686 165 714 q 214 641 189 659 q 275 624 238 624 q 335 641 311 624 q 370 686 359 659 q 382 745 382 714 l 382 798 q 370 858 382 829 q 334 903 358 886 q 273 920 310 920 q 213 903 237 920 q 177 858 189 886 q 165 798 165 829 m 552 189 l 552 242 q 576 344 552 298 q 646 418 601 390 q 754 446 692 446 q 863 418 818 446 q 932 344 908 390 q 957 242 957 298 l 957 189 q 933 87 957 134 q 864 14 909 41 q 755 -14 819 -14 q 647 14 692 -14 q 577 87 602 41 q 552 189 552 134 m 646 242 l 646 189 q 658 130 646 158 q 694 84 670 102 q 755 67 719 67 q 816 84 792 67 q 852 130 840 102 q 863 189 863 157 l 863 242 q 851 302 863 274 q 815 347 840 330 q 754 364 791 364 q 694 347 718 364 q 658 302 670 330 q 646 242 646 274 m 785 847 l 303 75 l 233 120 l 715 892 l 785 847 z "},"&":{"ha":864,"x_min":69,"x_max":859,"o":"m 278 548 l 426 653 q 492 712 469 682 q 515 793 515 741 q 484 866 515 833 q 396 899 453 899 q 330 880 357 899 q 289 832 302 862 q 275 766 275 802 q 290 703 275 735 q 332 635 305 670 q 392 560 358 600 l 859 0 l 709 0 l 326 458 q 235 568 275 518 q 172 665 195 618 q 149 762 149 711 q 180 892 149 839 q 267 973 211 945 q 397 1001 322 1001 q 522 972 469 1001 q 603 896 574 943 q 631 793 631 849 q 614 708 631 745 q 567 639 597 670 q 497 578 537 608 l 301 432 q 230 363 252 396 q 201 306 208 331 q 195 266 195 281 q 216 178 195 218 q 280 114 237 138 q 388 90 323 90 q 499 116 445 90 q 595 190 553 142 q 664 306 638 239 q 689 456 689 374 l 802 456 q 789 329 802 389 q 749 218 776 269 q 681 125 722 167 q 671 111 675 119 q 662 96 668 102 q 537 14 611 41 q 388 -14 463 -14 q 218 22 290 -14 q 108 121 146 58 q 69 266 69 184 q 96 376 69 328 q 170 465 123 423 q 278 548 217 506 z "},"\'":{"ha":243,"x_min":71,"x_max":172,"o":"m 172 1042 l 172 967 l 158 718 l 71 718 l 71 956 l 71 1042 l 172 1042 z "},"(":{"ha":475,"x_min":91,"x_max":449,"o":"m 91 395 l 91 401 q 124 669 91 549 q 209 879 157 789 q 317 1028 260 969 q 422 1114 374 1088 l 449 1031 q 368 947 409 1001 q 293 816 327 894 q 237 635 258 738 q 216 403 216 532 l 216 393 q 237 161 216 264 q 293 -21 258 58 q 368 -155 327 -100 q 449 -243 409 -210 l 422 -319 q 317 -233 374 -292 q 209 -84 260 -174 q 124 126 157 6 q 91 395 91 246 z "},")":{"ha":484,"x_min":26,"x_max":385,"o":"m 385 401 l 385 395 q 351 126 385 246 q 267 -84 318 6 q 158 -233 215 -174 q 53 -319 101 -292 l 26 -243 q 107 -158 66 -212 q 182 -23 148 -103 q 238 160 217 56 q 259 393 259 264 l 259 403 q 237 636 259 532 q 179 819 214 740 q 103 953 143 899 q 26 1038 62 1008 l 53 1114 q 158 1028 101 1088 q 267 879 215 969 q 351 669 318 789 q 385 401 385 549 z "},"*":{"ha":598,"x_min":19,"x_max":579,"o":"m 87 480 l 224 667 l 19 728 l 51 830 l 256 755 l 250 988 l 353 988 l 346 751 l 548 826 l 579 722 l 371 661 l 505 477 l 420 414 l 295 609 l 172 418 l 87 480 z "},"+":{"ha":788,"x_min":53,"x_max":730,"o":"m 730 530 l 730 412 l 53 412 l 53 530 l 730 530 m 454 818 l 454 99 l 329 99 l 329 818 l 454 818 z "},",":{"ha":273,"x_min":20,"x_max":210,"o":"m 210 149 l 210 48 q 178 -82 210 -14 q 91 -197 147 -151 l 20 -148 q 56 -87 41 -118 q 79 -23 71 -56 q 87 46 87 9 l 87 149 l 210 149 z "},"-":{"ha":384,"x_min":26,"x_max":357,"o":"m 357 471 l 357 368 l 26 368 l 26 471 l 357 471 z "},".":{"ha":366,"x_min":98,"x_max":254,"o":"m 98 66 q 118 120 98 98 q 176 142 138 142 q 234 120 214 142 q 254 66 254 98 q 234 14 254 35 q 176 -8 214 -8 q 118 14 138 -8 q 98 66 98 35 z "},"/":{"ha":573,"x_min":13,"x_max":532,"o":"m 532 987 l 121 -85 l 13 -85 l 425 987 l 532 987 z "},":":{"ha":336,"x_min":90,"x_max":247,"o":"m 90 66 q 110 120 90 98 q 168 142 130 142 q 226 120 206 142 q 246 66 246 98 q 226 14 246 35 q 168 -8 206 -8 q 110 14 130 -8 q 90 66 90 35 m 91 665 q 111 719 91 697 q 169 741 131 741 q 227 719 207 741 q 247 665 247 697 q 227 612 247 634 q 169 591 207 591 q 111 612 131 591 q 91 665 91 634 z "},";":{"ha":294,"x_min":28,"x_max":231,"o":"m 75 665 q 95 719 75 697 q 153 741 115 741 q 211 719 191 741 q 231 665 231 697 q 211 612 231 634 q 153 591 191 591 q 95 612 115 591 q 75 665 75 634 m 218 149 l 218 48 q 186 -82 218 -14 q 99 -197 155 -151 l 28 -148 q 64 -87 50 -118 q 87 -23 79 -56 q 95 46 95 9 l 95 149 l 218 149 z "},"<":{"ha":706,"x_min":49,"x_max":604,"o":"m 135 456 l 604 266 l 604 133 l 49 390 l 49 468 l 135 456 m 604 612 l 136 419 l 49 410 l 49 488 l 604 745 l 604 612 z "},"=":{"ha":762,"x_min":103,"x_max":669,"o":"m 669 661 l 669 552 l 103 552 l 103 661 l 669 661 m 669 380 l 669 271 l 103 271 l 103 380 l 669 380 z "},">":{"ha":726,"x_min":92,"x_max":671,"o":"m 574 429 l 92 616 l 92 746 l 671 490 l 671 410 l 574 429 m 92 263 l 575 455 l 671 469 l 671 391 l 92 134 l 92 263 z "},"?":{"ha":656,"x_min":51,"x_max":602,"o":"m 368 278 l 242 278 q 254 385 243 343 q 291 461 265 427 q 359 540 317 496 q 417 600 391 572 q 459 661 443 628 q 475 740 475 694 q 459 821 475 787 q 410 873 442 854 q 330 891 378 891 q 256 877 291 891 q 199 833 220 863 q 176 756 177 804 l 51 756 q 89 888 52 833 q 189 972 126 943 q 330 1001 252 1001 q 477 970 416 1001 q 570 881 538 939 q 602 743 602 823 q 577 631 602 682 q 513 535 552 580 q 431 450 475 490 q 381 372 394 415 q 368 278 368 328 m 237 63 q 256 115 237 94 q 311 136 275 136 q 366 115 347 136 q 385 63 385 94 q 366 13 385 34 q 311 -8 347 -8 q 256 13 275 -8 q 237 63 237 34 z "},"@":{"ha":1247,"x_min":74,"x_max":1182,"o":"m 1177 341 q 1158 216 1175 279 q 1109 101 1142 153 q 1025 17 1077 49 q 900 -14 973 -14 q 818 2 853 -14 q 761 50 783 19 q 731 125 739 81 q 728 224 722 170 l 762 600 l 862 600 l 827 224 q 830 143 823 174 q 850 95 836 112 q 881 73 863 79 q 914 66 898 66 q 987 88 955 66 q 1041 147 1019 109 q 1075 234 1063 184 q 1090 341 1087 284 q 1081 527 1095 442 q 1034 677 1067 612 q 948 789 1001 743 q 822 858 895 834 q 654 882 749 882 q 497 856 569 882 q 367 781 425 829 q 269 663 310 732 q 204 509 228 595 q 177 324 181 423 q 188 137 172 222 q 238 -15 203 52 q 327 -128 273 -81 q 451 -198 380 -174 q 608 -222 522 -222 q 729 -208 668 -222 q 832 -170 791 -194 l 858 -247 q 740 -292 810 -277 q 606 -307 669 -307 q 417 -279 503 -307 q 267 -197 332 -251 q 158 -66 201 -143 q 94 109 115 11 q 79 324 74 208 q 112 534 83 435 q 191 712 141 632 q 311 850 241 792 q 468 939 380 908 q 657 970 555 970 q 846 942 762 970 q 995 860 931 913 q 1101 729 1059 806 q 1163 554 1143 652 q 1177 341 1182 456 m 481 283 q 481 199 476 236 q 499 136 486 161 q 535 97 513 110 q 587 83 557 83 q 628 93 606 83 q 671 124 650 103 q 710 179 692 145 q 741 260 728 213 l 785 212 q 745 114 770 156 q 690 43 720 72 q 625 0 659 15 q 555 -14 591 -14 q 469 7 506 -14 q 408 68 431 28 q 376 162 385 107 q 373 283 367 216 q 398 415 379 355 q 445 523 417 475 q 509 604 473 570 q 585 654 545 637 q 667 671 625 671 q 782 650 740 671 q 862 600 824 629 l 804 532 q 753 568 785 551 q 677 584 721 584 q 608 565 640 584 q 549 508 575 546 q 505 414 523 470 q 481 283 488 358 z "},"A":{"ha":906,"x_min":20,"x_max":888,"o":"m 480 900 l 153 0 l 20 0 l 396 987 l 482 987 l 480 900 m 754 0 l 427 900 l 425 987 l 511 987 l 888 0 l 754 0 m 737 366 l 737 258 l 182 258 l 182 366 l 737 366 z "},"B":{"ha":865,"x_min":115,"x_max":787,"o":"m 467 462 l 216 462 l 215 567 l 442 567 q 541 586 498 567 q 606 641 583 605 q 629 726 629 676 q 609 814 629 780 q 546 864 588 848 q 438 880 503 880 l 245 880 l 245 0 l 115 0 l 115 987 l 438 987 q 574 972 514 987 q 675 925 633 957 q 739 843 717 892 q 760 724 760 793 q 729 614 760 663 q 643 534 698 565 q 513 494 587 503 l 467 462 m 460 0 l 165 0 l 239 106 l 460 106 q 567 128 523 106 q 633 190 610 150 q 656 283 656 229 q 637 378 656 338 q 575 440 617 418 q 467 462 533 462 l 280 462 l 281 567 l 536 567 l 564 529 q 685 489 635 523 q 761 401 734 454 q 787 285 787 349 q 746 129 787 193 q 633 33 706 66 q 460 0 559 0 z "},"C":{"ha":904,"x_min":81,"x_max":841,"o":"m 711 314 l 841 314 q 787 146 831 220 q 665 30 744 73 q 467 -14 585 -14 q 309 19 380 -14 q 187 112 238 52 q 109 256 136 172 q 81 444 81 340 l 81 543 q 109 731 81 646 q 188 876 136 815 q 313 968 240 936 q 478 1001 387 1001 q 667 959 590 1001 q 788 843 745 917 q 841 671 831 768 l 711 671 q 675 790 701 740 q 602 867 650 840 q 478 894 555 894 q 362 869 412 894 q 279 798 313 844 q 229 687 245 751 q 212 544 212 623 l 212 444 q 227 308 212 372 q 273 196 242 244 q 353 120 304 148 q 467 93 401 93 q 600 119 550 93 q 674 195 649 146 q 711 314 700 245 z "},"D":{"ha":911,"x_min":115,"x_max":829,"o":"m 382 0 l 176 0 l 177 106 l 382 106 q 558 151 488 106 q 664 276 629 195 q 700 464 700 356 l 700 524 q 680 675 700 609 q 620 787 659 741 q 524 857 581 833 q 394 880 467 880 l 172 880 l 172 987 l 394 987 q 571 955 491 987 q 709 862 651 923 q 798 716 767 802 q 829 523 829 630 l 829 464 q 798 271 829 357 q 708 125 767 185 q 567 32 650 64 q 382 0 485 0 m 245 987 l 245 0 l 115 0 l 115 987 l 245 987 z "},"E":{"ha":789,"x_min":115,"x_max":742,"o":"m 742 106 l 742 0 l 219 0 l 219 106 l 742 106 m 245 987 l 245 0 l 115 0 l 115 987 l 245 987 m 673 563 l 673 456 l 219 456 l 219 563 l 673 563 m 735 987 l 735 880 l 219 880 l 219 987 l 735 987 z "},"F":{"ha":768,"x_min":115,"x_max":726,"o":"m 245 987 l 245 0 l 115 0 l 115 987 l 245 987 m 659 543 l 659 436 l 217 436 l 217 543 l 659 543 m 726 987 l 726 880 l 217 880 l 217 987 l 726 987 z "},"G":{"ha":946,"x_min":83,"x_max":844,"o":"m 844 492 l 844 130 q 786 70 826 103 q 676 11 746 36 q 495 -14 606 -14 q 329 18 405 -14 q 198 110 254 50 q 113 258 143 171 q 83 456 83 345 l 83 532 q 109 730 83 643 q 186 877 135 817 q 311 969 237 938 q 480 1001 385 1001 q 670 962 593 1001 q 789 854 746 923 q 844 699 832 786 l 713 699 q 679 796 705 752 q 604 867 652 840 q 480 894 556 894 q 361 869 412 894 q 279 797 311 844 q 230 684 246 750 q 214 534 214 617 l 214 456 q 234 303 214 370 q 292 189 254 236 q 381 117 329 142 q 496 93 433 93 q 609 105 566 93 q 677 133 652 117 q 714 165 701 150 l 714 386 l 486 386 l 486 492 l 844 492 z "},"H":{"ha":991,"x_min":115,"x_max":873,"o":"m 760 563 l 760 456 l 225 456 l 225 563 l 760 563 m 245 987 l 245 0 l 115 0 l 115 987 l 245 987 m 873 987 l 873 0 l 743 0 l 743 987 l 873 987 z "},"I":{"ha":378,"x_min":124,"x_max":255,"o":"m 255 987 l 255 0 l 124 0 l 124 987 l 255 987 z "},"J":{"ha":766,"x_min":36,"x_max":659,"o":"m 529 288 l 529 987 l 659 987 l 659 288 q 619 123 659 191 q 509 21 579 56 q 348 -14 439 -14 q 186 18 257 -14 q 76 113 116 49 q 36 273 36 176 l 167 273 q 190 171 167 211 q 254 112 213 131 q 348 93 295 93 q 440 115 399 93 q 505 181 481 137 q 529 288 529 224 z "},"K":{"ha":871,"x_min":115,"x_max":871,"o":"m 245 987 l 245 0 l 115 0 l 115 987 l 245 987 m 842 987 l 431 527 l 201 288 l 179 427 l 353 618 l 684 987 l 842 987 m 715 0 l 350 481 l 428 585 l 871 0 l 715 0 z "},"L":{"ha":748,"x_min":115,"x_max":713,"o":"m 713 106 l 713 0 l 220 0 l 220 106 l 713 106 m 245 987 l 245 0 l 115 0 l 115 987 l 245 987 z "},"M":{"ha":1213,"x_min":115,"x_max":1097,"o":"m 156 987 l 283 987 l 606 182 l 929 987 l 1057 987 l 655 0 l 556 0 l 156 987 m 115 987 l 227 987 l 245 385 l 245 0 l 115 0 l 115 987 m 985 987 l 1097 987 l 1097 0 l 967 0 l 967 385 l 985 987 z "},"N":{"ha":991,"x_min":115,"x_max":874,"o":"m 874 987 l 874 0 l 743 0 l 245 762 l 245 0 l 115 0 l 115 987 l 245 987 l 745 224 l 745 987 l 874 987 z "},"O":{"ha":956,"x_min":81,"x_max":875,"o":"m 875 525 l 875 463 q 847 263 875 351 q 767 113 819 175 q 642 19 715 52 q 479 -14 569 -14 q 318 19 391 -14 q 192 113 245 52 q 110 263 139 175 q 81 463 81 351 l 81 525 q 110 724 81 636 q 191 874 138 812 q 317 968 244 936 q 477 1001 390 1001 q 641 968 568 1001 q 766 874 713 936 q 847 724 819 812 q 875 525 875 636 m 745 463 l 745 526 q 727 682 745 614 q 675 796 709 750 q 590 866 640 842 q 477 890 541 890 q 367 866 416 890 q 283 796 318 842 q 229 682 248 750 q 210 526 210 614 l 210 463 q 229 306 210 374 q 284 191 248 237 q 369 121 319 144 q 479 97 418 97 q 592 121 543 97 q 676 191 642 144 q 728 306 710 237 q 745 463 745 374 z "},"P":{"ha":876,"x_min":115,"x_max":825,"o":"m 479 387 l 215 387 l 215 494 l 479 494 q 603 518 555 494 q 672 586 650 543 q 694 685 694 629 q 672 781 694 736 q 603 853 650 825 q 479 880 555 880 l 245 880 l 245 0 l 115 0 l 115 987 l 479 987 q 668 949 591 987 q 785 842 745 910 q 825 686 825 774 q 785 524 825 591 q 668 422 745 457 q 479 387 591 387 z "},"Q":{"ha":956,"x_min":75,"x_max":872,"o":"m 621 113 l 872 -85 l 784 -167 l 537 29 l 621 113 m 869 525 l 869 463 q 841 263 869 351 q 761 113 813 175 q 636 19 709 52 q 473 -14 563 -14 q 312 19 385 -14 q 186 113 239 52 q 104 263 133 175 q 75 463 75 351 l 75 525 q 103 724 75 636 q 185 874 132 812 q 311 968 238 936 q 471 1001 384 1001 q 635 968 562 1001 q 760 874 708 936 q 841 724 812 812 q 869 525 869 636 m 739 463 l 739 526 q 721 682 739 614 q 669 796 703 750 q 585 866 634 842 q 471 890 535 890 q 362 866 411 890 q 277 796 313 842 q 223 682 242 750 q 204 526 204 614 l 204 463 q 223 306 204 374 q 278 191 242 237 q 363 121 313 144 q 473 97 412 97 q 586 121 536 97 q 670 191 635 144 q 722 306 704 237 q 739 463 739 374 z "},"R":{"ha":856,"x_min":115,"x_max":831,"o":"m 115 987 l 441 987 q 630 954 553 987 q 747 853 707 920 q 787 691 787 787 q 760 567 787 623 q 681 472 732 511 q 559 414 630 433 l 522 400 l 215 400 l 214 507 l 446 507 q 563 531 516 507 q 633 598 610 556 q 657 691 657 640 q 635 791 657 748 q 565 857 612 833 q 441 880 517 880 l 245 880 l 245 0 l 115 0 l 115 987 m 692 0 l 452 448 l 588 448 l 831 8 l 831 0 l 692 0 z "},"S":{"ha":825,"x_min":55,"x_max":772,"o":"m 641 250 q 630 311 641 284 q 594 359 620 338 q 522 401 568 381 q 406 441 476 420 q 274 489 333 463 q 173 551 215 516 q 109 630 131 585 q 86 732 86 675 q 110 839 86 790 q 178 924 134 888 q 284 981 222 960 q 422 1001 346 1001 q 611 959 533 1001 q 729 848 688 916 q 770 703 770 780 l 640 703 q 616 801 640 758 q 544 869 592 844 q 422 894 496 894 q 307 873 352 894 q 239 816 261 852 q 217 734 217 780 q 230 677 217 703 q 272 630 243 652 q 343 590 300 608 q 448 555 387 572 q 593 502 532 531 q 694 436 654 473 q 753 354 734 400 q 772 251 772 309 q 748 142 772 191 q 678 58 724 93 q 569 5 633 24 q 428 -14 506 -14 q 293 5 359 -14 q 173 62 227 24 q 87 156 119 100 q 55 286 55 212 l 185 286 q 205 199 185 235 q 259 139 224 163 q 337 104 293 115 q 428 93 380 93 q 544 112 496 93 q 616 166 591 131 q 641 250 641 201 z "},"T":{"ha":829,"x_min":34,"x_max":797,"o":"m 479 987 l 479 0 l 351 0 l 351 987 l 479 987 m 797 987 l 797 880 l 34 880 l 34 987 l 797 987 z "},"U":{"ha":901,"x_min":95,"x_max":810,"o":"m 680 987 l 810 987 l 810 319 q 760 134 810 208 q 629 23 711 60 q 452 -14 547 -14 q 270 23 351 -14 q 142 134 189 60 q 95 319 95 208 l 95 987 l 224 987 l 224 319 q 253 192 224 242 q 333 117 281 142 q 452 93 384 93 q 571 117 520 93 q 651 192 623 142 q 680 319 680 242 l 680 987 z "},"V":{"ha":884,"x_min":20,"x_max":866,"o":"m 433 150 l 724 987 l 866 987 l 500 0 l 399 0 l 433 150 m 161 987 l 450 150 l 486 0 l 385 0 l 20 987 l 161 987 z "},"W":{"ha":1232,"x_min":41,"x_max":1202,"o":"m 374 298 l 570 987 l 665 987 l 610 720 l 399 0 l 305 0 l 374 298 m 172 987 l 328 312 l 374 0 l 281 0 l 41 987 l 172 987 m 919 313 l 1072 987 l 1202 987 l 964 0 l 870 0 l 919 313 m 680 987 l 870 298 l 939 0 l 845 0 l 642 720 l 586 987 l 680 987 z "},"X":{"ha":871,"x_min":39,"x_max":834,"o":"m 199 987 l 437 609 l 674 987 l 827 987 l 515 498 l 834 0 l 680 0 l 437 386 l 193 0 l 39 0 l 359 498 l 47 987 l 199 987 z "},"Y":{"ha":834,"x_min":10,"x_max":822,"o":"m 160 987 l 416 492 l 673 987 l 822 987 l 481 369 l 481 0 l 351 0 l 351 369 l 10 987 l 160 987 z "},"Z":{"ha":832,"x_min":59,"x_max":777,"o":"m 777 106 l 777 0 l 109 0 l 109 106 l 777 106 m 755 892 l 140 0 l 59 0 l 59 98 l 674 987 l 755 987 l 755 892 m 700 987 l 700 880 l 68 880 l 68 987 l 700 987 z "},"[":{"ha":368,"x_min":100,"x_max":355,"o":"m 355 1128 l 355 1025 l 225 1025 l 225 -109 l 355 -109 l 355 -212 l 100 -212 l 100 1128 l 355 1128 z "},"\\\\":{"ha":570,"x_min":28,"x_max":559,"o":"m 440 -85 l 28 987 l 147 987 l 559 -85 l 440 -85 z "},"]":{"ha":368,"x_min":7,"x_max":263,"o":"m 7 1025 l 7 1128 l 263 1128 l 263 -212 l 7 -212 l 7 -109 l 137 -109 l 137 1025 l 7 1025 z "},"^":{"ha":581,"x_min":43,"x_max":535,"o":"m 298 842 l 160 494 l 43 494 l 246 987 l 322 987 l 298 842 m 418 494 l 281 842 l 256 987 l 333 987 l 535 494 l 418 494 z "},"_":{"ha":627,"x_min":3,"x_max":625,"o":"m 625 0 l 625 -103 l 3 -103 l 3 0 l 625 0 z "},"`":{"ha":429,"x_min":39,"x_max":321,"o":"m 191 1042 l 321 842 l 214 842 l 39 1042 l 191 1042 z "},"a":{"ha":755,"x_min":74,"x_max":680,"o":"m 528 125 l 528 503 q 511 579 528 547 q 459 629 494 611 q 374 646 425 646 q 291 630 326 646 q 235 587 255 614 q 215 530 215 561 l 90 530 q 110 608 90 570 q 169 679 130 647 q 261 729 207 710 q 381 747 315 747 q 523 720 461 747 q 619 638 584 693 q 654 502 654 584 l 654 160 q 660 82 654 123 q 680 11 667 41 l 680 0 l 549 0 q 534 58 539 22 q 528 125 528 94 m 550 445 l 551 357 l 425 357 q 329 348 371 357 q 258 323 287 340 q 215 280 230 306 q 200 221 200 255 q 216 158 200 186 q 263 113 231 130 q 340 96 294 96 q 442 121 398 96 q 512 180 486 145 q 541 249 538 216 l 594 189 q 568 125 589 160 q 512 59 547 91 q 430 7 477 28 q 322 -14 382 -14 q 192 16 248 -14 q 105 94 136 45 q 74 204 74 143 q 97 308 74 263 q 163 384 120 353 q 268 429 207 414 q 404 445 329 445 l 550 445 z "},"b":{"ha":780,"x_min":95,"x_max":717,"o":"m 95 1042 l 221 1042 l 221 142 l 210 0 l 95 0 l 95 1042 m 717 373 l 717 359 q 698 211 717 279 q 642 92 679 142 q 553 14 606 42 q 431 -14 500 -14 q 309 11 361 -14 q 220 80 256 35 q 163 190 184 125 q 134 335 142 254 l 134 397 q 163 543 142 479 q 220 653 184 608 q 309 723 256 699 q 430 747 361 747 q 553 721 499 747 q 643 644 606 694 q 698 526 679 595 q 717 373 717 457 m 591 359 l 591 373 q 581 476 591 428 q 548 562 570 525 q 489 620 526 599 q 399 642 452 642 q 316 625 351 642 q 257 582 281 609 q 217 519 233 554 q 195 447 202 484 l 195 283 q 230 192 205 236 q 297 121 255 149 q 400 93 338 93 q 487 114 451 93 q 546 171 524 134 q 580 256 569 208 q 591 359 591 304 z "},"c":{"ha":727,"x_min":63,"x_max":682,"o":"m 389 90 q 472 108 434 90 q 534 158 510 126 q 562 232 559 191 l 682 232 q 638 111 678 167 q 532 21 597 55 q 389 -14 467 -14 q 245 16 307 -14 q 143 96 184 45 q 83 213 103 146 q 63 353 63 279 l 63 381 q 83 521 63 455 q 143 638 103 587 q 245 718 184 689 q 389 747 307 747 q 540 712 475 747 q 641 617 604 677 q 682 481 678 557 l 562 481 q 537 564 559 527 q 477 622 515 600 q 389 644 439 644 q 293 622 332 644 q 231 561 254 599 q 198 476 208 522 q 189 381 189 429 l 189 353 q 198 258 189 304 q 230 173 208 211 q 292 112 253 135 q 389 90 331 90 z "},"d":{"ha":783,"x_min":64,"x_max":684,"o":"m 558 142 l 558 1042 l 684 1042 l 684 0 l 569 0 l 558 142 m 64 359 l 64 373 q 85 526 64 457 q 144 644 106 595 q 236 721 182 694 q 355 747 289 747 q 476 723 424 747 q 564 653 528 699 q 621 543 600 608 q 650 397 642 479 l 650 335 q 622 190 643 254 q 564 80 600 125 q 475 11 528 35 q 353 -14 423 -14 q 236 14 289 -14 q 144 92 182 42 q 85 211 106 142 q 64 359 64 279 m 191 373 l 191 359 q 202 256 191 304 q 237 171 213 208 q 297 114 260 134 q 385 93 334 93 q 487 119 447 93 q 552 189 528 146 q 590 283 576 233 l 590 447 q 567 519 582 484 q 527 582 551 554 q 468 625 503 609 q 386 642 433 642 q 297 620 334 642 q 237 562 260 599 q 202 476 213 525 q 191 373 191 428 z "},"e":{"ha":736,"x_min":63,"x_max":686,"o":"m 400 -14 q 261 13 323 -14 q 155 86 199 39 q 87 199 111 134 q 63 341 63 264 l 63 370 q 90 529 63 459 q 161 648 116 600 q 264 722 207 697 q 384 747 322 747 q 520 720 463 747 q 614 645 577 693 q 668 531 650 596 q 686 388 686 465 l 686 332 l 138 332 l 138 434 l 560 434 l 560 444 q 540 538 557 492 q 486 614 523 585 q 384 644 448 644 q 305 626 341 644 q 243 573 269 608 q 203 487 218 538 q 189 370 189 436 l 189 341 q 204 243 189 289 q 247 163 218 197 q 315 109 275 128 q 407 89 355 89 q 519 116 473 89 q 600 189 566 143 l 676 128 q 616 60 652 92 q 526 7 579 27 q 400 -14 473 -14 z "},"f":{"ha":483,"x_min":41,"x_max":485,"o":"m 283 0 l 157 0 l 157 811 q 186 945 157 890 q 269 1028 215 1000 q 398 1056 323 1056 q 442 1053 420 1056 q 485 1045 464 1050 l 478 943 q 446 947 464 946 q 410 949 428 949 q 341 933 370 949 q 298 886 313 917 q 283 811 283 856 l 283 0 m 439 734 l 439 637 l 41 637 l 41 734 l 439 734 z "},"g":{"ha":780,"x_min":66,"x_max":685,"o":"m 571 734 l 685 734 l 685 16 q 646 -150 685 -81 q 536 -254 606 -218 q 374 -290 466 -290 q 285 -278 336 -290 q 185 -238 234 -266 q 102 -162 136 -210 l 168 -87 q 265 -165 214 -143 q 365 -186 315 -186 q 468 -164 425 -186 q 535 -98 511 -142 q 559 9 559 -54 l 559 572 l 571 734 m 66 359 l 66 373 q 86 526 66 457 q 143 644 106 595 q 235 721 181 694 q 355 747 288 747 q 476 723 425 747 q 565 653 528 699 q 622 543 601 608 q 651 397 643 479 l 651 335 q 622 190 644 254 q 565 80 601 125 q 476 11 528 35 q 354 -14 424 -14 q 235 14 288 -14 q 144 92 182 42 q 86 211 106 142 q 66 359 66 279 m 191 373 l 191 359 q 202 256 191 304 q 237 171 214 208 q 297 114 260 134 q 385 93 334 93 q 488 119 447 93 q 552 189 528 146 q 590 283 576 233 l 590 447 q 567 519 583 484 q 528 582 552 554 q 469 625 504 609 q 386 642 433 642 q 297 620 334 642 q 237 562 260 599 q 202 476 214 525 q 191 373 191 428 z "},"h":{"ha":765,"x_min":96,"x_max":673,"o":"m 221 1042 l 221 0 l 96 0 l 96 1042 l 221 1042 m 191 395 l 139 397 q 161 536 140 472 q 222 648 183 600 q 316 721 262 695 q 437 747 371 747 q 535 733 492 747 q 609 686 578 718 q 656 604 640 654 q 673 481 673 553 l 673 0 l 547 0 l 547 482 q 530 575 547 540 q 480 626 513 610 q 400 642 448 642 q 315 622 353 642 q 249 568 277 602 q 207 489 222 533 q 191 395 191 444 z "},"i":{"ha":338,"x_min":96,"x_max":245,"o":"m 232 734 l 232 0 l 106 0 l 106 734 l 232 734 m 96 928 q 115 980 96 959 q 170 1001 134 1001 q 225 980 206 1001 q 245 928 245 959 q 225 879 245 899 q 170 858 206 858 q 115 879 134 858 q 96 928 96 899 z "},"j":{"ha":332,"x_min":-45,"x_max":235,"o":"m 99 734 l 225 734 l 225 -87 q 204 -201 225 -155 q 140 -272 182 -248 q 33 -296 98 -296 q -6 -293 16 -296 q -45 -285 -29 -290 l -44 -184 q -15 -188 -31 -186 q 14 -190 1 -190 q 60 -180 41 -190 q 89 -147 79 -170 q 99 -87 99 -125 l 99 734 m 86 928 q 105 980 86 959 q 160 1001 124 1001 q 216 980 197 1001 q 235 928 235 959 q 216 879 235 899 q 160 858 197 858 q 105 879 124 858 q 86 928 86 899 z "},"k":{"ha":704,"x_min":96,"x_max":703,"o":"m 222 1042 l 222 0 l 96 0 l 96 1042 l 222 1042 m 670 734 l 350 391 l 171 205 l 161 339 l 289 492 l 517 734 l 670 734 m 555 0 l 294 350 l 359 462 l 703 0 l 555 0 z "},"l":{"ha":338,"x_min":106,"x_max":232,"o":"m 232 1042 l 232 0 l 106 0 l 106 1042 l 232 1042 z "},"m":{"ha":1218,"x_min":94,"x_max":1124,"o":"m 220 588 l 220 0 l 94 0 l 94 734 l 214 734 l 220 588 m 195 395 l 136 397 q 156 536 137 472 q 212 648 175 600 q 305 721 250 695 q 434 747 361 747 q 529 733 486 747 q 604 687 572 718 q 654 607 636 656 q 671 489 671 558 l 671 0 l 546 0 l 546 483 q 527 575 546 541 q 472 626 507 610 q 389 642 437 642 q 296 622 334 642 q 237 568 259 602 q 204 489 214 533 q 195 395 195 444 m 670 464 l 586 438 q 606 554 587 498 q 662 653 625 610 q 753 722 699 696 q 878 747 808 747 q 982 732 937 747 q 1060 684 1028 716 q 1107 602 1091 652 q 1124 482 1124 551 l 1124 0 l 998 0 l 998 484 q 978 579 998 545 q 924 628 959 614 q 841 642 889 642 q 768 627 800 642 q 714 588 736 613 q 681 532 692 564 q 670 464 670 500 z "},"n":{"ha":767,"x_min":96,"x_max":673,"o":"m 221 577 l 221 0 l 96 0 l 96 734 l 214 734 l 221 577 m 191 395 l 139 397 q 161 536 140 472 q 222 648 183 600 q 316 721 262 695 q 437 747 371 747 q 535 733 492 747 q 609 686 578 718 q 656 604 640 654 q 673 481 673 553 l 673 0 l 547 0 l 547 482 q 530 575 547 540 q 480 626 513 610 q 400 642 448 642 q 315 622 353 642 q 249 568 277 602 q 207 489 222 533 q 191 395 191 444 z "},"o":{"ha":792,"x_min":62,"x_max":730,"o":"m 62 359 l 62 374 q 85 522 62 454 q 152 641 109 590 q 257 719 195 691 q 395 747 319 747 q 535 719 473 747 q 641 641 597 691 q 707 522 684 590 q 730 374 730 454 l 730 359 q 707 212 730 279 q 641 93 684 144 q 535 15 597 43 q 397 -14 474 -14 q 258 15 319 -14 q 152 93 196 43 q 85 212 109 144 q 62 359 62 279 m 188 374 l 188 359 q 201 255 188 304 q 240 170 214 207 q 305 111 266 132 q 397 90 345 90 q 487 111 448 90 q 552 170 526 132 q 591 255 578 207 q 604 359 604 304 l 604 374 q 591 477 604 429 q 552 563 578 526 q 487 623 526 601 q 395 644 448 644 q 305 623 344 644 q 240 563 266 601 q 201 477 214 526 q 188 374 188 429 z "},"p":{"ha":780,"x_min":95,"x_max":715,"o":"m 221 593 l 221 -282 l 95 -282 l 95 734 l 210 734 l 221 593 m 715 373 l 715 359 q 696 211 715 279 q 641 92 677 142 q 552 14 605 42 q 431 -14 499 -14 q 307 9 361 -14 q 216 77 254 33 q 157 182 179 121 q 127 321 135 244 l 127 397 q 157 543 135 479 q 217 653 180 608 q 307 723 254 699 q 429 747 359 747 q 551 721 498 747 q 642 644 605 694 q 697 526 678 595 q 715 373 715 457 m 589 359 l 589 373 q 578 476 589 428 q 542 562 566 525 q 481 620 518 599 q 392 642 444 642 q 310 625 345 642 q 250 582 275 609 q 211 519 226 554 q 188 447 195 484 l 188 271 q 226 182 201 224 q 291 115 250 140 q 393 90 332 90 q 481 111 444 90 q 542 170 518 132 q 578 255 566 207 q 589 359 589 304 z "},"q":{"ha":789,"x_min":64,"x_max":684,"o":"m 557 -282 l 557 593 l 568 734 l 684 734 l 684 -282 l 557 -282 m 64 359 l 64 373 q 84 526 64 457 q 142 644 104 595 q 234 721 180 694 q 357 747 288 747 q 478 723 426 747 q 568 653 531 699 q 627 543 605 608 q 656 397 648 479 l 656 335 q 627 190 649 254 q 569 80 606 125 q 478 11 532 35 q 355 -14 425 -14 q 234 14 288 -14 q 142 92 180 42 q 84 211 104 142 q 64 359 64 279 m 191 373 l 191 359 q 202 255 191 304 q 238 170 214 207 q 299 111 262 132 q 387 90 336 90 q 491 117 449 90 q 557 188 532 144 q 596 283 583 233 l 596 447 q 573 519 589 484 q 532 583 557 555 q 471 628 507 611 q 388 644 435 644 q 299 623 336 644 q 238 563 262 601 q 202 477 214 526 q 191 373 191 428 z "},"r":{"ha":471,"x_min":96,"x_max":450,"o":"m 221 618 l 221 0 l 96 0 l 96 734 l 218 734 l 221 618 m 450 738 l 450 621 q 420 626 434 625 q 389 627 406 627 q 312 613 345 627 q 256 575 279 600 q 219 517 233 551 q 202 444 206 484 l 167 423 q 180 548 167 490 q 221 651 193 606 q 292 722 249 696 q 395 747 335 747 q 426 744 408 747 q 450 738 444 741 z "},"s":{"ha":717,"x_min":64,"x_max":648,"o":"m 523 195 q 511 245 523 222 q 463 288 499 269 q 354 321 427 307 q 244 352 293 334 q 160 395 195 370 q 108 454 126 420 q 90 533 90 488 q 109 615 90 576 q 164 684 128 654 q 250 730 199 713 q 361 747 300 747 q 512 716 450 747 q 608 633 574 685 q 641 518 641 581 l 515 518 q 497 577 515 549 q 445 625 479 606 q 361 644 411 644 q 277 628 309 644 q 230 588 245 612 q 216 536 216 564 q 223 500 216 516 q 248 471 230 484 q 300 446 267 458 q 385 423 333 435 q 533 374 475 403 q 620 304 591 346 q 648 204 648 263 q 628 116 648 156 q 571 47 608 76 q 481 2 533 18 q 365 -14 429 -14 q 201 21 268 -14 q 99 111 134 56 q 64 227 64 165 l 191 227 q 220 145 193 175 q 287 102 248 115 q 365 90 326 90 q 451 103 416 90 q 505 140 486 117 q 523 195 523 164 z "},"t":{"ha":454,"x_min":6,"x_max":406,"o":"m 403 734 l 403 637 l 6 637 l 6 734 l 403 734 m 140 912 l 266 912 l 266 182 q 277 125 266 144 q 307 100 289 106 q 347 94 326 94 q 379 97 362 94 q 406 102 397 100 l 406 0 q 367 -9 391 -5 q 309 -14 343 -14 q 224 5 263 -14 q 163 66 186 23 q 140 182 140 109 l 140 912 z "},"u":{"ha":766,"x_min":93,"x_max":671,"o":"m 545 170 l 545 734 l 671 734 l 671 0 l 551 0 l 545 170 m 568 324 l 621 326 q 605 190 621 252 q 556 83 590 128 q 467 12 522 37 q 334 -14 412 -14 q 236 2 280 -14 q 159 50 191 18 q 110 135 127 83 q 93 260 93 187 l 93 734 l 218 734 l 218 259 q 230 177 218 210 q 260 126 241 145 q 303 100 279 108 q 353 93 328 93 q 480 124 433 93 q 548 207 527 155 q 568 324 568 260 z "},"v":{"ha":673,"x_min":22,"x_max":648,"o":"m 319 113 l 519 734 l 648 734 l 384 0 l 300 0 l 319 113 m 151 734 l 358 110 l 372 0 l 288 0 l 22 734 l 151 734 z "},"w":{"ha":1044,"x_min":29,"x_max":1011,"o":"m 281 130 l 470 734 l 553 734 l 536 614 l 345 0 l 264 0 l 281 130 m 155 734 l 315 123 l 327 0 l 242 0 l 29 734 l 155 734 m 733 128 l 886 734 l 1011 734 l 798 0 l 714 0 l 733 128 m 571 734 l 755 140 l 777 0 l 696 0 l 499 615 l 483 734 l 571 734 z "},"x":{"ha":689,"x_min":28,"x_max":659,"o":"m 180 734 l 341 467 l 504 734 l 651 734 l 411 372 l 659 0 l 513 0 l 344 275 l 174 0 l 28 0 l 275 372 l 36 734 l 180 734 z "},"y":{"ha":657,"x_min":15,"x_max":640,"o":"m 302 76 l 506 734 l 640 734 l 346 -113 q 319 -172 336 -140 q 277 -232 302 -203 q 215 -278 251 -260 q 128 -296 178 -296 q 90 -292 113 -296 q 58 -286 67 -288 l 57 -184 q 74 -185 62 -184 q 91 -186 86 -186 q 163 -175 134 -186 q 214 -138 193 -164 q 250 -66 235 -112 l 302 76 m 152 734 l 342 164 l 375 32 l 285 -14 l 15 734 l 152 734 z "},"z":{"ha":689,"x_min":60,"x_max":642,"o":"m 642 103 l 642 0 l 109 0 l 109 103 l 642 103 m 623 645 l 137 0 l 60 0 l 60 92 l 543 734 l 623 734 l 623 645 m 567 734 l 567 630 l 66 630 l 66 734 l 567 734 z "},"{":{"ha":470,"x_min":43,"x_max":455,"o":"m 429 1083 l 455 1006 q 344 916 374 981 q 313 768 313 851 l 313 627 q 286 504 313 559 q 199 416 258 449 q 43 384 140 384 l 43 467 q 154 510 120 467 q 187 627 187 553 l 187 768 q 209 901 187 839 q 284 1010 231 963 q 429 1083 336 1057 m 455 -170 l 429 -248 q 284 -175 336 -222 q 209 -66 231 -128 q 187 67 187 -4 l 187 207 q 172 292 187 256 q 126 348 157 328 q 43 368 94 368 l 43 451 q 199 418 140 451 q 286 331 258 386 q 313 207 313 275 l 313 67 q 327 -36 313 12 q 371 -118 340 -83 q 455 -170 401 -153 z "},"|":{"ha":339,"x_min":119,"x_max":220,"o":"m 220 987 l 220 -183 l 119 -183 l 119 987 l 220 987 z "},"}":{"ha":470,"x_min":14,"x_max":425,"o":"m 14 1006 l 40 1083 q 185 1010 133 1057 q 260 901 238 963 q 281 768 281 839 l 281 627 q 296 542 281 578 q 343 486 311 506 q 425 467 374 467 l 425 390 q 270 421 330 390 q 183 506 210 452 q 155 627 155 559 l 155 768 q 142 871 155 823 q 99 954 130 919 q 14 1006 68 989 m 40 -248 l 14 -170 q 98 -118 67 -153 q 142 -36 129 -83 q 155 67 155 12 l 155 207 q 183 329 155 275 q 270 413 210 382 q 425 444 330 444 l 425 368 q 315 325 349 368 q 281 207 281 281 l 281 67 q 260 -66 281 -4 q 185 -175 238 -128 q 40 -248 133 -222 z "},"~":{"ha":945,"x_min":89,"x_max":857,"o":"m 753 527 l 857 528 q 841 429 857 475 q 795 348 825 383 q 725 293 766 313 q 637 273 685 273 q 533 297 578 273 q 435 367 488 321 q 371 416 400 399 q 308 434 342 434 q 249 417 273 434 q 211 370 224 401 q 198 297 198 340 l 89 296 q 105 394 89 349 q 150 473 121 439 q 219 526 179 507 q 308 545 260 545 q 414 519 368 545 q 510 450 460 494 q 575 400 547 416 q 637 383 604 383 q 698 401 672 383 q 739 452 724 420 q 753 527 753 485 z "},"¡":{"ha":339,"x_min":94,"x_max":243,"o":"m 106 -245 l 116 464 l 229 464 l 239 -245 l 106 -245 m 243 675 q 224 625 243 646 q 169 604 205 604 q 114 625 133 604 q 94 675 94 646 q 114 726 94 705 q 169 747 133 747 q 224 726 205 747 q 243 675 243 705 z "},"¢":{"ha":760,"x_min":71,"x_max":690,"o":"m 454 894 l 454 699 l 328 699 l 328 894 l 454 894 m 454 28 l 454 -166 l 328 -166 l 328 28 l 454 28 m 398 90 q 481 108 443 90 q 543 158 519 126 q 571 232 568 191 l 690 232 q 646 111 687 167 q 541 21 606 55 q 398 -14 476 -14 q 254 16 315 -14 q 152 96 192 45 q 91 213 111 146 q 71 353 71 279 l 71 381 q 91 521 71 455 q 152 638 111 587 q 254 718 193 689 q 398 747 315 747 q 549 712 484 747 q 650 617 613 677 q 690 481 687 557 l 571 481 q 546 564 568 527 q 486 622 524 600 q 398 644 448 644 q 301 622 340 644 q 240 561 262 599 q 207 476 217 522 q 197 381 197 429 l 197 353 q 207 258 197 304 q 239 173 216 211 q 301 112 262 135 q 398 90 340 90 z "},"£":{"ha":808,"x_min":62,"x_max":765,"o":"m 765 0 l 64 0 l 64 106 l 765 106 l 765 0 m 517 422 l 62 422 l 62 529 l 517 529 l 517 422 m 295 705 l 310 273 q 292 154 311 209 q 235 71 273 98 l 117 106 q 154 141 140 113 q 174 205 168 169 q 180 272 180 242 l 165 705 q 204 864 165 798 q 312 966 243 930 q 466 1001 380 1001 q 617 968 555 1001 q 713 875 680 935 q 746 737 746 816 l 616 737 q 593 829 616 794 q 534 879 570 863 q 455 895 497 895 q 374 872 410 895 q 316 808 338 850 q 295 705 295 766 z "},"¤":{"ha":991,"x_min":71,"x_max":930,"o":"m 212 412 q 234 292 212 349 q 296 194 256 236 q 387 127 335 151 q 498 103 439 103 q 610 127 558 103 q 701 194 662 151 q 763 292 741 236 q 785 412 785 349 q 763 532 785 477 q 701 630 741 588 q 610 696 662 673 q 498 720 558 720 q 387 696 439 720 q 296 630 335 673 q 234 532 256 588 q 212 412 212 477 m 95 412 q 126 580 95 503 q 213 715 158 657 q 342 805 269 772 q 498 837 415 837 q 655 805 582 837 q 784 715 728 772 q 871 580 840 657 q 902 412 902 503 q 871 245 902 322 q 784 110 840 168 q 655 19 728 52 q 498 -14 582 -14 q 342 19 415 -14 q 213 110 269 52 q 126 245 158 168 q 95 412 95 322 m 930 765 l 793 625 l 703 718 l 840 858 l 930 765 m 297 122 l 160 -18 l 71 75 l 208 214 l 297 122 m 840 -18 l 703 121 l 793 214 l 930 75 l 840 -18 m 208 625 l 71 765 l 160 857 l 297 718 l 208 625 z "},"¥":{"ha":730,"x_min":10,"x_max":719,"o":"m 648 500 l 648 415 l 81 415 l 81 500 l 648 500 m 648 302 l 648 218 l 81 218 l 81 302 l 648 302 m 326 452 l 574 987 l 719 987 l 425 410 l 342 410 l 326 452 m 157 987 l 408 447 l 388 410 l 305 410 l 10 987 l 157 987 m 427 525 l 427 0 l 297 0 l 297 525 l 427 525 z "},"¦":{"ha":334,"x_min":100,"x_max":226,"o":"m 226 -183 l 100 -183 l 100 354 l 226 354 l 226 -183 m 226 987 l 226 473 l 100 473 l 100 987 l 226 987 z "},"§":{"ha":852,"x_min":62,"x_max":777,"o":"m 474 73 l 474 153 q 570 171 530 153 q 630 220 609 189 q 651 290 651 251 q 639 346 651 322 q 600 390 627 370 q 525 429 572 410 q 409 469 478 448 q 277 512 335 489 q 179 568 219 536 q 117 645 138 600 q 96 753 96 690 q 120 856 96 810 q 186 934 143 901 q 291 984 230 966 q 428 1002 352 1002 q 606 968 532 1002 q 721 869 681 934 q 761 709 761 804 l 635 709 q 611 805 635 762 q 541 873 587 848 q 428 899 495 899 q 311 879 357 899 q 244 827 266 859 q 222 755 222 794 q 232 696 222 721 q 269 653 243 672 q 341 617 294 634 q 458 580 387 600 q 593 535 534 559 q 693 478 652 511 q 755 401 734 446 q 777 292 777 355 q 755 200 777 241 q 694 131 734 159 q 598 88 654 103 q 474 73 543 73 m 356 593 l 356 511 q 263 493 300 511 q 209 445 227 475 q 191 375 191 414 q 202 316 191 341 q 239 272 212 292 q 312 235 265 252 q 432 197 359 217 q 566 152 507 176 q 664 97 624 128 q 725 20 704 65 q 746 -87 746 -24 q 723 -193 746 -146 q 656 -271 699 -239 q 552 -319 612 -302 q 416 -336 491 -336 q 288 -321 351 -336 q 173 -272 224 -306 q 92 -182 122 -238 q 62 -43 62 -125 l 187 -42 q 208 -133 187 -96 q 261 -191 228 -170 q 335 -223 295 -213 q 416 -233 376 -233 q 527 -214 481 -233 q 596 -162 572 -195 q 621 -89 621 -130 q 609 -34 621 -57 q 570 9 597 -10 q 497 47 543 28 q 382 85 451 65 q 250 130 309 106 q 150 186 191 154 q 87 265 109 219 q 66 374 66 311 q 86 464 66 424 q 144 533 106 505 q 236 577 182 562 q 356 593 290 593 z "},"¨":{"ha":581,"x_min":68,"x_max":509,"o":"m 68 930 q 87 981 68 960 q 142 1002 106 1002 q 198 981 179 1002 q 217 930 217 960 q 198 880 217 901 q 142 859 179 859 q 87 880 106 859 q 68 930 68 901 m 361 928 q 379 980 361 959 q 435 1001 398 1001 q 490 980 471 1001 q 509 928 509 959 q 490 879 509 899 q 435 858 471 858 q 379 879 398 858 q 361 928 361 899 z "},"©":{"ha":1091,"x_min":62,"x_max":1025,"o":"m 661 406 l 760 406 q 699 246 760 299 q 534 193 638 193 q 410 226 463 193 q 329 318 357 259 q 300 455 300 377 l 300 533 q 329 670 300 611 q 410 762 357 729 q 534 795 463 795 q 699 743 638 795 q 760 583 760 690 l 661 583 q 629 680 661 650 q 534 709 597 709 q 459 686 490 709 q 413 624 429 664 q 397 534 397 585 l 397 455 q 413 364 397 404 q 459 302 429 324 q 534 279 490 279 q 629 309 597 279 q 661 406 661 338 m 140 494 q 172 326 140 404 q 258 190 203 248 q 387 99 314 132 q 544 66 460 66 q 700 99 627 66 q 828 190 773 132 q 915 326 884 248 q 946 494 946 404 q 915 663 946 585 q 828 798 884 740 q 700 888 773 856 q 544 920 627 920 q 387 888 460 920 q 258 798 314 856 q 172 663 203 740 q 140 494 140 585 m 62 494 q 100 694 62 602 q 203 856 137 787 q 357 963 270 924 q 544 1001 444 1001 q 731 963 644 1001 q 884 856 818 924 q 987 694 950 787 q 1025 494 1025 602 q 987 294 1025 387 q 884 133 950 202 q 731 24 818 63 q 544 -14 644 -14 q 357 24 444 -14 q 203 133 270 63 q 100 294 137 202 q 62 494 62 387 z "},"ª":{"ha":621,"x_min":100,"x_max":532,"o":"m 404 585 l 404 815 q 394 865 404 844 q 367 896 385 885 q 319 906 348 906 q 246 888 273 906 q 219 835 219 870 l 110 844 q 136 925 110 890 q 209 981 162 961 q 319 1002 256 1002 q 421 981 378 1002 q 490 918 465 960 q 514 814 514 877 l 514 602 q 518 538 514 568 q 532 479 522 509 l 420 479 q 404 585 404 530 m 431 779 l 431 704 l 330 704 q 263 693 290 704 q 223 665 236 682 q 210 625 210 647 q 231 579 210 596 q 295 562 252 562 q 354 575 324 562 q 403 608 383 589 q 422 644 422 627 l 435 568 q 403 523 425 546 q 348 485 382 500 q 269 469 315 469 q 143 511 187 469 q 100 623 100 553 q 125 708 100 673 q 202 761 151 743 q 330 779 253 779 l 431 779 z "},"«":{"ha":652,"x_min":68,"x_max":589,"o":"m 365 642 l 188 369 l 68 370 l 68 378 l 269 642 l 365 642 m 188 375 l 365 102 l 269 102 l 68 366 l 68 374 l 188 375 m 589 642 l 412 369 l 293 370 l 293 378 l 493 642 l 589 642 m 412 375 l 589 102 l 493 102 l 293 366 l 293 374 l 412 375 z "},"¬":{"ha":769,"x_min":86,"x_max":650,"o":"m 650 543 l 650 433 l 86 433 l 86 543 l 650 543 m 650 492 l 650 255 l 524 255 l 524 492 l 650 492 z "},"®":{"ha":1092,"x_min":62,"x_max":1024,"o":"m 561 444 l 413 444 l 412 531 l 549 531 q 603 541 578 532 q 643 569 627 551 q 658 613 658 587 q 646 667 658 647 q 608 695 635 686 q 535 704 581 704 l 443 704 l 443 215 l 347 215 l 347 790 l 535 790 q 651 771 602 790 q 726 714 700 752 q 753 617 753 675 q 736 551 753 581 q 686 501 719 522 q 607 467 654 480 q 603 463 605 467 q 598 458 600 458 q 584 449 587 452 q 577 445 581 446 q 561 444 574 444 m 554 444 l 568 505 q 711 461 673 505 q 749 349 749 416 l 749 312 q 752 264 749 287 q 761 226 755 241 l 761 215 l 663 215 q 655 265 656 233 q 654 313 654 298 l 654 348 q 631 421 654 397 q 554 444 608 444 m 140 494 q 171 326 140 404 q 258 190 202 248 q 387 99 313 132 q 543 66 460 66 q 700 99 627 66 q 828 190 772 132 q 914 326 883 248 q 945 494 945 404 q 914 663 945 585 q 828 798 883 740 q 700 888 772 856 q 543 920 627 920 q 387 888 460 920 q 258 798 313 856 q 171 663 202 740 q 140 494 140 585 m 62 494 q 99 694 62 602 q 203 856 136 787 q 356 963 269 924 q 543 1001 444 1001 q 730 963 643 1001 q 883 856 817 924 q 987 694 949 787 q 1024 494 1024 602 q 987 294 1024 387 q 883 133 949 202 q 730 24 817 63 q 543 -14 643 -14 q 356 24 444 -14 q 203 133 269 63 q 99 294 136 202 q 62 494 62 387 z "},"¯":{"ha":637,"x_min":97,"x_max":552,"o":"m 552 980 l 552 884 l 97 884 l 97 980 l 552 980 z "},"°":{"ha":519,"x_min":89,"x_max":432,"o":"m 89 825 q 113 913 89 873 q 176 978 136 954 q 262 1002 215 1002 q 347 978 309 1002 q 409 913 386 954 q 432 825 432 873 q 409 738 432 777 q 347 674 386 698 q 262 651 309 651 q 176 674 215 651 q 113 738 136 698 q 89 825 89 777 m 173 825 q 199 763 173 788 q 262 738 225 738 q 323 763 298 738 q 348 825 348 788 q 323 889 348 863 q 262 915 298 915 q 199 889 225 915 q 173 825 173 863 z "},"±":{"ha":743,"x_min":66,"x_max":687,"o":"m 687 580 l 687 477 l 66 477 l 66 580 l 687 580 m 441 859 l 441 196 l 328 196 l 328 859 l 441 859 m 659 103 l 659 1 l 92 1 l 92 103 l 659 103 z "},"²":{"ha":509,"x_min":45,"x_max":463,"o":"m 463 539 l 463 452 l 58 452 l 58 526 l 253 709 q 301 760 283 738 q 327 801 319 783 q 334 833 334 819 q 313 887 334 866 q 251 908 291 908 q 176 882 200 908 q 152 818 152 857 l 45 818 q 69 907 45 867 q 139 971 94 947 q 248 995 184 995 q 353 975 309 995 q 419 920 396 956 q 442 835 442 884 q 426 768 442 799 q 381 705 410 736 q 312 638 352 674 l 193 539 l 463 539 z "},"³":{"ha":509,"x_min":43,"x_max":452,"o":"m 180 764 l 237 764 q 292 773 271 764 q 325 799 314 783 q 336 838 336 816 q 315 888 336 867 q 246 908 293 908 q 182 891 208 908 q 157 845 157 874 l 50 845 q 76 925 50 891 q 146 977 102 958 q 244 995 190 995 q 348 978 303 995 q 418 926 393 960 q 443 843 443 892 q 421 777 443 807 q 357 729 399 747 q 256 711 315 711 l 180 711 l 180 764 m 180 686 l 180 739 l 256 739 q 367 722 323 739 q 431 675 410 706 q 452 602 452 645 q 425 517 452 552 q 351 463 398 481 q 245 445 304 445 q 148 461 194 445 q 72 513 101 478 q 43 604 43 549 l 149 604 q 176 552 149 573 q 248 532 203 532 q 320 553 296 532 q 345 607 345 574 q 332 653 345 635 q 295 678 319 670 q 237 686 271 686 l 180 686 z "},"´":{"ha":435,"x_min":83,"x_max":366,"o":"m 83 842 l 215 1042 l 366 1042 l 184 842 l 83 842 z "},"µ":{"ha":787,"x_min":105,"x_max":682,"o":"m 557 734 l 682 734 l 682 0 l 569 0 l 557 170 l 557 734 m 579 341 l 626 342 q 612 200 626 265 q 569 87 598 135 q 494 12 540 39 q 385 -14 449 -14 q 293 -1 334 -14 q 224 41 253 12 q 176 116 195 70 l 151 312 l 230 312 q 241 198 230 242 q 274 130 253 154 q 321 98 294 106 q 380 89 349 89 q 479 107 440 89 q 540 160 518 126 q 570 240 562 194 q 579 341 579 286 m 105 734 l 230 734 l 230 -282 l 105 -282 l 105 734 z "},"¶":{"ha":680,"x_min":46,"x_max":565,"o":"m 565 0 l 439 0 l 439 353 l 380 353 q 197 394 272 353 q 84 507 123 435 q 46 670 46 578 q 84 833 46 761 q 197 946 123 905 q 380 987 272 987 l 565 987 l 565 0 z "},"·":{"ha":363,"x_min":100,"x_max":256,"o":"m 100 494 q 120 548 100 526 q 178 570 140 570 q 236 548 216 570 q 256 494 256 526 q 236 442 256 463 q 178 420 216 420 q 120 442 140 420 q 100 494 100 463 z "},"¸":{"ha":345,"x_min":79,"x_max":289,"o":"m 103 0 l 193 0 l 185 -36 q 257 -68 224 -43 q 289 -153 289 -94 q 276 -211 289 -185 q 237 -256 262 -237 q 173 -285 211 -275 q 83 -295 134 -295 l 79 -222 q 135 -216 110 -222 q 176 -194 161 -209 q 191 -155 191 -179 q 180 -120 191 -133 q 144 -101 168 -107 q 82 -92 120 -94 l 103 0 z "},"¹":{"ha":509,"x_min":83,"x_max":336,"o":"m 336 987 l 336 452 l 230 452 l 230 860 l 83 821 l 83 909 l 323 987 l 336 987 z "},"º":{"ha":632,"x_min":83,"x_max":547,"o":"m 83 707 l 83 762 q 112 886 83 832 q 192 971 140 940 q 315 1002 244 1002 q 439 971 387 1002 q 519 886 491 940 q 547 762 547 832 l 547 707 q 519 584 547 637 q 439 499 491 530 q 317 469 388 469 q 193 499 245 469 q 112 584 140 530 q 83 707 83 637 m 194 762 l 194 707 q 207 633 194 666 q 248 582 220 601 q 317 563 275 563 q 384 582 357 563 q 424 633 411 601 q 437 707 437 666 l 437 762 q 424 836 437 803 q 384 887 410 868 q 315 906 357 906 q 248 887 275 906 q 207 836 220 868 q 194 762 194 803 z "},"»":{"ha":651,"x_min":70,"x_max":603,"o":"m 70 104 l 247 376 l 366 376 l 366 367 l 166 104 l 70 104 m 70 644 l 166 644 l 366 380 l 366 371 l 247 370 l 70 644 m 307 104 l 484 376 l 603 376 l 603 367 l 403 104 l 307 104 m 307 644 l 403 644 l 603 380 l 603 371 l 484 370 l 307 644 z "},"¼":{"ha":1017,"x_min":58,"x_max":967,"o":"m 310 985 l 310 450 l 204 450 l 204 858 l 58 819 l 58 907 l 298 985 l 310 985 m 783 852 l 301 81 l 231 125 l 713 897 l 783 852 m 967 203 l 967 115 l 534 115 l 529 184 l 785 535 l 869 535 l 777 380 l 636 203 l 967 203 m 894 535 l 894 0 l 787 0 l 787 535 l 894 535 z "},"½":{"ha":1078,"x_min":54,"x_max":1004,"o":"m 753 852 l 271 81 l 201 125 l 683 897 l 753 852 m 307 985 l 307 450 l 201 450 l 201 858 l 54 819 l 54 907 l 294 985 l 307 985 m 1004 87 l 1004 0 l 599 0 l 599 73 l 794 257 q 842 308 825 286 q 868 348 860 330 q 876 381 876 366 q 854 435 876 414 q 792 456 832 456 q 717 430 741 456 q 693 366 693 404 l 586 366 q 610 454 586 414 q 680 518 635 494 q 789 543 726 543 q 894 523 850 543 q 960 468 937 503 q 983 382 983 432 q 967 315 983 347 q 922 253 951 284 q 853 186 893 222 l 734 87 l 1004 87 z "},"¾":{"ha":1080,"x_min":76,"x_max":1029,"o":"m 869 852 l 387 81 l 317 125 l 799 897 l 869 852 m 1029 203 l 1029 115 l 596 115 l 591 184 l 848 535 l 932 535 l 839 380 l 699 203 l 1029 203 m 956 535 l 956 0 l 850 0 l 850 535 l 956 535 m 214 764 l 271 764 q 326 773 304 764 q 358 799 347 783 q 370 838 370 816 q 348 888 370 867 q 279 908 326 908 q 215 891 241 908 q 190 845 190 874 l 83 845 q 109 925 83 891 q 179 977 135 958 q 277 995 223 995 q 381 978 336 995 q 451 926 426 960 q 476 843 476 892 q 454 777 476 807 q 390 729 432 747 q 289 711 349 711 l 214 711 l 214 764 m 214 686 l 214 739 l 289 739 q 400 722 357 739 q 465 675 444 706 q 486 602 486 645 q 458 517 486 552 q 384 463 431 481 q 278 445 337 445 q 181 461 227 445 q 105 513 134 478 q 76 604 76 549 l 182 604 q 210 552 182 573 q 281 532 237 532 q 354 553 329 532 q 378 607 378 574 q 365 653 378 635 q 328 678 352 670 q 271 686 304 686 l 214 686 z "},"¿":{"ha":658,"x_min":46,"x_max":603,"o":"m 273 461 l 399 461 q 388 356 399 396 q 352 281 376 315 q 285 202 327 248 q 231 143 256 172 q 189 81 205 115 q 172 0 172 47 q 190 -83 172 -50 q 241 -135 208 -117 q 324 -152 275 -152 q 399 -137 364 -152 q 455 -91 433 -122 q 477 -14 477 -60 l 603 -14 q 565 -146 602 -90 q 466 -232 528 -202 q 324 -262 403 -262 q 174 -231 236 -262 q 79 -143 112 -201 q 46 -4 46 -85 q 71 110 46 58 q 134 208 96 163 q 212 292 172 253 q 250 342 237 316 q 268 398 263 368 q 273 461 273 428 m 405 676 q 386 625 405 646 q 331 604 367 604 q 275 625 294 604 q 256 676 256 646 q 275 727 256 706 q 331 747 294 747 q 386 727 367 747 q 405 676 405 706 z "},"Æ":{"ha":1298,"x_min":-10,"x_max":1275,"o":"m 658 886 l 144 0 l -10 0 l 587 987 l 668 987 l 658 886 m 756 358 l 756 239 l 252 239 l 252 358 l 756 358 m 1275 103 l 1275 0 l 778 0 l 778 103 l 1275 103 m 760 987 l 802 0 l 675 0 l 634 987 l 760 987 m 1178 566 l 1178 463 l 751 463 l 751 566 l 1178 566 m 1233 987 l 1233 884 l 736 884 l 736 987 l 1233 987 z "},"×":{"ha":741,"x_min":60,"x_max":671,"o":"m 141 140 l 60 223 l 589 762 l 669 678 l 141 140 m 591 140 l 62 678 l 143 762 l 671 223 l 591 140 z "},"Ø":{"ha":956,"x_min":81,"x_max":888,"o":"m 888 1028 l 208 -63 l 111 -63 l 793 1028 l 888 1028 m 875 525 l 875 463 q 847 263 875 351 q 767 113 819 175 q 642 19 715 52 q 479 -14 569 -14 q 348 7 409 -14 q 238 69 287 28 q 153 167 189 109 q 99 299 118 225 q 81 463 81 374 l 81 525 q 110 724 81 636 q 191 874 138 812 q 317 968 244 936 q 477 1001 390 1001 q 611 980 549 1001 q 721 919 672 959 q 804 820 770 878 q 857 688 838 762 q 875 525 875 614 m 745 463 l 745 526 q 734 654 745 597 q 700 755 722 711 q 645 829 677 800 q 570 874 612 859 q 477 890 528 890 q 367 866 416 890 q 283 796 318 842 q 229 682 248 750 q 210 526 210 614 l 210 463 q 222 334 210 391 q 258 232 235 276 q 314 157 281 187 q 389 112 347 127 q 479 97 430 97 q 592 121 543 97 q 676 191 642 144 q 728 306 710 237 q 745 463 745 374 z "},"Þ":{"ha":821,"x_min":113,"x_max":758,"o":"m 113 987 l 239 987 l 239 0 l 113 0 l 113 987 m 176 789 l 427 789 q 608 751 534 789 q 720 649 682 714 q 758 500 758 584 q 720 353 758 418 q 608 250 682 288 q 427 213 534 213 l 211 213 l 211 315 l 427 315 q 546 342 500 315 q 611 411 591 369 q 632 499 632 453 q 611 589 632 547 q 546 659 591 632 q 427 686 500 686 l 237 686 l 176 789 z "},"ß":{"ha":826,"x_min":95,"x_max":766,"o":"m 220 754 l 220 0 l 95 0 l 95 754 q 114 885 95 829 q 169 978 134 941 q 253 1035 204 1016 q 361 1054 302 1054 q 493 1029 435 1054 q 583 955 550 1005 q 616 825 616 904 q 603 735 616 771 q 573 671 590 699 q 543 617 556 644 q 530 556 530 591 q 553 489 530 519 q 612 433 577 460 q 683 375 648 406 q 743 306 719 345 q 766 215 766 267 q 733 87 766 138 q 640 11 699 36 q 505 -14 581 -14 q 428 -6 469 -14 q 354 12 387 1 q 302 35 320 23 l 331 140 q 400 107 355 125 q 492 89 445 89 q 578 105 545 89 q 626 149 611 121 q 641 209 641 176 q 617 277 641 248 q 558 334 593 307 q 487 392 523 361 q 428 463 452 422 q 404 557 404 503 q 418 629 404 598 q 451 688 433 661 q 484 746 469 715 q 498 814 498 776 q 481 890 498 860 q 435 936 464 920 q 368 951 406 951 q 288 930 321 951 q 237 866 255 909 q 220 754 220 822 z "},"æ":{"ha":1173,"x_min":54,"x_max":1126,"o":"m 508 124 l 508 488 q 491 572 508 537 q 442 626 475 607 q 363 644 410 644 q 275 627 313 644 q 218 580 238 609 q 197 515 197 551 l 73 528 q 94 615 73 575 q 153 685 115 655 q 244 731 191 715 q 363 747 298 747 q 503 718 443 747 q 596 631 563 689 q 630 487 630 574 l 630 148 l 508 124 m 536 431 l 536 336 l 359 336 q 260 318 300 336 q 199 269 220 299 q 179 203 179 239 q 194 145 179 171 q 240 103 210 119 q 319 88 271 88 q 394 102 355 88 q 464 138 432 116 q 516 184 496 160 q 537 230 536 209 l 602 132 q 544 65 584 99 q 443 8 505 31 q 294 -14 380 -14 q 163 13 217 -14 q 81 90 109 40 q 54 206 54 140 q 73 301 54 260 q 131 372 92 343 q 226 416 169 401 q 357 431 283 431 l 536 431 m 857 -14 q 709 13 773 -14 q 602 89 646 40 q 536 205 559 138 q 514 353 514 273 l 514 382 q 537 530 514 463 q 603 646 561 597 q 703 721 646 694 q 827 747 760 748 q 956 725 900 747 q 1050 659 1012 702 q 1107 555 1088 616 q 1126 418 1126 494 l 1126 338 l 581 338 l 581 434 l 1000 434 l 1000 455 q 983 549 1000 507 q 928 618 966 592 q 827 644 890 644 q 744 624 780 644 q 683 568 708 604 q 646 484 659 532 q 633 382 633 437 l 633 353 q 646 250 633 298 q 686 166 659 202 q 755 109 713 130 q 857 89 798 89 q 987 114 937 89 q 1070 161 1036 138 l 1114 69 q 1066 38 1099 58 q 981 2 1034 18 q 857 -14 929 -14 z "},"ð":{"ha":814,"x_min":85,"x_max":726,"o":"m 173 964 l 212 1072 q 420 991 326 1046 q 583 853 515 935 q 689 664 652 770 q 726 429 726 557 l 726 363 q 702 210 726 279 q 636 91 679 141 q 535 14 593 41 q 408 -14 477 -14 q 278 12 337 -14 q 175 83 218 37 q 109 188 132 128 q 85 317 85 248 q 108 459 85 396 q 172 569 131 523 q 268 639 213 614 q 389 663 323 663 q 527 627 466 663 q 625 534 589 591 q 661 416 661 477 l 614 416 q 602 464 614 439 q 565 511 589 489 q 505 547 541 533 q 419 560 468 560 q 331 543 370 560 q 266 495 292 526 q 225 418 239 463 q 212 317 212 374 q 225 235 212 275 q 263 162 238 195 q 326 109 289 129 q 411 90 363 90 q 490 110 455 90 q 549 168 524 131 q 587 255 574 205 q 600 363 600 304 l 600 431 q 566 640 600 550 q 473 793 532 729 q 337 900 414 858 q 173 964 260 941 m 670 961 l 306 713 l 256 781 l 621 1028 l 670 961 z "},"÷":{"ha":793,"x_min":48,"x_max":725,"o":"m 725 532 l 725 407 l 48 407 l 48 532 l 725 532 m 313 745 q 333 799 313 777 q 391 821 353 821 q 449 799 429 821 q 469 745 469 777 q 449 692 469 713 q 391 671 429 671 q 333 692 353 671 q 313 745 313 713 m 313 191 q 333 245 313 223 q 391 267 353 267 q 449 245 429 267 q 469 191 469 223 q 449 138 469 160 q 391 117 429 117 q 333 138 353 117 q 313 191 313 160 z "},"ø":{"ha":787,"x_min":62,"x_max":730,"o":"m 667 820 l 217 -92 l 134 -92 l 583 820 l 667 820 m 62 359 l 62 374 q 85 522 62 454 q 152 641 109 590 q 257 719 195 691 q 395 747 319 747 q 535 719 473 747 q 640 641 597 691 q 707 522 684 590 q 730 374 730 454 l 730 359 q 707 212 730 279 q 640 93 684 144 q 535 15 597 43 q 397 -14 474 -14 q 258 15 319 -14 q 152 93 196 43 q 85 212 109 144 q 62 359 62 279 m 188 374 l 188 359 q 201 255 188 304 q 240 170 214 207 q 305 111 266 132 q 397 90 345 90 q 487 111 448 90 q 552 170 526 132 q 591 255 578 207 q 604 359 604 304 l 604 374 q 591 477 604 429 q 552 563 578 526 q 487 623 526 601 q 395 644 448 644 q 305 623 344 644 q 240 563 266 601 q 201 477 214 526 q 188 374 188 429 z "},"þ":{"ha":800,"x_min":101,"x_max":722,"o":"m 227 1042 l 227 -282 l 101 -282 l 101 1042 l 227 1042 m 722 373 l 722 359 q 703 211 722 279 q 647 92 684 142 q 558 14 611 42 q 437 -14 505 -14 q 313 9 367 -14 q 222 77 260 33 q 163 182 185 121 q 133 321 141 244 l 133 397 q 163 543 141 479 q 223 653 186 608 q 313 723 260 699 q 435 747 366 747 q 557 721 504 747 q 648 644 611 694 q 703 526 684 595 q 722 373 722 457 m 595 359 l 595 373 q 584 476 595 428 q 548 562 572 525 q 487 620 524 599 q 398 642 450 642 q 316 625 351 642 q 256 582 281 609 q 217 519 232 554 q 194 447 201 484 l 194 271 q 220 203 204 235 q 260 145 236 170 q 318 104 284 119 q 399 90 353 90 q 487 111 450 90 q 548 170 524 132 q 584 255 572 207 q 595 359 595 304 z "},"đ":{"ha":830,"x_min":64,"x_max":812,"o":"m 558 142 l 558 1042 l 684 1042 l 684 0 l 569 0 l 558 142 m 64 359 l 64 373 q 85 526 64 457 q 144 644 106 595 q 236 721 182 694 q 355 747 289 747 q 476 723 424 747 q 564 653 528 699 q 621 543 600 608 q 650 397 642 479 l 650 335 q 622 190 643 254 q 564 80 600 125 q 475 11 528 35 q 353 -14 423 -14 q 236 14 289 -14 q 144 92 182 42 q 85 211 106 142 q 64 359 64 279 m 191 373 l 191 359 q 202 256 191 304 q 237 171 213 208 q 297 114 260 134 q 385 93 334 93 q 487 119 447 93 q 552 189 528 146 q 590 283 576 233 l 590 447 q 567 519 582 484 q 527 582 551 554 q 468 625 503 609 q 386 642 433 642 q 297 620 334 642 q 237 562 260 599 q 202 476 213 525 q 191 373 191 428 m 812 939 l 812 836 l 380 836 l 380 939 l 812 939 z "},"Ħ":{"ha":973,"x_min":20,"x_max":961,"o":"m 961 791 l 961 694 l 20 694 l 20 791 l 961 791 m 755 563 l 755 456 l 221 456 l 221 563 l 755 563 m 241 987 l 241 0 l 111 0 l 111 987 l 241 987 m 870 987 l 870 0 l 739 0 l 739 987 l 870 987 z "},"ı":{"ha":344,"x_min":106,"x_max":231,"o":"m 231 734 l 231 0 l 106 0 l 106 734 l 231 734 z "},"ĸ":{"ha":773,"x_min":105,"x_max":738,"o":"m 231 734 l 231 0 l 105 0 l 105 734 l 231 734 m 713 734 l 351 313 l 189 313 l 170 423 l 293 423 l 562 734 l 713 734 m 579 0 l 287 332 l 368 423 l 738 0 l 579 0 z "},"Ł":{"ha":748,"x_min":24,"x_max":713,"o":"m 423 629 l 423 545 l 24 418 l 24 503 l 423 629 m 713 106 l 713 0 l 219 0 l 219 106 l 713 106 m 245 987 l 245 0 l 115 0 l 115 987 l 245 987 z "},"ł":{"ha":376,"x_min":24,"x_max":355,"o":"m 355 631 l 355 548 l 24 421 l 24 504 l 355 631 m 247 1042 l 247 0 l 121 0 l 121 1042 l 247 1042 z "},"Ŋ":{"ha":962,"x_min":110,"x_max":858,"o":"m 110 987 l 241 987 l 241 0 l 110 0 l 110 987 m 149 910 l 241 987 l 819 77 l 727 0 l 149 910 m 727 987 l 858 987 l 858 -57 q 831 -188 858 -134 q 755 -269 804 -241 q 636 -296 705 -296 q 597 -294 615 -296 q 558 -285 578 -292 l 568 -180 q 602 -187 579 -184 q 634 -189 624 -189 q 685 -173 664 -189 q 716 -128 705 -157 q 727 -57 727 -98 l 727 987 z "},"ŋ":{"ha":787,"x_min":99,"x_max":684,"o":"m 224 577 l 224 0 l 99 0 l 99 734 l 212 734 l 224 577 m 186 391 l 157 389 q 176 533 157 467 q 231 646 195 598 q 319 721 267 694 q 436 747 371 747 q 539 731 493 747 q 617 681 585 715 q 667 592 650 646 q 684 463 684 538 l 684 -60 q 658 -189 684 -136 q 583 -269 632 -242 q 465 -296 534 -296 q 426 -294 444 -296 q 388 -285 408 -292 l 397 -178 q 432 -184 408 -182 q 465 -186 456 -186 q 516 -172 495 -186 q 548 -130 536 -158 q 559 -60 559 -102 l 559 460 q 548 546 559 511 q 517 602 538 581 q 467 632 496 623 q 399 642 437 642 q 302 622 342 642 q 236 568 262 602 q 198 488 210 533 q 186 391 186 442 z "},"Œ":{"ha":1324,"x_min":71,"x_max":1221,"o":"m 448 1002 q 551 997 500 1002 q 647 987 602 993 l 647 880 q 552 893 602 888 q 448 899 501 899 q 343 879 390 899 q 264 822 297 860 q 214 728 231 784 q 197 598 197 672 l 197 391 q 214 260 197 317 q 265 166 232 204 q 345 108 298 127 q 449 89 391 89 q 552 94 502 89 q 647 107 603 99 l 647 0 q 551 -9 602 -5 q 449 -14 501 -14 q 295 15 365 -14 q 176 99 226 45 q 98 227 125 153 q 71 391 71 301 l 71 597 q 98 761 71 686 q 175 889 125 835 q 294 972 225 943 q 448 1002 363 1002 m 1221 106 l 1221 0 l 699 0 l 699 106 l 1221 106 m 725 987 l 725 0 l 594 0 l 594 987 l 725 987 m 1152 563 l 1152 456 l 699 456 l 699 563 l 1152 563 m 1215 987 l 1215 880 l 699 880 l 699 987 l 1215 987 z "},"œ":{"ha":1261,"x_min":66,"x_max":1215,"o":"m 935 -14 q 798 13 859 -14 q 693 89 736 40 q 626 205 650 138 q 603 353 603 273 l 603 382 q 628 530 603 463 q 697 646 654 597 q 798 721 741 694 q 916 747 854 748 q 1048 723 992 747 q 1142 655 1105 699 q 1197 552 1179 612 q 1215 420 1215 492 l 1215 338 l 677 338 l 677 440 l 1090 440 l 1090 458 q 1072 550 1090 507 q 1015 618 1053 592 q 916 644 977 644 q 841 624 875 644 q 781 568 806 604 q 743 484 756 532 q 729 382 729 437 l 729 353 q 742 250 729 298 q 781 166 755 202 q 846 109 807 130 q 935 89 884 89 q 1060 110 1010 89 q 1145 162 1111 132 l 1194 77 q 1098 15 1161 44 q 935 -14 1035 -14 m 66 359 l 66 374 q 88 522 66 454 q 153 641 111 590 q 256 719 195 691 q 393 747 316 747 q 532 719 471 747 q 635 641 593 691 q 700 522 677 590 q 722 374 722 454 l 722 359 q 700 211 722 279 q 635 93 677 143 q 532 14 593 42 q 394 -14 471 -14 q 256 14 317 -14 q 153 93 195 42 q 88 211 111 143 q 66 359 66 279 m 192 374 l 192 359 q 204 255 192 304 q 241 169 216 207 q 304 110 266 132 q 394 89 342 89 q 484 110 446 89 q 547 169 522 132 q 584 255 572 207 q 596 359 596 304 l 596 374 q 584 477 596 429 q 547 563 572 526 q 483 623 522 601 q 393 644 445 644 q 303 623 341 644 q 240 563 265 601 q 204 477 216 526 q 192 374 192 429 z "},"ſ":{"ha":345,"x_min":109,"x_max":436,"o":"m 235 0 l 109 0 l 109 811 q 137 945 109 890 q 216 1028 165 1000 q 338 1056 267 1056 q 387 1052 363 1056 q 436 1042 411 1048 l 420 945 q 393 951 408 949 q 358 953 378 953 q 291 936 318 953 q 249 887 263 919 q 235 811 235 856 l 235 0 z "},"Ə":{"ha":960,"x_min":64,"x_max":880,"o":"m 473 -14 q 296 18 372 -14 q 168 108 219 49 q 90 250 116 167 q 64 436 64 333 l 64 520 l 800 520 l 800 419 l 195 419 l 195 396 q 209 278 195 333 q 256 182 224 223 q 342 118 289 141 q 473 94 395 94 q 591 123 539 94 q 678 202 642 151 q 732 319 713 252 q 750 461 750 385 l 750 525 q 732 668 750 602 q 676 785 714 734 q 578 864 638 836 q 435 892 519 892 q 287 873 347 892 q 187 836 227 854 l 155 932 q 208 960 172 943 q 300 988 243 976 q 435 1001 357 1001 q 626 966 543 1001 q 765 868 709 931 q 851 717 822 804 q 880 525 880 630 l 880 461 q 849 269 880 356 q 761 118 817 182 q 631 21 705 55 q 473 -14 557 -14 z "},"ƒ":{"ha":473,"x_min":-20,"x_max":475,"o":"m 412 734 l 412 637 l 275 637 l 275 -60 q 249 -189 275 -136 q 174 -269 222 -242 q 56 -296 125 -296 q 18 -294 35 -296 q -20 -285 0 -292 l -10 -184 q 23 -191 0 -189 q 56 -193 47 -193 q 106 -177 85 -193 q 138 -132 127 -161 q 149 -60 149 -102 l 149 637 l 33 637 l 33 734 l 149 734 l 149 811 q 177 945 149 890 q 256 1028 204 1000 q 378 1056 307 1056 q 427 1052 403 1056 q 475 1042 451 1048 l 460 943 q 430 948 448 946 q 393 949 413 949 q 327 933 353 949 q 288 887 300 918 q 275 811 275 856 l 275 734 l 412 734 z "},"Ơ":{"ha":954,"x_min":69,"x_max":975,"o":"m 861 1080 l 975 1080 q 946 930 975 992 q 860 837 918 869 q 717 804 803 804 l 717 896 q 802 918 770 896 q 847 981 833 939 q 861 1080 861 1022 m 863 525 l 863 463 q 836 263 863 351 q 755 113 808 175 q 630 19 703 52 q 467 -14 557 -14 q 336 7 397 -14 q 226 69 275 28 q 142 167 177 109 q 88 299 106 225 q 69 463 69 374 l 69 525 q 98 724 69 636 q 180 874 127 812 q 306 968 233 936 q 466 1001 378 1001 q 600 980 538 1001 q 710 919 661 959 q 793 820 758 878 q 845 688 827 762 q 863 525 863 614 m 734 463 l 734 526 q 722 654 734 597 q 688 755 711 711 q 633 829 666 800 q 559 874 601 859 q 466 890 517 890 q 356 866 406 890 q 272 796 307 842 q 218 682 237 750 q 199 526 199 614 l 199 463 q 211 334 199 391 q 247 232 223 276 q 303 157 270 187 q 377 112 336 127 q 467 97 419 97 q 581 121 531 97 q 664 191 630 144 q 716 306 699 237 q 734 463 734 374 z "},"ơ":{"ha":794,"x_min":62,"x_max":821,"o":"m 720 814 l 821 814 q 800 686 821 740 q 732 603 780 632 q 604 574 685 574 l 604 652 q 679 673 654 652 q 712 730 704 693 q 720 814 720 766 m 62 359 l 62 374 q 85 522 62 454 q 152 641 109 590 q 257 719 195 691 q 395 747 319 747 q 535 719 473 747 q 640 641 597 691 q 707 522 684 590 q 730 374 730 454 l 730 359 q 707 212 730 279 q 640 93 684 144 q 535 15 597 43 q 397 -14 474 -14 q 258 15 319 -14 q 152 93 196 43 q 85 212 109 144 q 62 359 62 279 m 188 374 l 188 359 q 201 255 188 304 q 240 170 214 207 q 305 111 266 132 q 397 90 345 90 q 487 111 448 90 q 552 170 526 132 q 591 255 578 207 q 604 359 604 304 l 604 374 q 591 477 604 429 q 552 563 578 526 q 487 623 526 601 q 395 644 448 644 q 305 623 344 644 q 240 563 266 601 q 201 477 214 526 q 188 374 188 429 z "},"Ư":{"ha":966,"x_min":95,"x_max":1061,"o":"m 954 1043 l 1061 1043 q 1033 882 1061 947 q 943 784 1005 817 q 779 751 881 751 l 779 842 q 886 865 848 842 q 939 932 924 888 q 954 1043 954 977 m 680 987 l 810 987 l 810 319 q 760 134 810 208 q 629 23 711 60 q 452 -14 547 -14 q 270 23 351 -14 q 142 134 189 60 q 95 319 95 208 l 95 987 l 224 987 l 224 319 q 253 192 224 242 q 333 117 281 142 q 452 93 384 93 q 571 117 520 93 q 651 192 623 142 q 680 319 680 242 l 680 987 z "},"ư":{"ha":859,"x_min":93,"x_max":879,"o":"m 783 793 l 879 793 q 860 669 879 719 q 792 593 840 618 q 656 568 744 568 l 656 646 q 744 661 718 646 q 777 709 770 676 q 783 793 783 741 m 545 170 l 545 734 l 671 734 l 671 0 l 551 0 l 545 170 m 568 324 l 621 326 q 605 190 621 252 q 556 83 590 128 q 467 12 522 37 q 334 -14 412 -14 q 236 2 280 -14 q 159 50 191 18 q 110 135 127 83 q 93 260 93 187 l 93 734 l 218 734 l 218 259 q 230 177 218 210 q 260 126 241 145 q 303 100 279 108 q 353 93 328 93 q 480 124 433 93 q 548 207 527 155 q 568 324 568 260 z "},"ȷ":{"ha":350,"x_min":-52,"x_max":243,"o":"m 117 734 l 243 734 l 243 -60 q 217 -189 243 -136 q 142 -269 191 -242 q 24 -296 93 -296 q -14 -294 3 -296 q -52 -285 -32 -292 l -42 -184 q -8 -191 -32 -189 q 24 -193 15 -193 q 74 -177 54 -193 q 106 -132 95 -161 q 117 -60 117 -102 l 117 734 z "},"ə":{"ha":732,"x_min":67,"x_max":680,"o":"m 347 749 q 485 722 423 749 q 589 645 546 694 q 656 529 633 596 q 680 382 680 462 l 680 352 q 654 205 680 272 q 585 89 629 138 q 484 13 541 40 q 366 -13 428 -14 q 234 11 290 -13 q 141 79 178 35 q 85 182 104 123 q 67 314 67 242 l 67 397 l 605 397 l 605 294 l 193 294 l 193 277 q 211 185 193 228 q 268 116 229 142 q 366 90 307 90 q 441 110 407 90 q 500 166 475 130 q 539 250 526 202 q 553 352 553 298 l 553 382 q 540 484 553 436 q 501 568 527 532 q 437 625 475 604 q 347 646 398 646 q 222 624 273 646 q 138 572 172 603 l 88 658 q 185 720 122 690 q 347 749 248 749 z "},"ˆ":{"ha":654,"x_min":115,"x_max":526,"o":"m 357 1042 l 526 857 l 526 850 l 421 850 l 319 964 l 218 850 l 115 850 l 115 857 l 281 1042 l 357 1042 z "},"ˇ":{"ha":617,"x_min":96,"x_max":515,"o":"m 202 1041 l 304 926 l 407 1041 l 515 1041 l 515 1034 l 343 848 l 266 848 l 96 1034 l 96 1041 l 202 1041 z "},"ˉ":{"ha":637,"x_min":97,"x_max":552,"o":"m 552 980 l 552 884 l 97 884 l 97 980 l 552 980 z "},"˘":{"ha":593,"x_min":88,"x_max":494,"o":"m 392 1014 l 494 1014 q 469 920 494 961 q 399 856 445 879 q 292 833 354 833 q 143 883 197 833 q 88 1014 88 934 l 190 1014 q 213 943 190 974 q 292 913 236 913 q 369 943 346 913 q 392 1014 392 974 z "},"˙":{"ha":338,"x_min":96,"x_max":245,"o":"m 96 928 q 115 979 96 958 q 170 1000 134 1000 q 225 979 206 1000 q 245 928 245 958 q 225 877 245 898 q 170 857 206 857 q 115 877 134 857 q 96 928 96 898 z "},"˚":{"ha":465,"x_min":82,"x_max":374,"o":"m 82 956 q 101 1027 82 995 q 154 1078 121 1059 q 228 1097 186 1097 q 332 1055 290 1097 q 374 956 374 1014 q 354 885 374 916 q 302 835 335 853 q 228 817 269 817 q 124 857 166 817 q 82 956 82 896 m 149 956 q 171 902 149 926 q 228 878 193 878 q 284 901 262 878 q 307 956 307 924 q 284 1011 307 987 q 228 1036 262 1036 q 171 1011 193 1036 q 149 956 149 987 z "},"˛":{"ha":376,"x_min":34,"x_max":273,"o":"m 209 39 l 259 0 q 203 -45 230 -22 q 160 -95 177 -68 q 143 -151 143 -121 q 155 -186 143 -173 q 196 -200 167 -200 q 236 -194 218 -200 q 264 -182 254 -187 l 273 -264 q 230 -284 256 -275 q 164 -294 204 -294 q 72 -261 109 -294 q 34 -165 34 -229 q 52 -92 34 -128 q 109 -23 70 -56 q 209 39 147 10 z "},"˜":{"ha":655,"x_min":83,"x_max":564,"o":"m 479 1025 l 564 1018 q 544 931 564 968 q 491 873 524 894 q 417 853 458 853 q 360 863 382 853 q 320 885 338 873 q 283 908 302 898 q 235 918 264 918 q 188 896 207 918 q 168 842 168 874 l 83 846 q 103 933 83 896 q 155 992 122 971 q 229 1014 189 1014 q 280 1004 258 1014 q 322 982 302 994 q 363 959 342 969 q 411 949 384 949 q 459 971 439 949 q 479 1025 479 994 z "},"˝":{"ha":518,"x_min":64,"x_max":551,"o":"m 254 836 l 410 1041 l 551 1041 l 369 836 l 254 836 m 64 836 l 180 1041 l 314 1041 l 166 836 l 64 836 z "},"˳":{"ha":408,"x_min":86,"x_max":319,"o":"m 86 -165 q 121 -83 86 -115 q 204 -52 156 -52 q 285 -83 251 -52 q 319 -165 319 -115 q 285 -245 319 -214 q 204 -275 251 -275 q 121 -245 156 -275 q 86 -165 86 -214 m 145 -165 q 162 -204 145 -188 q 204 -221 180 -221 q 244 -205 227 -221 q 260 -165 260 -189 q 244 -123 260 -140 q 204 -106 227 -106 q 162 -123 180 -106 q 145 -165 145 -140 z "},"̀":{"ha":0,"x_min":-581,"x_max":-299,"o":"m -430 1042 l -299 842 l -406 842 l -581 1042 l -430 1042 z "},"́":{"ha":0,"x_min":-446,"x_max":-163,"o":"m -446 842 l -315 1042 l -163 1042 l -345 842 l -446 842 z "},"̃":{"ha":0,"x_min":-601,"x_max":-121,"o":"m -205 1025 l -121 1018 q -140 931 -121 968 q -193 873 -160 894 q -267 853 -226 853 q -324 863 -302 853 q -364 885 -347 873 q -401 908 -382 898 q -449 918 -420 918 q -497 896 -477 918 q -516 842 -516 874 l -601 846 q -582 933 -601 896 q -529 992 -562 971 q -455 1014 -496 1014 q -404 1004 -426 1014 q -362 982 -382 994 q -321 959 -342 969 q -273 949 -300 949 q -225 971 -245 949 q -205 1025 -205 994 z "},"̉":{"ha":0,"x_min":-458,"x_max":-248,"o":"m -353 842 l -443 842 l -444 945 q -387 952 -409 947 q -355 968 -366 958 q -345 996 -345 979 q -354 1020 -345 1010 q -378 1037 -363 1030 q -414 1046 -394 1043 q -458 1048 -435 1048 l -453 1120 q -365 1112 -403 1120 q -300 1086 -326 1103 q -261 1045 -274 1069 q -248 994 -248 1022 q -280 919 -248 942 q -352 890 -313 895 l -353 842 z "},"̏":{"ha":0,"x_min":-668,"x_max":-170,"o":"m -347 849 l -461 849 l -668 1029 l -515 1029 l -347 849 m -170 849 l -271 849 l -438 1029 l -298 1029 l -170 849 z "},"̣":{"ha":0,"x_min":-483,"x_max":-334,"o":"m -483 -167 q -464 -115 -483 -136 q -409 -94 -446 -94 q -354 -115 -373 -94 q -334 -167 -334 -136 q -354 -217 -334 -196 q -409 -237 -373 -237 q -464 -217 -446 -237 q -483 -167 -483 -196 z "},"΄":{"ha":357,"x_min":125,"x_max":279,"o":"m 125 857 l 161 1084 l 279 1084 l 201 857 l 125 857 z "},"΅":{"ha":703,"x_min":77,"x_max":610,"o":"m 294 956 l 326 1135 l 454 1135 l 386 956 l 294 956 m 77 930 q 96 981 77 960 q 151 1002 115 1002 q 207 981 187 1002 q 226 930 226 960 q 207 880 226 901 q 151 859 187 859 q 96 880 115 859 q 77 930 77 901 m 461 928 q 480 980 461 959 q 535 1001 499 1001 q 591 980 572 1001 q 610 928 610 959 q 591 879 610 899 q 535 858 572 858 q 480 879 499 858 q 461 928 461 899 z "},"·":{"ha":363,"x_min":100,"x_max":256,"o":"m 100 494 q 120 548 100 526 q 178 570 140 570 q 236 548 216 570 q 256 494 256 526 q 236 442 256 463 q 178 420 216 420 q 120 442 140 420 q 100 494 100 463 z "},"Γ":{"ha":772,"x_min":121,"x_max":727,"o":"m 727 987 l 727 880 l 251 880 l 251 0 l 121 0 l 121 987 l 727 987 z "},"Δ":{"ha":979,"x_min":22,"x_max":947,"o":"m 522 895 l 156 0 l 22 0 l 438 987 l 520 987 l 522 895 m 812 0 l 467 901 l 471 987 l 553 987 l 947 0 l 812 0 m 844 106 l 844 0 l 121 0 l 121 106 l 844 106 z "},"∆":{"ha":979,"x_min":22,"x_max":947,"o":"m 522 895 l 156 0 l 22 0 l 438 987 l 520 987 l 522 895 m 812 0 l 467 901 l 471 987 l 553 987 l 947 0 l 812 0 m 844 106 l 844 0 l 121 0 l 121 106 l 844 106 z "},"Θ":{"ha":945,"x_min":70,"x_max":864,"o":"m 651 550 l 651 448 l 301 448 l 301 550 l 651 550 m 864 525 l 864 463 q 836 263 864 351 q 756 113 808 175 q 631 19 704 52 q 468 -14 558 -14 q 337 7 398 -14 q 227 69 276 28 q 142 167 178 109 q 89 299 107 225 q 70 463 70 374 l 70 525 q 99 724 70 636 q 180 874 127 812 q 306 968 233 936 q 467 1001 379 1001 q 600 980 538 1001 q 710 919 662 959 q 793 820 759 878 q 846 688 828 762 q 864 525 864 614 m 734 463 l 734 526 q 723 654 734 597 q 689 755 711 711 q 634 829 667 800 q 559 874 602 859 q 467 890 517 890 q 357 866 406 890 q 273 796 308 842 q 218 682 237 750 q 199 526 199 614 l 199 463 q 212 334 199 391 q 247 232 224 276 q 303 157 271 187 q 378 112 336 127 q 468 97 420 97 q 581 121 532 97 q 665 191 631 144 q 717 306 699 237 q 734 463 734 374 z "},"Λ":{"ha":911,"x_min":34,"x_max":870,"o":"m 484 880 l 174 0 l 34 0 l 394 987 l 479 987 l 484 880 m 730 0 l 418 884 l 425 987 l 511 987 l 870 0 l 730 0 z "},"Ξ":{"ha":793,"x_min":81,"x_max":718,"o":"m 81 0 l 81 106 l 718 106 l 718 0 l 81 0 m 140 457 l 140 564 l 652 564 l 652 457 l 140 457 m 84 880 l 84 987 l 706 987 l 706 880 l 84 880 z "},"Π":{"ha":991,"x_min":121,"x_max":869,"o":"m 869 987 l 869 0 l 739 0 l 739 880 l 252 880 l 252 0 l 121 0 l 121 987 l 869 987 z "},"Σ":{"ha":793,"x_min":47,"x_max":741,"o":"m 741 107 l 741 0 l 98 0 l 98 107 l 741 107 m 708 987 l 708 880 l 79 880 l 79 987 l 708 987 m 512 503 l 512 487 l 126 0 l 47 0 l 47 97 l 374 495 l 47 890 l 47 987 l 126 987 l 512 503 z "},"Φ":{"ha":995,"x_min":53,"x_max":947,"o":"m 555 119 l 444 119 q 284 146 356 119 q 160 222 212 173 q 81 339 109 271 q 53 490 53 408 q 102 684 53 600 q 239 815 152 768 q 441 863 326 863 l 557 863 q 715 836 644 863 q 838 759 786 809 q 918 642 890 709 q 947 491 947 574 q 898 297 947 381 q 761 166 849 214 q 555 119 673 119 m 444 227 l 556 227 q 703 260 645 227 q 789 352 760 292 q 817 491 817 411 q 801 600 817 551 q 752 683 785 648 q 672 736 720 718 q 559 755 623 755 l 441 755 q 297 722 355 755 q 211 630 239 689 q 182 490 182 570 q 198 381 182 430 q 246 298 214 333 q 328 245 279 264 q 444 227 378 227 m 566 987 l 566 0 l 435 0 l 435 987 l 566 987 z "},"Ψ":{"ha":961,"x_min":61,"x_max":891,"o":"m 760 987 l 891 987 l 891 631 q 838 420 891 507 q 692 289 785 334 q 480 243 599 243 l 460 243 q 301 269 374 243 q 174 344 228 294 q 91 466 121 393 q 61 631 61 538 l 61 987 l 191 987 l 191 631 q 211 511 191 564 q 267 423 231 459 q 353 369 303 387 q 461 351 402 351 l 481 351 q 627 383 564 351 q 725 478 690 416 q 760 631 760 541 l 760 987 m 536 987 l 536 0 l 406 0 l 406 987 l 536 987 z "},"Ω":{"ha":924,"x_min":77,"x_max":833,"o":"m 701 492 l 701 571 q 684 711 701 650 q 634 812 667 771 q 556 874 602 853 q 454 895 511 895 q 352 874 397 895 q 275 812 307 853 q 227 711 243 771 q 210 571 210 650 l 210 492 q 224 338 210 406 q 266 223 239 271 q 331 148 293 176 q 414 111 368 119 l 414 15 q 279 67 340 24 q 173 177 218 110 q 102 325 127 243 q 77 492 77 406 l 77 570 q 104 745 77 666 q 182 881 132 824 q 301 970 232 939 q 454 1001 370 1001 q 608 970 538 1001 q 728 881 677 939 q 805 745 778 824 q 833 570 833 666 l 833 492 q 808 326 833 407 q 739 177 783 244 q 633 67 694 111 q 500 15 572 24 l 500 111 q 582 148 545 120 q 646 224 619 176 q 686 339 672 272 q 701 492 701 406 m 500 0 l 500 106 l 828 106 l 828 0 l 500 0 m 80 0 l 80 106 l 414 106 l 414 0 l 80 0 z "},"Ω":{"ha":924,"x_min":77,"x_max":833,"o":"m 701 492 l 701 571 q 684 711 701 650 q 634 812 667 771 q 556 874 602 853 q 454 895 511 895 q 352 874 397 895 q 275 812 307 853 q 227 711 243 771 q 210 571 210 650 l 210 492 q 224 338 210 406 q 266 223 239 271 q 331 148 293 176 q 414 111 368 119 l 414 15 q 279 67 340 24 q 173 177 218 110 q 102 325 127 243 q 77 492 77 406 l 77 570 q 104 745 77 666 q 182 881 132 824 q 301 970 232 939 q 454 1001 370 1001 q 608 970 538 1001 q 728 881 677 939 q 805 745 778 824 q 833 570 833 666 l 833 492 q 808 326 833 407 q 739 177 783 244 q 633 67 694 111 q 500 15 572 24 l 500 111 q 582 148 545 120 q 646 224 619 176 q 686 339 672 272 q 701 492 701 406 m 500 0 l 500 106 l 828 106 l 828 0 l 500 0 m 80 0 l 80 106 l 414 106 l 414 0 l 80 0 z "},"α":{"ha":785,"x_min":68,"x_max":776,"o":"m 68 340 l 68 354 q 87 513 68 441 q 142 637 106 585 q 232 719 178 690 q 355 747 286 747 q 450 732 408 747 q 525 686 492 716 q 581 613 557 656 q 618 515 604 570 q 638 394 632 460 l 638 338 q 610 192 631 256 q 555 81 590 127 q 471 10 521 35 q 353 -14 420 -14 q 232 12 286 -14 q 142 85 179 38 q 87 198 106 133 q 68 340 68 262 m 194 354 l 194 340 q 205 242 194 288 q 238 162 216 197 q 297 108 261 127 q 385 89 334 89 q 469 109 434 89 q 529 164 505 130 q 569 244 553 199 q 595 337 585 289 l 595 382 q 572 478 587 431 q 532 563 557 525 q 471 622 507 600 q 386 644 435 644 q 298 621 334 644 q 239 558 262 598 q 205 466 216 518 q 194 354 194 413 m 576 734 l 683 734 l 683 200 q 687 149 683 169 q 699 118 691 130 q 716 103 707 107 q 737 98 726 98 q 750 100 744 98 q 760 102 755 101 l 776 9 q 734 -10 755 -6 q 692 -14 714 -14 q 635 -2 661 -14 q 593 35 610 9 q 566 101 575 60 q 557 200 557 142 l 557 574 l 576 734 z "},"β":{"ha":823,"x_min":109,"x_max":747,"o":"m 351 559 l 450 559 q 611 523 545 559 q 712 427 677 488 q 747 288 747 366 q 708 124 747 192 q 598 22 668 57 q 439 -14 529 -14 q 335 1 387 -14 q 240 47 283 16 q 172 127 197 78 q 146 243 146 176 l 196 271 q 225 180 196 221 q 306 114 254 138 q 427 89 358 89 q 532 114 489 89 q 598 184 576 140 q 621 286 621 229 q 601 377 621 333 q 543 450 581 422 q 448 479 504 479 l 351 479 l 351 559 m 411 1001 q 564 967 499 1001 q 665 873 629 933 q 701 735 701 813 q 665 617 701 671 q 564 532 629 564 q 411 500 498 500 l 351 500 l 351 582 l 408 582 q 505 602 468 582 q 558 657 541 622 q 575 738 575 692 q 557 815 575 779 q 502 875 538 852 q 411 898 466 898 q 321 876 361 898 q 258 815 281 854 q 235 728 235 777 l 235 -260 l 109 -260 l 109 728 q 151 865 109 803 q 260 964 192 927 q 411 1001 329 1001 z "},"γ":{"ha":696,"x_min":32,"x_max":673,"o":"m 415 90 l 415 -283 l 290 -283 l 290 90 l 415 90 m 349 170 l 544 734 l 673 734 l 401 0 l 317 0 l 349 170 m 160 734 l 361 170 l 389 0 l 305 0 l 32 734 l 160 734 z "},"δ":{"ha":787,"x_min":66,"x_max":722,"o":"m 150 861 q 181 967 150 922 q 270 1037 212 1013 q 407 1061 327 1061 q 503 1052 460 1061 q 591 1023 546 1043 l 591 916 q 510 941 559 927 q 404 956 460 956 q 337 944 366 956 q 293 912 309 933 q 277 864 277 892 q 284 835 277 850 q 308 803 291 819 q 355 770 325 787 q 434 737 386 753 q 595 651 531 704 q 690 525 659 597 q 722 360 722 452 l 722 345 q 700 203 722 269 q 635 89 677 138 q 532 14 593 41 q 395 -14 471 -14 q 256 14 317 -14 q 152 89 195 41 q 88 203 110 138 q 66 345 66 269 l 66 360 q 97 507 66 441 q 179 616 128 572 q 290 675 231 661 l 290 678 q 214 723 245 696 q 166 785 182 750 q 150 861 150 821 m 192 360 l 192 345 q 204 247 192 293 q 241 165 216 201 q 304 109 266 130 q 395 89 342 89 q 484 109 446 89 q 546 165 522 130 q 583 247 571 201 q 595 345 595 293 l 595 360 q 581 446 595 404 q 540 524 566 488 q 477 584 513 559 q 396 618 441 609 q 306 597 345 618 q 242 541 267 576 q 204 458 217 505 q 192 360 192 412 z "},"ε":{"ha":749,"x_min":68,"x_max":681,"o":"m 356 398 l 505 398 l 505 325 l 366 325 q 272 312 310 325 q 214 274 233 300 q 194 206 194 248 q 206 161 194 182 q 241 123 218 140 q 298 98 264 107 q 374 88 332 88 q 470 106 429 88 q 533 154 511 125 q 556 217 556 184 l 681 217 q 654 114 681 157 q 584 42 628 70 q 485 0 540 14 q 374 -14 431 -14 q 252 1 308 -14 q 155 45 196 16 q 91 114 113 73 q 68 207 68 155 q 87 289 68 253 q 143 349 106 324 q 234 386 180 373 q 356 398 288 398 m 505 351 l 356 351 q 243 365 294 351 q 156 405 192 379 q 100 463 119 430 q 81 534 81 496 q 101 626 81 586 q 161 692 122 665 q 254 733 199 719 q 374 747 308 747 q 488 732 435 747 q 582 688 541 717 q 646 620 623 660 q 669 530 669 580 l 544 530 q 521 588 544 562 q 460 630 498 614 q 374 645 422 645 q 279 629 317 645 q 224 588 242 613 q 206 534 206 562 q 215 490 206 510 q 243 455 224 470 q 293 433 262 441 q 366 425 323 425 l 505 425 l 505 351 z "},"ζ":{"ha":720,"x_min":74,"x_max":654,"o":"m 597 987 l 654 987 l 654 906 l 416 617 q 327 500 363 555 q 272 388 291 445 q 254 262 254 331 q 260 205 254 229 q 279 164 266 182 q 312 136 292 147 q 361 116 333 124 l 450 90 q 539 63 500 76 q 602 23 579 50 q 625 -60 625 -4 q 605 -135 625 -96 q 557 -207 585 -174 q 505 -260 530 -241 l 439 -203 q 474 -159 460 -179 q 497 -119 489 -138 q 505 -79 505 -100 q 494 -51 505 -64 q 460 -27 483 -38 q 401 -7 437 -16 l 340 9 q 240 46 281 25 q 175 96 200 67 q 139 165 150 125 q 127 258 127 205 q 146 374 127 309 q 207 514 165 439 q 317 670 249 589 l 597 987 m 74 987 l 614 987 l 614 885 l 74 885 l 74 987 z "},"η":{"ha":787,"x_min":99,"x_max":684,"o":"m 224 577 l 224 0 l 99 0 l 99 734 l 212 734 l 224 577 m 199 391 l 146 389 q 165 533 146 467 q 223 646 185 598 q 314 721 260 694 q 436 747 368 747 q 539 734 493 747 q 617 688 585 720 q 667 603 650 656 q 684 471 684 550 l 684 -281 l 559 -281 l 559 469 q 548 553 559 519 q 517 607 538 587 q 467 635 496 627 q 399 644 437 644 q 307 624 345 644 q 245 569 269 604 q 210 488 221 534 q 199 391 199 442 z "},"θ":{"ha":791,"x_min":83,"x_max":707,"o":"m 395 1001 q 500 984 452 1001 q 587 933 549 968 q 652 847 625 899 q 693 723 679 794 q 707 559 707 651 l 707 434 q 693 271 707 342 q 652 145 679 199 q 588 56 626 92 q 502 4 550 21 q 396 -14 454 -14 q 291 4 339 -14 q 204 56 243 21 q 139 145 166 92 q 98 271 112 199 q 83 434 83 342 l 83 559 q 98 723 83 651 q 139 847 112 794 q 203 933 165 899 q 290 984 241 968 q 395 1001 338 1001 m 395 899 q 315 878 350 899 q 257 816 280 857 q 221 716 233 775 q 209 581 209 657 l 209 543 l 581 543 l 581 581 q 573 692 581 642 q 551 781 566 742 q 513 845 536 819 q 461 885 490 871 q 395 899 431 899 m 396 90 q 462 104 433 90 q 514 145 492 118 q 551 212 536 172 q 574 302 566 252 q 581 414 581 353 l 581 441 l 209 441 l 209 414 q 217 302 209 353 q 240 212 224 252 q 278 145 256 172 q 331 104 301 118 q 396 90 360 90 z "},"ι":{"ha":450,"x_min":132,"x_max":399,"o":"m 132 734 l 258 734 l 258 187 q 270 131 258 150 q 300 105 281 112 q 339 99 318 99 q 372 102 355 99 q 398 107 389 105 l 399 5 q 360 -4 384 1 q 302 -9 336 -9 q 217 10 256 -9 q 155 72 178 28 q 132 188 132 115 l 132 734 z "},"λ":{"ha":770,"x_min":26,"x_max":734,"o":"m 366 547 l 165 0 l 26 0 l 311 747 l 399 739 l 366 547 m 178 1029 q 243 1021 216 1029 q 291 998 271 1013 q 325 960 311 982 q 348 911 338 939 l 637 159 q 656 123 647 136 q 677 104 666 110 q 705 98 689 98 q 719 99 711 98 q 730 100 726 99 l 734 -3 q 712 -9 727 -6 q 682 -12 698 -12 q 611 -2 641 -12 q 559 38 582 8 q 515 126 537 67 l 307 663 l 227 858 q 206 899 217 884 q 180 920 195 913 q 145 926 165 926 q 130 926 140 926 q 113 925 119 926 l 113 1021 q 143 1027 123 1025 q 178 1029 163 1029 z "},"ξ":{"ha":681,"x_min":69,"x_max":636,"o":"m 616 975 l 599 874 q 548 886 574 881 q 497 895 523 892 q 444 899 471 899 q 327 881 372 899 q 260 834 281 863 q 239 771 239 805 q 251 710 239 738 q 290 663 264 683 q 359 633 317 644 q 460 623 401 623 l 555 623 l 555 544 l 457 544 q 316 561 379 544 q 208 609 253 578 q 138 680 162 640 q 113 768 113 721 q 136 867 113 824 q 203 940 159 910 q 307 985 246 970 q 442 1001 367 1001 q 506 998 474 1001 q 567 988 538 994 q 616 975 595 982 m 457 595 l 555 595 l 555 519 l 460 519 q 316 496 376 519 q 226 424 257 473 q 195 301 195 376 q 222 199 195 241 q 292 133 249 158 q 385 96 336 109 l 460 79 q 555 50 516 65 q 615 7 594 34 q 636 -68 636 -20 q 615 -143 635 -104 q 568 -214 595 -181 q 517 -267 541 -248 l 444 -210 q 481 -168 465 -186 q 507 -130 497 -149 q 516 -83 516 -110 q 506 -54 516 -66 q 472 -33 495 -42 q 412 -15 450 -24 l 372 -5 q 250 33 305 10 q 154 89 194 55 q 91 176 113 123 q 69 304 69 228 q 98 430 69 376 q 178 521 126 484 q 301 577 230 558 q 457 595 372 595 z "},"π":{"ha":828,"x_min":28,"x_max":806,"o":"m 771 734 l 771 630 l 28 630 l 28 734 l 771 734 m 269 734 l 269 0 l 142 0 l 142 734 l 269 734 m 540 734 l 666 734 l 666 187 q 677 131 666 150 q 707 105 689 112 q 747 99 726 99 q 780 102 762 99 q 806 107 797 105 l 806 5 q 767 -4 791 1 q 709 -9 743 -9 q 625 10 663 -9 q 563 72 586 28 q 540 188 540 115 l 540 734 z "},"ρ":{"ha":787,"x_min":99,"x_max":716,"o":"m 99 -282 l 99 393 q 123 546 99 480 q 189 657 146 612 q 285 725 231 702 q 401 747 340 747 q 539 719 480 747 q 637 637 597 690 q 696 513 677 585 q 716 354 716 441 l 716 340 q 698 198 716 262 q 644 85 680 133 q 555 12 608 38 q 435 -14 503 -14 q 311 9 364 -14 q 220 76 257 33 q 160 182 182 120 q 131 321 138 243 q 147 308 132 321 q 177 283 162 296 q 192 271 192 271 q 230 182 205 224 q 294 115 254 140 q 397 90 335 90 q 484 109 448 90 q 544 162 521 128 q 579 242 568 197 q 590 340 590 288 l 590 354 q 580 466 590 413 q 547 558 570 518 q 489 621 525 598 q 401 644 453 644 q 320 621 354 644 q 266 559 287 597 q 235 477 245 522 q 225 391 225 433 l 224 -282 l 99 -282 z "},"ς":{"ha":747,"x_min":68,"x_max":674,"o":"m 389 747 q 536 716 471 747 q 637 626 600 685 q 674 481 674 566 l 555 481 q 536 564 555 527 q 481 623 518 601 q 389 644 444 644 q 301 622 338 644 q 240 561 264 599 q 206 476 217 522 q 195 381 195 429 l 195 353 q 221 243 195 292 q 302 159 248 195 q 435 102 355 124 q 531 73 489 88 q 598 29 574 58 q 623 -56 623 0 q 603 -130 623 -91 q 556 -201 583 -168 q 505 -254 528 -234 l 438 -197 q 473 -155 459 -173 q 495 -117 488 -136 q 503 -72 503 -98 q 492 -39 503 -52 q 458 -17 481 -26 q 397 0 435 -8 q 218 70 291 24 q 106 187 144 117 q 68 353 68 258 l 68 381 q 90 521 68 455 q 152 638 111 587 q 253 718 193 689 q 389 747 313 747 z "},"σ":{"ha":787,"x_min":66,"x_max":779,"o":"m 66 359 l 66 374 q 88 516 66 451 q 152 631 110 582 q 255 707 195 680 q 393 734 316 734 q 431 719 414 732 q 469 691 448 707 q 525 667 490 676 q 631 590 587 637 q 699 482 675 543 q 722 349 722 421 l 722 334 q 700 203 722 266 q 635 92 677 141 q 532 15 593 43 q 394 -14 471 -14 q 256 15 317 -14 q 153 93 195 43 q 88 212 110 144 q 66 359 66 279 m 191 374 l 191 359 q 203 255 191 304 q 240 170 216 207 q 303 111 265 132 q 394 90 342 90 q 484 111 446 90 q 547 170 522 132 q 583 255 571 207 q 595 359 595 304 l 595 374 q 583 471 595 425 q 546 553 571 517 q 483 610 522 589 q 393 630 445 630 q 303 610 341 630 q 240 553 264 589 q 203 471 216 517 q 191 374 191 425 m 779 734 l 779 630 l 392 630 l 392 734 l 779 734 z "},"τ":{"ha":724,"x_min":55,"x_max":669,"o":"m 669 734 l 669 632 l 55 632 l 55 734 l 669 734 m 291 734 l 416 734 l 416 183 q 426 127 416 146 q 452 100 436 107 q 488 93 469 93 q 523 98 507 93 q 551 111 539 104 l 578 22 q 517 -7 547 -1 q 456 -14 488 -14 q 367 7 404 -14 q 311 72 330 27 q 291 190 291 117 l 291 734 z "},"υ":{"ha":758,"x_min":98,"x_max":688,"o":"m 98 734 l 223 734 l 223 289 q 233 196 223 235 q 262 134 243 158 q 306 100 281 111 q 360 89 331 89 q 448 114 410 89 q 511 182 486 140 q 549 277 536 225 q 562 381 562 329 q 537 562 561 473 q 479 734 513 650 l 611 734 q 649 639 631 692 q 677 522 667 586 q 688 382 688 458 q 669 232 688 304 q 610 105 650 161 q 509 18 570 50 q 366 -14 449 -14 q 255 4 304 -14 q 170 59 205 22 q 116 153 135 96 q 98 290 98 211 l 98 734 z "},"φ":{"ha":979,"x_min":60,"x_max":920,"o":"m 421 -324 l 421 580 q 443 662 421 627 q 502 715 464 696 q 591 734 541 734 q 718 707 659 734 q 823 630 777 680 q 894 514 868 581 q 920 369 920 448 q 896 225 920 294 q 820 102 872 156 q 685 17 768 48 q 484 -14 602 -14 q 287 18 368 -14 q 156 106 206 50 q 83 233 106 161 q 60 382 60 304 q 79 524 60 458 q 138 642 99 589 q 233 734 176 695 l 301 644 q 236 566 261 609 q 199 475 211 522 q 185 382 187 429 q 201 278 185 330 q 251 183 216 226 q 343 115 286 140 q 484 89 400 89 q 666 131 598 89 q 764 238 734 174 q 794 369 794 302 q 780 465 793 418 q 741 549 766 512 q 678 609 715 587 q 591 631 641 631 q 558 616 570 631 q 547 585 547 602 l 547 -324 l 421 -324 z "},"ψ":{"ha":972,"x_min":65,"x_max":913,"o":"m 65 734 l 191 734 l 191 403 q 212 257 191 317 q 273 160 234 197 q 364 106 312 123 q 477 89 416 89 q 624 115 564 89 q 720 184 684 140 q 772 280 755 227 q 788 385 788 332 q 762 564 786 476 q 702 734 738 651 l 834 734 q 873 640 855 692 q 902 524 891 587 q 913 385 913 460 q 891 234 913 306 q 818 106 868 162 q 685 18 768 50 q 484 -14 603 -14 q 311 10 388 -14 q 178 85 233 35 q 94 216 123 136 q 65 404 65 295 l 65 734 m 415 734 l 541 734 l 541 -321 l 415 -321 l 415 734 z "},"ω":{"ha":1144,"x_min":83,"x_max":1059,"o":"m 836 734 l 967 734 q 1013 638 991 691 q 1046 521 1034 585 q 1059 380 1059 457 q 1045 231 1059 302 q 999 105 1030 160 q 916 18 967 50 q 791 -14 864 -14 q 687 8 732 -14 q 610 73 642 30 q 562 178 578 115 q 546 321 546 240 l 546 522 l 634 522 l 634 319 q 645 213 634 256 q 677 141 656 169 q 725 101 697 114 q 784 89 752 89 q 853 112 825 89 q 899 175 882 135 q 925 268 917 216 q 933 380 933 321 q 904 561 931 473 q 836 734 876 650 m 175 734 l 307 734 q 238 561 266 650 q 209 380 211 473 q 214 290 209 333 q 230 210 219 246 q 258 146 241 174 q 300 104 275 119 q 357 89 325 89 q 417 101 390 89 q 465 141 445 114 q 497 213 486 169 q 508 319 508 256 l 508 522 l 596 522 l 596 321 q 580 178 596 240 q 532 73 564 115 q 455 8 500 30 q 351 -14 410 -14 q 248 6 292 -14 q 172 64 203 27 q 121 152 140 102 q 92 260 101 201 q 83 380 83 318 q 96 521 83 457 q 130 638 109 585 q 175 734 151 691 z "},"ϑ":{"ha":804,"x_min":83,"x_max":777,"o":"m 772 527 l 777 426 q 711 408 748 415 q 638 401 674 401 q 420 448 513 401 q 276 576 327 495 q 225 757 225 656 l 225 768 q 255 895 225 842 q 335 975 284 947 q 451 1003 386 1003 q 546 986 504 1003 q 618 937 589 970 q 664 858 648 905 q 680 750 680 810 l 680 296 q 643 126 680 195 q 541 21 606 57 q 387 -14 475 -14 q 263 7 319 -14 q 166 70 207 29 q 104 168 126 111 q 83 296 83 224 l 83 522 l 208 523 l 208 296 q 230 186 208 232 q 292 117 252 141 q 387 93 332 93 q 477 115 440 93 q 535 181 515 136 q 555 296 555 227 l 555 750 q 548 815 555 788 q 529 861 542 843 q 496 887 515 879 q 451 896 477 896 q 400 883 422 896 q 364 843 377 871 q 351 768 351 814 l 351 755 q 384 633 351 690 q 480 543 416 577 q 638 509 545 509 q 708 514 673 509 q 772 527 743 519 z "},"ϒ":{"ha":740,"x_min":-26,"x_max":770,"o":"m 437 466 l 437 0 l 307 0 l 307 466 l 437 466 m 368 516 l 524 869 q 570 946 547 919 q 622 985 593 974 q 685 996 650 996 q 729 992 709 996 q 770 978 749 988 l 745 875 q 731 879 742 878 q 710 881 721 881 q 683 876 696 881 q 659 860 670 871 q 638 827 648 848 l 427 368 l 336 369 l 368 516 m 222 869 l 378 511 l 407 369 l 316 368 l 106 827 q 85 860 96 848 q 61 876 73 871 q 34 881 48 881 q 12 879 23 881 q -2 875 1 878 l -26 977 q 15 992 -5 987 q 58 996 35 996 q 121 986 92 996 q 174 948 149 976 q 222 869 199 921 z "},"ϖ":{"ha":1090,"x_min":51,"x_max":1060,"o":"m 1060 734 l 1060 631 l 51 631 l 51 734 l 1060 734 m 787 734 l 920 734 q 965 638 944 691 q 998 521 985 585 q 1011 380 1011 457 q 1003 260 1011 318 q 977 152 994 201 q 930 64 959 102 q 861 6 901 27 q 768 -14 821 -14 q 664 8 709 -14 q 587 73 618 30 q 540 178 556 115 q 524 321 524 240 l 524 490 l 612 490 l 612 319 q 623 213 612 256 q 654 141 634 169 q 702 101 675 114 q 762 89 729 89 q 809 104 789 89 q 844 146 829 119 q 868 210 859 173 q 881 290 877 246 q 886 380 886 333 q 856 561 883 473 q 787 734 828 650 m 178 734 l 310 734 q 241 561 269 650 q 212 380 214 473 q 216 290 212 333 q 230 210 220 246 q 253 146 239 174 q 288 104 268 119 q 336 89 309 89 q 395 101 368 89 q 443 141 422 114 q 474 213 463 169 q 486 319 486 256 l 486 490 l 574 490 l 574 321 q 557 178 574 240 q 510 73 541 115 q 433 8 478 30 q 329 -14 387 -14 q 236 6 276 -14 q 167 64 195 27 q 120 152 138 102 q 94 260 102 201 q 85 380 85 318 q 98 521 85 457 q 133 638 111 585 q 178 734 154 691 z "},"Ђ":{"ha":1042,"x_min":29,"x_max":989,"o":"m 389 441 l 389 554 q 470 580 425 568 q 559 598 515 591 q 637 605 603 605 q 825 569 747 605 q 946 463 904 532 q 989 294 989 393 q 967 167 989 223 q 904 72 946 111 q 799 13 862 33 q 651 -8 735 -8 l 650 94 q 748 109 708 94 q 812 149 788 123 q 847 212 836 176 q 858 293 858 249 q 833 401 858 357 q 759 469 808 446 q 636 492 709 492 q 551 486 593 492 q 467 468 508 479 q 389 441 426 457 m 441 987 l 441 0 l 311 0 l 311 987 l 441 987 m 795 987 l 795 880 l 29 880 l 29 987 l 795 987 z "},"Є":{"ha":937,"x_min":83,"x_max":844,"o":"m 601 552 l 601 446 l 196 446 l 196 552 l 601 552 m 713 314 l 844 314 q 790 146 834 220 q 667 30 747 73 q 470 -14 588 -14 q 311 19 382 -14 q 189 112 240 52 q 111 256 138 172 q 83 444 83 340 l 83 542 q 111 730 83 646 q 190 876 138 815 q 316 968 242 936 q 481 1001 389 1001 q 670 959 593 1001 q 791 843 747 917 q 844 671 834 768 l 713 671 q 678 790 704 740 q 605 867 652 840 q 481 894 557 894 q 366 869 416 894 q 282 797 316 844 q 232 686 249 751 q 215 543 215 622 l 215 444 q 225 333 215 386 q 254 237 235 281 q 304 160 274 193 q 376 111 335 128 q 470 93 417 93 q 602 119 553 93 q 677 195 652 145 q 713 314 703 244 z "},"Љ":{"ha":1488,"x_min":34,"x_max":1429,"o":"m 254 987 l 385 987 l 362 504 q 346 318 357 399 q 315 176 335 236 q 262 77 294 116 q 182 19 229 38 q 69 0 135 0 l 34 0 l 34 106 l 61 109 q 126 126 99 111 q 173 170 154 140 q 205 248 193 200 q 224 364 217 295 q 235 525 231 433 l 254 987 m 744 987 l 744 880 l 299 880 l 299 987 l 744 987 m 825 605 l 1095 605 q 1277 566 1203 605 q 1390 458 1352 526 q 1429 302 1429 389 q 1407 182 1429 237 q 1343 86 1385 127 q 1238 22 1300 45 q 1095 0 1176 0 l 726 0 l 726 987 l 857 987 l 857 106 l 1095 106 q 1212 135 1167 106 q 1278 209 1257 163 q 1299 303 1299 254 q 1278 397 1299 353 q 1212 470 1257 441 q 1095 498 1167 498 l 825 498 l 825 605 z "},"Њ":{"ha":1501,"x_min":121,"x_max":1441,"o":"m 756 559 l 756 453 l 231 453 l 231 559 l 756 559 m 252 987 l 252 0 l 121 0 l 121 987 l 252 987 m 838 574 l 1107 574 q 1290 538 1215 574 q 1402 438 1364 502 q 1441 290 1441 374 q 1419 174 1441 227 q 1355 82 1398 121 q 1250 22 1312 43 q 1107 0 1188 0 l 738 0 l 738 987 l 869 987 l 869 113 l 1107 113 q 1224 138 1179 113 q 1291 204 1270 163 q 1312 292 1312 245 q 1291 378 1312 338 q 1224 443 1270 418 q 1107 468 1179 468 l 838 468 l 838 574 z "},"Ћ":{"ha":1131,"x_min":42,"x_max":1012,"o":"m 1012 0 l 882 0 l 882 309 q 859 429 882 386 q 791 490 836 472 q 677 507 745 507 q 598 504 636 507 q 523 494 559 500 q 451 480 486 488 q 380 460 415 471 l 380 568 q 447 587 414 578 q 514 602 479 595 q 589 611 549 608 q 677 614 629 614 q 857 584 782 614 q 972 487 932 554 q 1012 309 1012 420 l 1012 0 m 450 987 l 450 0 l 319 0 l 319 987 l 450 987 m 808 987 l 808 880 l 42 880 l 42 987 l 808 987 z "},"Џ":{"ha":990,"x_min":119,"x_max":868,"o":"m 119 0 l 119 987 l 251 987 l 251 106 l 737 106 l 737 987 l 868 987 l 868 0 l 119 0 m 564 94 l 564 -243 l 433 -243 l 433 94 l 564 94 z "},"Б":{"ha":876,"x_min":111,"x_max":814,"o":"m 717 987 l 717 880 l 241 880 l 241 0 l 111 0 l 111 987 l 717 987 m 210 585 l 479 585 q 663 549 588 585 q 776 448 737 513 q 814 295 814 382 q 793 176 814 230 q 728 82 771 122 q 623 21 686 43 q 479 0 561 0 l 111 0 l 111 987 l 241 987 l 241 106 l 479 106 q 597 133 552 106 q 663 203 642 160 q 684 296 684 247 q 663 387 684 346 q 597 453 642 429 q 479 478 552 478 l 210 478 l 210 585 z "},"Д":{"ha":1044,"x_min":35,"x_max":1005,"o":"m 891 106 l 891 0 l 144 0 l 144 106 l 891 106 m 165 106 l 165 -243 l 35 -243 l 35 106 l 165 106 m 1005 106 l 1004 -242 l 874 -242 l 874 106 l 1005 106 m 763 987 l 763 880 l 330 880 l 330 987 l 763 987 m 876 987 l 876 0 l 745 0 l 745 987 l 876 987 m 286 987 l 416 987 l 396 590 q 379 425 392 500 q 347 287 366 349 q 304 175 328 224 q 252 91 279 126 q 194 32 224 55 q 133 0 163 9 l 73 0 l 73 106 l 115 106 q 156 161 133 125 q 201 255 178 197 q 241 395 224 312 q 264 590 258 477 l 286 987 z "},"Ж":{"ha":1261,"x_min":18,"x_max":1252,"o":"m 397 451 l 45 987 l 198 987 l 460 559 l 646 559 l 625 451 l 397 451 m 468 461 l 181 0 l 18 0 l 385 574 l 468 461 m 703 987 l 703 0 l 573 0 l 573 987 l 703 987 m 1226 987 l 872 451 l 651 451 l 631 559 l 810 559 l 1072 987 l 1226 987 m 1089 0 l 803 461 l 886 574 l 1252 0 l 1089 0 z "},"З":{"ha":825,"x_min":54,"x_max":767,"o":"m 417 474 l 300 474 l 300 557 l 412 557 q 533 578 487 557 q 600 637 579 600 q 621 723 621 674 q 598 809 621 770 q 527 871 575 848 q 403 895 479 895 q 300 873 346 895 q 227 814 254 852 q 199 728 199 777 l 68 728 q 95 841 68 791 q 168 927 121 892 q 274 982 214 963 q 403 1001 335 1001 q 547 983 482 1001 q 657 930 611 965 q 728 842 703 895 q 752 721 752 790 q 728 625 752 670 q 661 547 705 581 q 555 493 616 513 q 417 474 493 474 m 300 532 l 417 532 q 566 515 500 532 q 675 465 631 498 q 744 385 720 433 q 767 275 767 337 q 740 153 767 206 q 665 62 713 99 q 549 5 616 24 q 403 -14 482 -14 q 277 3 339 -14 q 165 55 215 20 q 84 144 115 90 q 54 274 54 198 l 185 274 q 213 183 185 224 q 289 117 240 142 q 403 92 338 92 q 529 116 477 92 q 609 180 581 139 q 636 273 636 221 q 622 352 636 318 q 579 407 607 385 q 509 439 551 429 q 412 450 467 450 l 300 450 l 300 532 z "},"И":{"ha":991,"x_min":121,"x_max":868,"o":"m 251 227 l 737 987 l 868 987 l 868 0 l 737 0 l 737 762 l 251 0 l 121 0 l 121 987 l 251 987 l 251 227 z "},"Л":{"ha":983,"x_min":33,"x_max":862,"o":"m 749 987 l 749 880 l 298 880 l 298 987 l 749 987 m 862 987 l 862 0 l 731 0 l 731 987 l 862 987 m 253 987 l 383 987 l 361 504 q 345 318 356 399 q 313 176 334 236 q 260 77 293 116 q 181 19 228 38 q 68 0 134 0 l 33 0 l 33 106 l 60 109 q 125 126 98 111 q 172 170 153 140 q 203 248 191 200 q 223 364 216 295 q 234 525 230 433 l 253 987 z "},"У":{"ha":873,"x_min":52,"x_max":832,"o":"m 420 328 l 682 987 l 832 987 l 483 165 q 450 98 468 130 q 405 41 431 66 q 339 1 378 16 q 243 -14 300 -14 q 204 -13 227 -14 q 175 -9 182 -11 l 179 96 q 208 93 186 94 q 240 92 230 92 q 301 108 279 92 q 337 148 323 123 q 363 197 351 172 l 420 328 m 199 987 l 473 372 l 506 251 l 396 243 l 52 987 l 199 987 z "},"Ф":{"ha":1072,"x_min":57,"x_max":1022,"o":"m 457 889 l 621 889 q 779 860 706 889 q 906 779 852 831 q 991 653 961 726 q 1022 492 1022 580 q 991 330 1022 404 q 906 204 961 257 q 779 122 852 151 q 621 93 706 93 l 457 93 q 299 122 372 93 q 172 203 227 151 q 87 329 117 256 q 57 490 57 402 q 87 651 57 578 q 172 778 117 724 q 299 860 227 831 q 457 889 372 889 m 457 786 q 307 749 368 786 q 213 646 245 712 q 181 490 181 579 q 199 369 181 423 q 252 276 217 315 q 339 216 288 237 q 457 195 391 195 l 622 195 q 771 232 710 195 q 865 336 833 269 q 897 492 897 403 q 879 612 897 558 q 826 705 861 667 q 740 765 791 744 q 622 786 688 786 l 457 786 m 602 1028 l 602 -41 l 477 -41 l 477 1028 l 602 1028 z "},"Ц":{"ha":1016,"x_min":119,"x_max":971,"o":"m 971 110 l 959 -238 l 842 -238 l 842 0 l 745 0 l 745 110 l 971 110 m 119 0 l 119 987 l 250 987 l 250 106 l 736 106 l 736 987 l 867 987 l 867 0 l 119 0 z "},"Ч":{"ha":951,"x_min":102,"x_max":831,"o":"m 102 987 l 233 987 l 233 679 q 256 559 233 602 q 323 498 278 515 q 437 480 369 480 q 516 484 477 480 q 591 493 554 487 q 663 508 627 499 q 733 527 699 517 l 733 420 q 667 401 700 410 q 599 386 634 392 q 525 376 564 380 q 437 373 485 373 q 257 403 332 373 q 142 500 182 433 q 102 679 102 568 l 102 987 m 700 987 l 831 987 l 831 0 l 700 0 l 700 987 z "},"Ш":{"ha":1307,"x_min":119,"x_max":1188,"o":"m 119 987 l 251 987 l 251 106 l 590 106 l 590 987 l 720 987 l 720 106 l 1057 106 l 1057 987 l 1188 987 l 1188 0 l 119 0 l 119 987 z "},"Щ":{"ha":1345,"x_min":119,"x_max":1288,"o":"m 1288 103 l 1276 -238 l 1163 -238 l 1163 0 l 1067 0 l 1067 103 l 1288 103 m 119 987 l 251 987 l 251 106 l 590 106 l 590 987 l 720 987 l 720 106 l 1057 106 l 1057 987 l 1188 987 l 1188 0 l 119 0 l 119 987 z "},"Ъ":{"ha":1054,"x_min":12,"x_max":994,"o":"m 12 884 l 12 987 l 321 987 l 321 884 l 12 884 m 389 585 l 658 585 q 841 549 766 585 q 955 448 916 513 q 994 295 994 382 q 971 176 994 230 q 907 82 949 122 q 802 21 864 43 q 658 0 739 0 l 290 0 l 290 987 l 420 987 l 420 106 l 658 106 q 775 133 730 106 q 842 203 821 160 q 863 296 863 247 q 842 387 863 346 q 775 453 821 429 q 658 478 730 478 l 389 478 l 389 585 z "},"Ы":{"ha":1201,"x_min":121,"x_max":1075,"o":"m 220 585 l 490 585 q 673 549 598 585 q 786 448 747 513 q 825 295 825 382 q 803 176 825 230 q 739 82 781 122 q 633 21 696 43 q 490 0 571 0 l 121 0 l 121 987 l 252 987 l 252 106 l 490 106 q 607 133 562 106 q 673 203 652 160 q 694 296 694 247 q 673 387 694 346 q 607 453 652 429 q 490 478 562 478 l 220 478 l 220 585 m 1075 987 l 1075 0 l 944 0 l 944 987 l 1075 987 z "},"Ь":{"ha":871,"x_min":111,"x_max":814,"o":"m 210 585 l 479 585 q 663 549 588 585 q 776 448 737 513 q 814 295 814 382 q 793 176 814 230 q 728 82 771 122 q 623 21 686 43 q 479 0 561 0 l 111 0 l 111 987 l 241 987 l 241 106 l 479 106 q 597 133 552 106 q 663 203 642 160 q 684 296 684 247 q 663 387 684 346 q 597 453 642 429 q 479 478 552 478 l 210 478 l 210 585 z "},"Э":{"ha":937,"x_min":100,"x_max":860,"o":"m 746 546 l 746 439 l 341 439 l 341 546 l 746 546 m 100 314 l 231 314 q 267 195 241 244 q 342 119 292 145 q 475 93 391 93 q 589 120 541 93 q 668 196 637 148 q 714 308 699 244 q 730 444 730 372 l 730 543 q 719 660 730 606 q 686 757 708 714 q 632 831 665 800 q 558 878 600 861 q 463 894 515 894 q 339 867 387 894 q 266 790 292 840 q 231 671 241 740 l 100 671 q 154 843 111 768 q 274 959 197 917 q 463 1001 351 1001 q 628 968 555 1001 q 753 876 701 936 q 832 730 805 815 q 860 542 860 646 l 860 444 q 832 256 860 340 q 754 112 805 172 q 632 19 703 52 q 475 -14 562 -14 q 277 30 356 -14 q 154 146 197 73 q 100 314 111 220 z "},"Ю":{"ha":1242,"x_min":124,"x_max":1190,"o":"m 255 987 l 255 0 l 124 0 l 124 987 l 255 987 m 481 535 l 481 432 l 247 432 l 247 535 l 481 535 m 1190 525 l 1190 463 q 1162 263 1190 351 q 1082 113 1135 175 q 957 19 1030 52 q 794 -14 884 -14 q 634 19 707 -14 q 508 113 561 52 q 425 263 454 175 q 396 463 396 351 l 396 525 q 425 724 396 636 q 507 874 454 812 q 632 968 559 936 q 793 1001 705 1001 q 956 968 883 1001 q 1081 874 1029 936 q 1162 724 1134 812 q 1190 525 1190 636 m 1061 463 l 1061 526 q 1043 682 1061 614 q 990 796 1025 750 q 906 866 956 842 q 793 890 856 890 q 683 866 732 890 q 598 796 633 842 q 545 682 564 750 q 526 526 526 614 l 526 463 q 545 306 526 374 q 599 191 564 237 q 684 121 635 144 q 794 97 733 97 q 907 121 858 97 q 991 191 957 144 q 1043 306 1025 237 q 1061 463 1061 374 z "},"Я":{"ha":884,"x_min":61,"x_max":763,"o":"m 663 385 l 385 385 l 321 411 q 156 515 214 445 q 98 690 98 585 q 141 852 98 785 q 261 953 183 918 q 447 987 340 987 l 763 987 l 763 0 l 632 0 l 632 880 l 447 880 q 284 829 338 880 q 229 690 229 777 q 253 588 229 633 q 325 517 277 543 q 443 492 372 492 l 663 492 l 663 385 m 440 452 l 200 0 l 61 0 l 308 452 l 440 452 z "},"б":{"ha":768,"x_min":66,"x_max":722,"o":"m 566 1053 l 669 1053 q 649 948 669 987 q 594 888 629 909 q 515 856 559 867 q 425 835 471 845 q 316 797 366 823 q 231 723 267 770 q 179 600 195 675 q 170 412 162 524 l 170 349 l 66 349 l 66 412 q 91 631 66 537 q 159 789 115 724 q 263 891 203 853 q 397 943 324 929 q 488 965 450 954 q 546 998 526 977 q 566 1053 566 1018 m 418 692 q 546 667 490 692 q 642 597 602 642 q 702 491 681 552 q 722 359 722 431 l 722 345 q 700 202 722 268 q 636 89 678 137 q 533 13 593 40 q 395 -14 472 -14 q 257 13 317 -14 q 153 89 196 40 q 89 202 111 137 q 66 345 66 268 l 66 359 q 73 393 66 376 q 88 426 79 409 q 104 462 97 443 q 173 575 130 523 q 278 660 217 627 q 418 692 340 692 m 393 589 q 280 557 324 589 q 214 473 235 526 q 192 359 192 420 l 192 345 q 204 247 192 293 q 241 165 216 201 q 304 109 266 130 q 395 89 342 89 q 485 109 447 89 q 547 165 523 130 q 584 247 572 201 q 596 345 596 293 l 596 359 q 584 447 596 406 q 547 520 572 488 q 484 571 522 552 q 393 589 446 589 z "},"в":{"ha":794,"x_min":107,"x_max":722,"o":"m 440 323 l 199 323 l 198 423 l 395 423 q 492 435 453 423 q 551 469 531 446 q 570 526 570 492 q 559 573 570 553 q 526 606 548 593 q 470 626 503 619 q 393 632 437 632 l 233 632 l 233 0 l 107 0 l 107 734 l 393 734 q 519 722 463 734 q 615 685 575 709 q 675 622 654 660 q 696 532 696 584 q 683 469 696 499 q 643 416 669 439 q 578 379 616 393 q 489 360 539 364 l 440 323 m 440 0 l 154 0 l 216 102 l 440 102 q 527 115 492 102 q 579 153 562 128 q 596 212 596 178 q 579 272 596 247 q 527 310 562 296 q 440 323 492 323 l 250 323 l 251 423 l 489 423 l 534 385 q 637 355 595 380 q 701 292 679 330 q 722 209 722 254 q 703 118 722 157 q 647 53 684 79 q 558 13 610 26 q 440 0 506 0 z "},"г":{"ha":583,"x_min":105,"x_max":570,"o":"m 570 734 l 570 630 l 231 630 l 231 0 l 105 0 l 105 734 l 570 734 z "},"д":{"ha":838,"x_min":31,"x_max":795,"o":"m 228 734 l 353 734 l 342 459 q 319 279 338 355 q 269 150 299 203 q 200 60 238 96 q 123 0 163 24 l 60 0 l 64 102 l 90 103 q 133 158 112 130 q 172 225 154 186 q 201 320 189 264 q 216 459 213 377 l 228 734 m 259 734 l 701 734 l 701 0 l 575 0 l 575 618 l 259 618 l 259 734 m 32 103 l 795 103 l 795 -216 l 669 -216 l 669 0 l 157 0 l 157 -216 l 31 -216 l 32 103 z "},"ж":{"ha":1064,"x_min":15,"x_max":1044,"o":"m 318 319 l 40 734 l 191 734 l 381 430 l 528 430 l 509 319 l 318 319 m 387 332 l 174 0 l 15 0 l 307 423 l 387 332 m 592 734 l 592 0 l 467 0 l 467 734 l 592 734 m 1020 734 l 742 319 l 551 319 l 531 430 l 678 430 l 868 734 l 1020 734 m 886 0 l 672 332 l 753 423 l 1044 0 l 886 0 z "},"з":{"ha":705,"x_min":60,"x_max":638,"o":"m 370 351 l 235 351 l 235 428 l 359 428 q 442 441 412 428 q 486 478 473 454 q 498 534 498 502 q 484 588 498 562 q 437 629 469 613 q 352 645 406 645 q 273 630 309 645 q 217 588 238 614 q 197 530 197 562 l 71 530 q 110 645 71 597 q 212 720 148 694 q 352 747 276 747 q 466 733 416 747 q 552 692 517 719 q 606 626 587 665 q 625 534 625 586 q 607 463 625 496 q 556 405 589 430 q 476 365 523 379 q 370 351 429 351 m 235 398 l 370 398 q 486 386 435 398 q 570 349 536 373 q 621 289 604 324 q 638 207 638 253 q 617 114 638 155 q 559 45 597 73 q 468 1 521 16 q 352 -14 416 -14 q 214 11 281 -14 q 103 86 146 35 q 60 217 60 138 l 185 217 q 206 154 185 184 q 265 106 227 124 q 352 87 302 87 q 440 104 405 87 q 493 147 475 120 q 511 206 511 174 q 495 273 511 248 q 445 310 479 298 q 359 321 412 321 l 235 321 l 235 398 z "},"и":{"ha":802,"x_min":106,"x_max":696,"o":"m 231 199 l 570 734 l 696 734 l 696 0 l 570 0 l 570 535 l 231 0 l 106 0 l 106 734 l 231 734 l 231 199 z "},"к":{"ha":751,"x_min":106,"x_max":738,"o":"m 232 734 l 232 0 l 106 0 l 106 734 l 232 734 m 713 734 l 366 313 l 190 313 l 171 423 l 315 423 l 561 734 l 713 734 m 578 0 l 309 332 l 389 423 l 738 0 l 578 0 z "},"л":{"ha":803,"x_min":30,"x_max":696,"o":"m 586 734 l 586 630 l 231 630 l 231 734 l 586 734 m 696 734 l 696 0 l 571 0 l 571 734 l 696 734 m 201 734 l 327 734 l 308 380 q 293 235 303 298 q 264 127 282 172 q 219 55 246 83 q 155 13 193 26 q 69 0 118 0 l 30 0 l 30 111 l 57 113 q 107 126 86 115 q 142 160 127 138 q 165 219 156 183 q 179 304 174 255 q 187 420 184 354 l 201 734 z "},"м":{"ha":1030,"x_min":107,"x_max":924,"o":"m 517 167 l 767 734 l 888 734 l 561 0 l 474 0 l 149 734 l 269 734 l 517 167 m 233 734 l 233 0 l 107 0 l 107 734 l 233 734 m 798 0 l 798 734 l 924 734 l 924 0 l 798 0 z "},"н":{"ha":801,"x_min":106,"x_max":695,"o":"m 593 416 l 593 314 l 205 314 l 205 416 l 593 416 m 232 734 l 232 0 l 106 0 l 106 734 l 232 734 m 695 734 l 695 0 l 569 0 l 569 734 l 695 734 z "},"п":{"ha":802,"x_min":106,"x_max":696,"o":"m 585 734 l 585 630 l 214 630 l 214 734 l 585 734 m 232 734 l 232 0 l 106 0 l 106 734 l 232 734 m 696 734 l 696 0 l 570 0 l 570 734 l 696 734 z "},"т":{"ha":668,"x_min":27,"x_max":641,"o":"m 395 734 l 395 0 l 269 0 l 269 734 l 395 734 m 641 734 l 641 632 l 27 632 l 27 734 l 641 734 z "},"ф":{"ha":1008,"x_min":68,"x_max":939,"o":"m 939 354 l 939 340 q 922 198 939 262 q 872 85 905 133 q 789 12 838 38 q 674 -14 739 -14 q 580 0 621 -14 q 511 43 539 15 q 466 110 483 71 q 444 197 450 149 l 444 523 q 466 616 450 575 q 511 687 483 658 q 579 732 539 716 q 673 747 619 747 q 768 729 726 747 q 843 675 810 710 q 896 592 875 641 q 928 484 918 544 q 939 354 939 423 m 814 340 l 814 354 q 807 445 814 401 q 788 524 801 488 q 753 587 774 560 q 703 629 732 614 q 635 644 673 644 q 568 634 595 644 q 526 607 541 624 q 505 572 511 591 l 505 147 q 528 119 513 132 q 570 97 544 106 q 637 89 597 89 q 718 108 684 89 q 773 162 751 127 q 804 242 794 197 q 814 340 814 288 m 68 340 l 68 354 q 79 484 68 423 q 111 592 90 544 q 165 675 133 641 q 240 729 197 710 q 335 747 282 747 q 426 732 387 747 q 492 687 465 716 q 536 616 519 658 q 559 523 552 575 l 559 210 q 536 117 553 159 q 493 46 520 76 q 426 1 466 17 q 334 -14 387 -14 q 219 12 269 -14 q 136 85 170 38 q 85 198 102 133 q 68 340 68 262 m 194 354 l 194 340 q 203 242 194 288 q 232 162 212 197 q 285 108 252 127 q 365 89 317 89 q 432 99 406 89 q 474 125 458 109 q 498 159 490 142 l 498 572 q 476 607 491 591 q 434 634 460 624 q 366 644 408 644 q 286 621 319 644 q 232 558 252 598 q 203 466 212 518 q 194 354 194 413 m 435 -282 l 435 1042 l 562 1042 l 562 -282 l 435 -282 z "},"ц":{"ha":823,"x_min":106,"x_max":783,"o":"m 106 0 l 106 734 l 232 734 l 232 103 l 570 103 l 570 734 l 696 734 l 696 0 l 106 0 m 783 103 l 770 -218 l 659 -218 l 659 0 l 563 0 l 563 103 l 783 103 z "},"ч":{"ha":755,"x_min":71,"x_max":649,"o":"m 649 734 l 649 0 l 524 0 l 524 734 l 649 734 m 606 397 l 606 294 q 529 268 568 279 q 447 251 490 257 q 354 244 404 244 q 203 274 267 244 q 105 366 140 304 q 71 521 71 427 l 71 735 l 196 735 l 196 521 q 214 422 196 460 q 268 366 233 384 q 354 348 303 348 q 446 354 403 348 q 529 372 489 361 q 606 397 568 382 z "},"ш":{"ha":1124,"x_min":106,"x_max":1020,"o":"m 106 734 l 232 734 l 232 103 l 500 103 l 500 734 l 627 734 l 627 103 l 895 103 l 895 734 l 1020 734 l 1020 0 l 106 0 l 106 734 z "},"щ":{"ha":1149,"x_min":99,"x_max":1116,"o":"m 1116 103 l 1103 -218 l 991 -218 l 991 0 l 896 0 l 896 103 l 1116 103 m 99 734 l 224 734 l 224 103 l 493 103 l 493 734 l 619 734 l 619 103 l 887 103 l 887 734 l 1013 734 l 1013 0 l 99 0 l 99 734 z "},"ъ":{"ha":862,"x_min":20,"x_max":825,"o":"m 342 734 l 342 631 l 20 631 l 20 734 l 342 734 m 330 481 l 551 481 q 701 451 640 481 q 793 366 762 420 q 825 243 825 312 q 807 148 825 193 q 754 71 789 104 q 668 19 720 37 q 551 0 617 0 l 238 0 l 238 734 l 364 734 l 364 103 l 551 103 q 637 123 605 103 q 684 174 669 142 q 698 239 698 205 q 684 304 698 272 q 637 357 669 336 q 551 378 605 378 l 330 378 l 330 481 z "},"ы":{"ha":1078,"x_min":107,"x_max":954,"o":"m 199 481 l 419 481 q 569 451 508 481 q 662 366 630 420 q 693 243 693 312 q 675 148 693 193 q 623 71 658 104 q 537 19 588 37 q 419 0 486 0 l 107 0 l 107 734 l 233 734 l 233 103 l 419 103 q 506 123 473 103 q 553 174 538 142 q 567 239 567 205 q 553 304 567 272 q 506 357 538 336 q 419 378 473 378 l 199 378 l 199 481 m 954 734 l 954 0 l 829 0 l 829 734 l 954 734 z "},"ь":{"ha":754,"x_min":107,"x_max":693,"o":"m 199 481 l 419 481 q 569 451 508 481 q 662 366 630 420 q 693 243 693 312 q 675 148 693 193 q 623 71 658 104 q 537 19 588 37 q 419 0 486 0 l 107 0 l 107 734 l 233 734 l 233 103 l 419 103 q 506 123 473 103 q 553 174 538 142 q 567 239 567 205 q 553 304 567 272 q 506 357 538 336 q 419 378 473 378 l 199 378 l 199 481 z "},"э":{"ha":747,"x_min":68,"x_max":673,"o":"m 353 644 q 274 626 311 644 q 212 575 236 608 q 188 501 188 543 l 68 501 q 109 623 68 567 q 214 713 149 679 q 353 747 279 747 q 490 718 430 747 q 590 638 549 689 q 652 521 631 587 q 673 381 673 455 l 673 353 q 652 213 673 279 q 590 95 631 146 q 489 15 549 44 q 353 -14 430 -14 q 207 21 271 -14 q 105 116 142 56 q 68 252 68 176 l 188 252 q 210 169 188 206 q 269 111 232 132 q 353 89 307 89 q 441 112 404 89 q 502 173 478 135 q 537 258 526 211 q 548 353 548 305 l 548 381 q 537 476 548 429 q 502 561 526 523 q 442 622 479 599 q 353 644 405 644 m 609 425 l 609 323 l 271 323 l 271 425 l 609 425 z "},"ю":{"ha":1134,"x_min":107,"x_max":1074,"o":"m 513 422 l 513 320 l 123 320 l 123 422 l 513 422 m 233 734 l 233 0 l 107 0 l 107 734 l 233 734 m 406 359 l 406 374 q 429 522 406 454 q 496 641 452 590 q 601 719 540 691 q 739 747 663 747 q 879 719 817 747 q 984 641 941 691 q 1051 522 1028 590 q 1074 374 1074 454 l 1074 359 q 1051 212 1074 279 q 985 93 1028 144 q 880 15 941 43 q 741 -14 818 -14 q 602 15 663 -14 q 496 93 540 43 q 429 212 452 144 q 406 359 406 279 m 532 374 l 532 359 q 545 255 532 304 q 584 170 558 207 q 649 111 610 132 q 741 90 688 90 q 832 111 793 90 q 897 170 871 132 q 936 255 922 207 q 949 359 949 304 l 949 374 q 936 477 949 429 q 896 563 922 526 q 831 623 870 601 q 739 644 791 644 q 649 623 688 644 q 584 563 610 601 q 545 477 558 526 q 532 374 532 429 z "},"я":{"ha":762,"x_min":32,"x_max":656,"o":"m 244 350 l 380 350 l 168 0 l 32 0 l 244 350 m 349 734 l 656 734 l 656 0 l 530 0 l 530 632 l 349 632 q 262 614 296 632 q 212 568 228 596 q 197 509 197 539 q 211 451 197 479 q 256 406 225 424 q 334 389 286 389 l 564 389 l 564 286 l 334 286 q 222 302 271 286 q 140 350 174 319 q 88 421 106 380 q 71 510 71 462 q 89 599 71 558 q 143 670 108 640 q 231 717 179 701 q 349 734 283 734 z "},"ђ":{"ha":765,"x_min":-17,"x_max":673,"o":"m 547 308 l 673 308 l 673 -60 q 647 -189 673 -136 q 572 -269 621 -242 q 454 -296 523 -296 q 415 -294 433 -296 q 376 -285 397 -292 l 387 -184 q 420 -191 397 -189 q 454 -193 444 -193 q 504 -177 484 -193 q 536 -132 525 -161 q 547 -60 547 -102 l 547 308 m 221 1042 l 221 0 l 96 0 l 96 1042 l 221 1042 m 191 395 l 139 397 q 161 536 140 472 q 222 648 183 600 q 316 721 262 695 q 437 747 371 747 q 535 733 492 747 q 609 686 578 718 q 656 604 640 654 q 673 481 673 553 l 673 0 l 547 0 l 547 482 q 530 575 547 540 q 480 626 513 610 q 400 642 448 642 q 315 622 353 642 q 249 568 277 602 q 207 489 222 533 q 191 395 191 444 m 415 923 l 415 820 l -17 820 l -17 923 l 415 923 z "},"є":{"ha":747,"x_min":70,"x_max":688,"o":"m 471 418 l 471 315 l 96 315 l 96 418 l 471 418 m 397 90 q 479 108 441 90 q 542 158 517 126 q 570 232 566 191 l 688 232 q 645 111 685 167 q 539 21 604 55 q 397 -14 475 -14 q 252 16 314 -14 q 150 96 191 45 q 90 213 110 146 q 70 353 70 279 l 70 381 q 90 521 70 455 q 151 638 110 587 q 253 718 191 689 q 396 747 314 747 q 547 712 482 747 q 648 617 611 677 q 688 481 685 557 l 570 481 q 544 564 566 527 q 485 622 522 600 q 396 644 447 644 q 299 622 338 644 q 238 561 260 599 q 205 476 215 522 q 195 381 195 429 l 195 353 q 205 258 195 304 q 238 173 215 211 q 299 112 260 135 q 397 90 338 90 z "},"љ":{"ha":1178,"x_min":26,"x_max":1133,"o":"m 198 734 l 323 734 l 304 380 q 290 235 300 298 q 261 127 279 172 q 216 55 243 83 q 152 13 189 26 q 66 0 115 0 l 26 0 l 26 111 l 54 113 q 103 126 83 115 q 138 160 124 138 q 162 219 153 183 q 176 304 171 255 q 184 420 182 354 l 198 734 m 562 734 l 562 630 l 224 630 l 224 734 l 562 734 m 638 454 l 859 454 q 1009 425 948 454 q 1101 345 1070 396 q 1133 230 1133 294 q 1115 140 1133 182 q 1062 67 1097 98 q 977 18 1027 35 q 859 0 926 0 l 547 0 l 547 734 l 672 734 l 672 102 l 859 102 q 946 121 913 102 q 992 171 978 141 q 1006 231 1006 201 q 992 289 1006 261 q 946 334 978 317 q 859 352 913 352 l 638 352 l 638 454 z "},"њ":{"ha":1196,"x_min":106,"x_max":1156,"o":"m 593 456 l 593 355 l 205 355 l 205 456 l 593 456 m 232 734 l 232 0 l 106 0 l 106 734 l 232 734 m 661 454 l 882 454 q 1031 425 970 454 q 1124 345 1093 396 q 1156 230 1156 294 q 1138 140 1156 182 q 1085 67 1120 98 q 999 18 1050 35 q 882 0 948 0 l 569 0 l 569 734 l 695 734 l 695 102 l 882 102 q 968 121 936 102 q 1015 171 1000 141 q 1029 231 1029 201 q 1015 289 1029 261 q 968 334 1000 317 q 882 352 936 352 l 661 352 l 661 454 z "},"ћ":{"ha":787,"x_min":-2,"x_max":673,"o":"m 221 1042 l 221 0 l 96 0 l 96 1042 l 221 1042 m 191 395 l 139 397 q 161 536 140 472 q 222 648 183 600 q 316 721 262 695 q 437 747 371 747 q 535 733 492 747 q 609 686 578 718 q 656 604 640 654 q 673 481 673 553 l 673 0 l 547 0 l 547 482 q 530 575 547 540 q 480 626 513 610 q 400 642 448 642 q 315 622 353 642 q 249 568 277 602 q 207 489 222 533 q 191 395 191 444 m 430 926 l 430 823 l -2 823 l -2 926 l 430 926 z "},"џ":{"ha":802,"x_min":106,"x_max":696,"o":"m 340 103 l 466 103 l 466 -241 l 340 -241 l 340 103 m 106 734 l 232 734 l 232 103 l 570 103 l 570 734 l 696 734 l 696 0 l 106 0 l 106 734 z "},"Ѡ":{"ha":1221,"x_min":106,"x_max":1122,"o":"m 547 987 l 652 987 l 652 270 q 632 145 652 199 q 575 56 612 92 q 489 3 538 21 q 380 -14 439 -14 q 271 3 321 -14 q 184 56 221 21 q 126 145 147 92 q 106 270 106 199 l 106 987 l 237 987 l 237 270 q 248 192 237 225 q 278 136 258 159 q 323 103 297 114 q 380 92 349 92 q 466 112 429 92 q 525 171 504 132 q 547 270 547 210 l 547 987 m 991 987 l 1122 987 l 1122 270 q 1084 112 1122 175 q 983 17 1047 48 q 836 -14 918 -14 q 733 3 781 -14 q 650 56 685 21 q 595 145 615 92 q 576 270 576 199 l 576 987 l 682 987 l 682 270 q 693 192 682 225 q 725 136 705 159 q 774 103 746 114 q 836 92 803 92 q 916 112 881 92 q 971 171 951 132 q 991 270 991 210 l 991 987 z "},"ѡ":{"ha":1072,"x_min":87,"x_max":986,"o":"m 473 734 l 575 734 l 575 240 q 557 129 575 176 q 506 49 539 81 q 429 1 473 17 q 332 -14 385 -14 q 234 1 279 -14 q 157 49 190 17 q 106 129 124 81 q 87 240 87 176 l 87 734 l 214 734 l 214 240 q 222 174 214 202 q 247 126 231 145 q 284 98 263 108 q 332 89 306 89 q 404 105 372 89 q 455 156 436 122 q 473 240 473 189 l 473 734 m 861 734 l 986 734 l 986 240 q 953 98 986 155 q 862 14 920 42 q 730 -14 804 -14 q 638 1 680 -14 q 564 49 595 17 q 516 129 533 81 q 498 240 498 176 l 498 734 l 600 734 l 600 240 q 610 174 600 202 q 637 126 619 145 q 678 98 654 108 q 730 89 702 89 q 782 98 758 89 q 823 126 806 108 q 851 174 841 145 q 861 240 861 202 l 861 734 z "},"ѣ":{"ha":753,"x_min":-25,"x_max":692,"o":"m 197 506 l 418 506 q 568 473 507 506 q 661 385 629 441 q 692 256 692 328 q 661 126 692 184 q 568 34 629 68 q 418 0 507 0 l 106 0 l 106 1057 l 231 1057 l 231 103 l 418 103 q 505 124 472 103 q 551 180 537 146 q 566 251 566 214 q 551 322 566 287 q 505 380 537 357 q 418 404 472 404 l 197 404 l 197 506 m 450 837 l 450 734 l -25 734 l -25 837 l 450 837 z "},"Ѥ":{"ha":1245,"x_min":125,"x_max":1151,"o":"m 888 565 l 888 462 l 205 462 l 205 565 l 888 565 m 1020 315 l 1151 315 q 1097 147 1141 221 q 974 30 1053 73 q 776 -13 895 -13 q 618 20 689 -13 q 496 112 547 52 q 418 257 446 172 q 391 445 391 341 l 391 543 q 418 731 391 647 q 497 876 446 816 q 623 969 549 937 q 787 1002 696 1002 q 977 960 899 1002 q 1097 843 1054 918 q 1151 671 1141 769 l 1020 671 q 985 790 1010 741 q 911 867 959 840 q 787 895 864 895 q 672 869 722 895 q 589 798 623 844 q 538 688 555 752 q 522 545 522 623 l 522 445 q 531 334 522 387 q 561 237 541 281 q 611 161 581 193 q 682 111 641 129 q 776 94 724 94 q 909 120 859 94 q 984 196 958 146 q 1020 315 1009 245 m 256 987 l 256 0 l 125 0 l 125 987 l 256 987 z "},"ѥ":{"ha":1037,"x_min":104,"x_max":977,"o":"m 783 418 l 783 315 l 185 315 l 185 418 l 783 418 m 686 90 q 768 108 730 90 q 831 158 806 126 q 859 232 855 191 l 977 232 q 933 111 974 167 q 828 21 893 55 q 686 -14 764 -14 q 541 16 603 -14 q 439 96 479 45 q 379 213 399 146 q 359 353 359 279 l 359 381 q 379 521 359 455 q 439 638 399 587 q 542 718 480 689 q 686 747 603 747 q 836 712 772 747 q 937 617 900 677 q 977 481 974 557 l 859 481 q 833 564 855 527 q 773 622 811 600 q 686 644 736 644 q 589 622 627 644 q 527 561 550 599 q 495 476 505 522 q 485 381 485 429 l 485 353 q 494 258 485 304 q 527 173 504 211 q 588 112 549 135 q 686 90 627 90 m 230 734 l 230 0 l 104 0 l 104 734 l 230 734 z "},"Ѧ":{"ha":838,"x_min":27,"x_max":850,"o":"m 468 882 l 161 0 l 27 0 l 383 987 l 467 987 l 468 882 m 715 0 l 414 887 l 417 987 l 500 987 l 850 0 l 715 0 m 677 408 l 677 298 l 198 298 l 198 408 l 677 408 m 499 374 l 499 0 l 371 0 l 371 374 l 499 374 z "},"ѧ":{"ha":743,"x_min":10,"x_max":720,"o":"m 347 519 l 139 0 l 10 0 l 311 734 l 406 734 l 347 519 m 591 0 l 379 519 l 322 734 l 418 734 l 720 0 l 591 0 m 570 304 l 570 201 l 167 201 l 167 304 l 570 304 m 429 279 l 429 0 l 304 0 l 304 279 l 429 279 z "},"Ѩ":{"ha":1223,"x_min":137,"x_max":1208,"o":"m 583 408 l 583 299 l 212 299 l 212 408 l 583 408 m 827 882 l 520 0 l 386 0 l 742 987 l 825 987 l 827 882 m 1074 0 l 772 887 l 776 987 l 859 987 l 1208 0 l 1074 0 m 1036 408 l 1036 298 l 557 298 l 557 408 l 1036 408 m 858 374 l 858 0 l 730 0 l 730 374 l 858 374 m 268 987 l 268 0 l 137 0 l 137 987 l 268 987 z "},"ѩ":{"ha":1050,"x_min":128,"x_max":1023,"o":"m 504 304 l 504 201 l 186 201 l 186 304 l 504 304 m 650 519 l 442 0 l 313 0 l 614 734 l 709 734 l 650 519 m 895 0 l 682 519 l 625 734 l 722 734 l 1023 0 l 895 0 m 873 304 l 873 201 l 470 201 l 470 304 l 873 304 m 732 279 l 732 0 l 607 0 l 607 279 l 732 279 m 254 734 l 254 0 l 128 0 l 128 734 l 254 734 z "},"Ѫ":{"ha":1184,"x_min":100,"x_max":1085,"o":"m 231 0 l 100 0 l 100 251 q 139 426 100 360 q 252 521 178 492 q 429 550 326 550 l 755 550 q 933 521 859 550 q 1046 426 1006 492 q 1085 251 1085 360 l 1085 0 l 954 0 l 954 251 q 932 367 954 326 q 867 426 911 409 q 755 443 823 443 l 429 443 q 280 403 329 443 q 231 251 231 363 l 231 0 m 871 987 l 871 880 l 329 880 l 329 987 l 871 987 m 554 467 l 857 987 l 1005 987 l 657 414 l 574 414 l 554 467 m 338 987 l 643 462 l 620 414 l 538 414 l 189 987 l 338 987 m 660 530 l 660 0 l 530 0 l 530 530 l 660 530 z "},"ѫ":{"ha":1021,"x_min":102,"x_max":919,"o":"m 228 0 l 102 0 l 102 111 q 138 286 102 220 q 242 380 174 351 q 404 410 310 410 l 617 410 q 779 380 711 410 q 883 286 846 351 q 919 111 919 220 l 919 0 l 793 0 l 793 111 q 774 230 793 188 q 716 290 755 273 q 617 307 677 307 l 404 307 q 306 290 345 307 q 247 230 267 273 q 228 111 228 188 l 228 0 m 760 734 l 760 631 l 292 631 l 292 734 l 760 734 m 478 339 l 699 734 l 840 734 l 572 287 l 496 287 l 478 339 m 331 734 l 554 336 l 534 287 l 458 287 l 190 734 l 331 734 m 576 394 l 576 0 l 450 0 l 450 394 l 576 394 z "},"Ѭ":{"ha":1566,"x_min":124,"x_max":1466,"o":"m 857 551 l 857 448 l 238 448 l 238 551 l 857 551 m 255 987 l 255 0 l 124 0 l 124 987 l 255 987 m 612 0 l 481 0 l 481 251 q 521 426 481 360 q 634 521 560 492 q 810 550 707 550 l 1137 550 q 1315 521 1241 550 q 1427 426 1388 492 q 1466 251 1466 360 l 1466 0 l 1336 0 l 1336 251 q 1314 367 1336 326 q 1249 426 1293 409 q 1137 443 1204 443 l 810 443 q 662 403 711 443 q 612 251 612 363 l 612 0 m 1253 987 l 1253 880 l 711 880 l 711 987 l 1253 987 m 936 467 l 1238 987 l 1387 987 l 1038 414 l 956 414 l 936 467 m 720 987 l 1025 462 l 1002 414 l 920 414 l 571 987 l 720 987 m 1042 530 l 1042 0 l 911 0 l 911 530 l 1042 530 z "},"ѭ":{"ha":1357,"x_min":106,"x_max":1255,"o":"m 846 410 l 846 307 l 172 307 l 172 410 l 846 410 m 231 734 l 231 0 l 106 0 l 106 734 l 231 734 m 564 0 l 439 0 l 439 111 q 475 286 439 220 q 578 380 511 351 q 741 410 646 410 l 954 410 q 1115 380 1048 410 q 1219 286 1183 351 q 1255 111 1255 220 l 1255 0 l 1130 0 l 1130 111 q 1111 230 1130 188 q 1052 290 1091 273 q 954 307 1013 307 l 741 307 q 642 290 681 307 q 584 230 603 273 q 564 111 564 188 l 564 0 m 1096 734 l 1096 631 l 628 631 l 628 734 l 1096 734 m 814 339 l 1035 734 l 1176 734 l 908 287 l 832 287 l 814 339 m 667 734 l 890 336 l 871 287 l 795 287 l 526 734 l 667 734 m 912 394 l 912 0 l 787 0 l 787 394 l 912 394 z "},"Ѯ":{"ha":719,"x_min":54,"x_max":636,"o":"m 90 987 l 297 987 q 427 969 368 987 q 530 917 486 951 q 597 833 573 882 q 621 721 621 783 q 597 626 621 670 q 530 550 574 583 q 424 498 486 517 q 286 480 362 480 l 188 480 l 188 558 l 283 558 q 406 579 359 558 q 474 637 452 600 q 495 724 495 675 q 474 804 495 768 q 409 863 453 841 q 297 884 366 884 l 90 884 l 90 987 m 188 532 l 286 532 q 435 515 370 532 q 545 465 500 498 q 613 385 590 433 q 636 275 636 337 q 612 153 636 206 q 544 62 587 99 q 440 6 500 25 q 311 -13 381 -13 l 275 -13 q 197 -34 220 -13 q 174 -90 174 -56 q 193 -150 174 -125 q 237 -191 212 -175 q 283 -216 263 -206 l 233 -300 q 151 -252 191 -282 q 82 -180 110 -222 q 54 -83 55 -138 q 82 15 54 -24 q 160 71 109 53 q 280 90 210 90 l 311 90 q 395 103 357 90 q 458 141 432 117 q 497 200 484 166 q 511 273 511 233 q 496 353 511 319 q 452 410 481 387 q 381 445 423 433 q 283 456 338 456 l 188 456 l 188 532 m 267 1306 l 369 1191 l 471 1306 l 580 1306 l 580 1299 l 408 1114 l 330 1114 l 160 1299 l 160 1306 l 267 1306 z "},"ѯ":{"ha":669,"x_min":52,"x_max":602,"o":"m 87 734 l 292 734 q 409 720 355 734 q 503 678 463 705 q 565 612 543 651 q 587 524 587 573 q 565 452 587 485 q 503 393 543 418 q 406 354 463 368 q 281 340 350 340 l 182 340 l 182 418 l 278 418 q 384 432 343 418 q 442 470 424 446 q 460 527 460 494 q 450 567 460 549 q 419 600 440 586 q 367 622 399 614 q 292 630 335 630 l 87 630 l 87 734 m 182 392 l 281 392 q 417 380 357 392 q 518 344 477 368 q 580 286 559 320 q 602 206 602 251 q 579 114 602 155 q 517 45 557 73 q 423 2 477 16 q 305 -13 369 -13 l 272 -13 q 194 -34 217 -13 q 171 -90 171 -56 q 190 -150 171 -125 q 235 -191 209 -175 q 281 -216 260 -206 l 230 -300 q 148 -252 189 -282 q 80 -180 107 -222 q 52 -83 52 -138 q 79 15 52 -24 q 157 71 106 53 q 277 90 208 90 l 305 90 q 377 98 345 90 q 430 122 408 106 q 464 158 452 137 q 475 203 475 178 q 463 253 475 232 q 425 288 450 274 q 363 309 399 302 q 278 316 326 316 l 182 316 l 182 392 m 212 1075 l 314 960 l 416 1075 l 525 1075 l 525 1067 l 353 882 l 275 882 l 105 1068 l 105 1075 l 212 1075 z "},"Ѳ":{"ha":945,"x_min":70,"x_max":864,"o":"m 467 1001 q 600 980 538 1001 q 710 919 662 959 q 793 820 759 878 q 846 688 828 762 q 864 525 864 614 l 864 463 q 836 263 864 351 q 756 113 808 175 q 631 19 704 52 q 468 -14 558 -14 q 337 7 398 -14 q 227 69 276 28 q 142 167 178 109 q 89 299 107 225 q 70 463 70 374 l 70 525 q 99 724 70 636 q 180 874 127 812 q 306 968 233 936 q 467 1001 379 1001 m 467 890 q 366 870 412 890 q 285 812 319 850 q 229 716 251 773 q 201 586 208 660 q 200 563 201 575 q 199 539 199 551 l 734 539 q 734 562 734 551 q 732 585 734 574 q 706 716 726 659 q 651 811 686 772 q 571 870 617 850 q 467 890 524 890 m 468 97 q 573 117 526 97 q 653 176 620 137 q 707 274 687 216 q 732 407 727 332 q 733 421 733 414 q 734 436 734 429 l 200 436 q 201 415 201 425 q 203 395 202 405 q 231 267 210 323 q 288 174 253 212 q 368 116 322 136 q 468 97 414 97 z "},"ѳ":{"ha":789,"x_min":62,"x_max":730,"o":"m 395 747 q 535 719 473 747 q 640 641 597 691 q 707 522 684 590 q 730 374 730 454 l 730 359 q 707 212 730 279 q 640 93 684 144 q 535 15 597 43 q 397 -14 474 -14 q 258 15 319 -14 q 152 93 196 43 q 85 212 109 144 q 62 359 62 279 l 62 374 q 85 522 62 454 q 152 641 109 590 q 257 719 195 691 q 395 747 319 747 m 395 644 q 313 627 349 644 q 252 579 277 610 q 211 508 227 549 q 191 422 196 468 l 602 422 q 581 508 597 468 q 540 579 566 549 q 478 627 514 610 q 395 644 441 644 m 397 90 q 480 107 444 90 q 542 156 516 125 q 583 230 568 188 q 602 319 598 271 l 190 319 q 209 230 194 271 q 250 156 224 188 q 313 107 276 125 q 397 90 349 90 z "},"Ѵ":{"ha":876,"x_min":15,"x_max":844,"o":"m 439 254 l 614 802 q 663 917 636 873 q 727 980 690 960 q 813 1000 763 1000 l 844 1000 l 844 884 l 836 884 q 795 875 812 884 q 764 845 778 866 q 736 787 750 824 l 473 0 l 372 0 l 439 254 m 157 987 l 393 254 l 459 0 l 358 0 l 15 987 l 157 987 z "},"ѵ":{"ha":697,"x_min":32,"x_max":703,"o":"m 355 214 l 462 583 q 507 678 481 642 q 565 731 533 714 q 630 747 596 747 q 668 745 650 747 q 703 730 686 742 l 688 630 q 677 634 685 632 q 659 635 669 635 q 632 628 646 635 q 606 607 618 621 q 587 573 595 593 l 385 0 l 302 0 l 355 214 m 160 734 l 323 214 l 373 0 l 290 0 l 32 734 l 160 734 z "},"Ѻ":{"ha":945,"x_min":70,"x_max":864,"o":"m 536 1078 l 536 816 l 410 816 l 410 1078 l 536 1078 m 536 172 l 536 -96 l 410 -96 l 410 172 l 536 172 m 864 525 l 864 463 q 836 263 864 351 q 756 113 808 175 q 631 19 704 52 q 468 -14 558 -14 q 337 7 398 -14 q 227 69 276 28 q 142 167 178 109 q 89 299 107 225 q 70 463 70 374 l 70 525 q 99 724 70 636 q 180 874 127 812 q 306 968 233 936 q 467 1001 379 1001 q 600 980 538 1001 q 710 919 662 959 q 793 820 759 878 q 846 688 828 762 q 864 525 864 614 m 734 463 l 734 526 q 723 654 734 597 q 689 755 711 711 q 634 829 667 800 q 559 874 602 859 q 467 890 517 890 q 357 866 406 890 q 273 796 308 842 q 218 682 237 750 q 199 526 199 614 l 199 463 q 212 334 199 391 q 247 232 224 276 q 303 157 271 187 q 378 112 336 127 q 468 97 420 97 q 581 121 532 97 q 665 191 631 144 q 717 306 699 237 q 734 463 734 374 z "},"ѻ":{"ha":787,"x_min":62,"x_max":730,"o":"m 457 818 l 457 568 l 331 568 l 331 818 l 457 818 m 457 168 l 457 -81 l 331 -81 l 331 168 l 457 168 m 62 359 l 62 374 q 85 522 62 454 q 152 641 109 590 q 257 719 195 691 q 395 747 319 747 q 535 719 473 747 q 640 641 597 691 q 707 522 684 590 q 730 374 730 454 l 730 359 q 707 212 730 279 q 640 93 684 144 q 535 15 597 43 q 397 -14 474 -14 q 258 15 319 -14 q 152 93 196 43 q 85 212 109 144 q 62 359 62 279 m 188 374 l 188 359 q 201 255 188 304 q 240 170 214 207 q 305 111 266 132 q 397 90 345 90 q 487 111 448 90 q 552 170 526 132 q 591 255 578 207 q 604 359 604 304 l 604 374 q 591 477 604 429 q 552 563 578 526 q 487 623 526 601 q 395 644 448 644 q 305 623 344 644 q 240 563 266 601 q 201 477 214 526 q 188 374 188 429 z "},"Ѽ":{"ha":1216,"x_min":106,"x_max":1117,"o":"m 886 1185 l 913 1185 l 913 1099 l 885 1099 q 780 1112 826 1099 q 697 1142 734 1125 q 628 1171 660 1158 q 566 1184 596 1184 q 510 1166 531 1184 q 489 1111 489 1148 l 489 1099 l 402 1099 l 402 1123 q 445 1234 402 1198 q 563 1271 488 1271 q 640 1258 604 1271 q 712 1228 675 1245 q 790 1198 748 1211 q 886 1185 833 1185 m 589 898 l 537 935 q 571 986 559 962 q 583 1037 583 1010 l 583 1101 l 690 1101 l 690 1032 q 674 980 690 1006 q 634 932 658 954 q 589 898 610 910 m 380 987 l 380 880 q 307 858 339 880 q 256 792 275 836 q 237 680 237 747 l 237 293 q 248 204 237 242 q 278 142 258 167 q 323 104 297 117 q 380 92 349 92 q 466 112 429 92 q 525 171 504 132 q 547 270 547 210 l 547 560 l 652 560 l 652 270 q 632 145 652 199 q 575 56 612 92 q 489 3 538 21 q 380 -14 439 -14 q 271 5 321 -14 q 184 62 221 24 q 126 158 147 100 q 106 293 106 216 l 106 680 q 142 851 106 783 q 240 953 178 919 q 380 987 302 987 m 843 880 l 843 987 q 952 968 902 987 q 1039 910 1002 949 q 1097 814 1076 872 q 1117 680 1117 757 l 1117 293 q 1097 158 1117 216 q 1039 62 1076 100 q 952 5 1002 24 q 843 -14 902 -14 q 735 3 785 -14 q 649 56 686 21 q 592 145 612 92 q 572 270 572 199 l 572 560 l 677 560 l 677 270 q 690 192 677 225 q 724 136 702 159 q 777 103 747 114 q 843 92 807 92 q 900 104 874 92 q 946 142 926 117 q 976 204 965 167 q 987 293 987 242 l 987 680 q 976 768 987 730 q 946 831 965 806 q 900 868 926 856 q 843 880 874 880 z "},"ѽ":{"ha":1066,"x_min":85,"x_max":983,"o":"m 827 946 l 855 946 l 855 860 l 825 860 q 720 873 766 860 q 637 903 674 886 q 569 932 600 920 q 507 945 537 945 q 451 927 472 945 q 429 871 429 909 l 429 859 l 342 859 l 342 884 q 386 995 342 958 q 504 1031 429 1031 q 580 1019 545 1031 q 652 989 616 1006 q 731 959 688 972 q 827 946 773 946 m 528 652 l 477 690 q 512 741 500 717 q 524 791 524 766 l 524 856 l 630 856 l 630 787 q 614 734 630 761 q 574 686 597 708 q 528 652 551 665 m 330 741 l 330 638 q 269 619 296 638 q 227 561 242 600 q 212 462 212 522 l 212 265 q 220 187 212 220 q 245 132 229 154 q 282 100 261 111 q 330 89 304 89 q 386 98 360 89 q 431 126 412 108 q 461 174 450 145 q 472 240 472 202 l 472 399 l 573 399 l 573 240 q 555 129 573 176 q 504 49 537 81 q 427 1 471 17 q 330 -14 382 -14 q 232 3 277 -14 q 155 55 188 20 q 104 143 122 90 q 85 265 85 195 l 85 462 q 117 617 85 555 q 204 710 149 680 q 330 741 259 741 m 739 638 l 739 741 q 837 723 792 741 q 915 671 882 706 q 965 585 947 637 q 983 462 983 532 l 983 265 q 965 143 983 195 q 915 55 947 90 q 837 3 882 20 q 739 -14 792 -14 q 643 1 687 -14 q 565 49 598 17 q 514 129 532 81 q 496 240 496 176 l 496 399 l 597 399 l 597 240 q 608 174 597 202 q 638 126 619 145 q 683 98 657 108 q 739 89 709 89 q 787 100 765 89 q 824 132 808 111 q 849 187 840 154 q 858 265 858 220 l 858 462 q 849 540 858 507 q 824 595 840 573 q 787 627 808 616 q 739 638 765 638 z "},"Ѿ":{"ha":1221,"x_min":106,"x_max":1122,"o":"m 554 1145 l 342 1145 l 342 1218 l 892 1218 l 892 1145 l 668 1145 l 668 1060 l 554 1060 l 554 1145 m 547 987 l 652 987 l 652 270 q 632 145 652 199 q 575 56 612 92 q 489 3 538 21 q 380 -14 439 -14 q 271 3 321 -14 q 184 56 221 21 q 126 145 147 92 q 106 270 106 199 l 106 987 l 237 987 l 237 270 q 248 192 237 225 q 278 136 258 159 q 323 103 297 114 q 380 92 349 92 q 466 112 429 92 q 525 171 504 132 q 547 270 547 210 l 547 987 m 991 987 l 1122 987 l 1122 270 q 1084 112 1122 175 q 983 17 1047 48 q 836 -14 918 -14 q 733 3 781 -14 q 650 56 685 21 q 595 145 615 92 q 576 270 576 199 l 576 987 l 682 987 l 682 270 q 693 192 682 225 q 725 136 705 159 q 774 103 746 114 q 836 92 803 92 q 916 112 881 92 q 971 171 951 132 q 991 270 991 210 l 991 987 z "},"ѿ":{"ha":1072,"x_min":87,"x_max":986,"o":"m 478 915 l 266 915 l 266 988 l 816 988 l 818 915 l 592 915 l 592 829 l 478 829 l 478 915 m 473 734 l 575 734 l 575 240 q 557 129 575 176 q 506 49 539 81 q 429 1 473 17 q 332 -14 385 -14 q 234 1 279 -14 q 157 49 190 17 q 106 129 124 81 q 87 240 87 176 l 87 734 l 214 734 l 214 240 q 222 174 214 202 q 247 126 231 145 q 284 98 263 108 q 332 89 306 89 q 404 105 372 89 q 455 156 436 122 q 473 240 473 189 l 473 734 m 861 734 l 986 734 l 986 240 q 953 98 986 155 q 862 14 920 42 q 730 -14 804 -14 q 638 1 680 -14 q 564 49 595 17 q 516 129 533 81 q 498 240 498 176 l 498 734 l 600 734 l 600 240 q 610 174 600 202 q 637 126 619 145 q 678 98 654 108 q 730 89 702 89 q 782 98 758 89 q 823 126 806 108 q 851 174 841 145 q 861 240 861 202 l 861 734 z "},"Ҁ":{"ha":902,"x_min":80,"x_max":822,"o":"m 457 92 l 457 -14 q 332 6 390 -14 q 228 64 274 26 q 148 155 181 102 q 98 271 115 207 q 80 409 80 336 l 80 578 q 107 747 80 670 q 185 881 134 824 q 305 970 235 939 q 458 1002 374 1002 q 651 962 570 1002 q 777 847 732 922 q 822 671 821 773 l 692 671 q 664 790 691 741 q 585 867 637 840 q 458 895 534 895 q 355 870 401 895 q 277 803 309 846 q 228 703 245 760 q 211 580 211 646 l 211 409 q 222 309 211 356 q 253 221 233 261 q 304 153 274 182 q 372 108 334 124 q 457 92 411 92 m 535 92 l 535 -258 l 405 -258 l 405 92 l 535 92 z "},"ҁ":{"ha":743,"x_min":68,"x_max":673,"o":"m 389 89 l 389 -14 q 252 15 312 -14 q 152 95 193 44 q 89 213 111 146 q 68 353 68 279 l 68 381 q 89 521 68 455 q 152 638 111 587 q 252 718 193 689 q 389 747 312 747 q 535 712 471 747 q 636 617 600 677 q 673 481 673 557 l 555 481 q 533 564 555 527 q 473 623 511 601 q 389 644 435 644 q 300 622 337 644 q 240 561 263 599 q 205 476 216 522 q 194 381 194 429 l 194 353 q 205 257 194 304 q 239 172 216 210 q 300 112 262 134 q 389 89 337 89 m 458 89 l 458 -259 l 332 -259 l 332 89 l 458 89 z "},"҂":{"ha":867,"x_min":79,"x_max":793,"o":"m 548 550 l 408 303 l 604 186 l 557 102 l 359 218 l 236 0 l 122 0 l 275 270 l 79 386 l 125 469 l 323 353 l 463 601 l 266 717 l 313 802 l 511 686 l 638 910 l 750 910 l 594 634 l 793 518 l 743 435 l 548 550 z "},"҃":{"ha":0,"x_min":-625,"x_max":-147,"o":"m -147 892 l -513 892 l -513 807 l -625 808 l -625 966 l -258 966 l -259 1039 l -147 1038 l -147 892 z "},"҄":{"ha":0,"x_min":-618,"x_max":-106,"o":"m -618 970 l -590 970 q -494 983 -536 970 q -415 1013 -452 996 q -343 1043 -379 1030 q -267 1056 -308 1056 q -149 1019 -192 1056 q -106 908 -106 983 l -106 884 l -193 884 l -193 896 q -214 951 -193 934 q -270 969 -235 969 q -332 956 -300 969 q -400 927 -363 943 q -484 897 -437 910 q -589 884 -530 884 l -618 884 l -618 970 z "},"҅":{"ha":0,"x_min":-452,"x_max":-290,"o":"m -343 884 l -452 1017 l -452 1101 l -330 1101 l -331 1006 l -290 928 l -343 884 z "},"҆":{"ha":0,"x_min":-410,"x_max":-248,"o":"m -248 1017 l -358 884 l -410 928 l -370 1006 l -371 1101 l -248 1101 l -248 1017 z "},"҈":{"ha":0,"x_min":-1024,"x_max":297,"o":"m -439 859 l -516 859 q -478 951 -516 916 q -374 987 -439 987 q -269 951 -307 987 q -231 859 -231 916 l -307 859 q -322 907 -307 886 q -374 928 -337 928 q -425 907 -410 928 q -439 859 -439 886 m -38 671 l -115 671 q -77 763 -115 728 q 27 799 -39 799 q 132 763 94 799 q 171 671 171 728 l 94 671 q 79 719 94 699 q 27 740 64 740 q -23 719 -8 740 q -38 671 -38 699 m 88 330 l 12 330 q 50 422 12 387 q 154 458 88 458 q 259 422 220 458 q 297 330 297 387 l 221 330 q 206 378 221 357 q 154 399 191 399 q 103 378 119 399 q 88 330 88 357 m -45 -22 l -122 -22 q -84 70 -122 35 q 20 106 -45 106 q 125 70 87 106 q 163 -22 163 35 l 87 -22 q 73 26 87 5 q 20 47 58 47 q -30 26 -15 47 q -45 -22 -45 5 m -436 -214 l -513 -214 q -474 -122 -513 -158 q -370 -87 -436 -87 q -266 -122 -304 -87 q -227 -214 -227 -158 l -303 -214 q -318 -166 -303 -187 q -370 -146 -334 -146 q -421 -166 -406 -146 q -436 -214 -436 -187 m -827 671 l -905 671 q -866 763 -905 728 q -762 799 -827 799 q -657 763 -695 799 q -618 671 -618 728 l -694 671 q -710 719 -694 699 q -762 740 -725 740 q -812 719 -798 740 q -827 671 -827 699 m -947 330 l -1024 330 q -986 422 -1024 387 q -882 458 -947 458 q -777 422 -815 458 q -739 330 -739 387 l -814 330 q -829 378 -814 357 q -882 399 -844 399 q -932 378 -917 399 q -947 330 -947 357 m -834 -22 l -911 -22 q -873 70 -911 35 q -769 106 -835 106 q -664 70 -703 106 q -625 -22 -625 35 l -702 -22 q -717 26 -702 5 q -769 47 -732 47 q -819 26 -804 47 q -834 -22 -834 5 z "},"҉":{"ha":0,"x_min":-1013,"x_max":246,"o":"m -409 -41 l -316 -41 l -309 -50 l -391 -280 l -456 -280 l -409 -41 m -356 764 l -448 764 l -456 773 l -374 1002 l -309 1002 l -356 764 m 12 334 l 12 428 l 20 436 l 246 352 l 246 286 l 12 334 m -778 388 l -778 294 l -787 286 l -1013 370 l -1013 436 l -778 388 m -85 612 l -151 680 l -150 690 l 68 794 l 114 748 l -85 612 m -681 81 l -615 14 l -616 3 l -833 -101 l -880 -54 l -681 81 m -644 650 l -710 583 l -722 585 l -822 806 l -778 852 l -644 650 m -123 42 l -58 109 l -46 108 l 55 -113 l 10 -161 l -123 42 z "},"Ҋ":{"ha":1048,"x_min":121,"x_max":990,"o":"m 251 227 l 737 987 l 868 987 l 868 0 l 737 0 l 737 762 l 251 0 l 121 0 l 121 987 l 251 987 l 251 227 m 599 1232 l 701 1232 q 676 1138 701 1179 q 606 1074 652 1097 q 498 1051 561 1051 q 350 1102 404 1051 q 295 1232 295 1152 l 397 1232 q 420 1162 397 1192 q 498 1131 443 1131 q 576 1162 553 1131 q 599 1232 599 1192 m 990 103 l 990 2 q 959 -129 990 -60 q 871 -243 928 -197 l 800 -194 q 837 -133 822 -164 q 860 -70 852 -102 q 867 0 867 -37 l 867 103 l 990 103 z "},"ҋ":{"ha":855,"x_min":106,"x_max":819,"o":"m 231 199 l 570 734 l 696 734 l 696 0 l 570 0 l 570 535 l 231 0 l 106 0 l 106 734 l 231 734 l 231 199 m 501 1000 l 603 1000 q 578 906 603 947 q 509 842 554 865 q 401 819 463 819 q 252 869 307 819 q 197 1000 197 920 l 299 1000 q 322 929 299 960 q 401 899 345 899 q 478 929 455 899 q 501 1000 501 960 m 819 103 l 819 2 q 787 -129 819 -60 q 700 -243 756 -197 l 629 -194 q 665 -133 650 -164 q 688 -70 680 -102 q 696 0 696 -37 l 696 103 l 819 103 z "},"ҍ":{"ha":753,"x_min":-25,"x_max":692,"o":"m 197 506 l 418 506 q 568 473 507 506 q 661 385 629 441 q 692 256 692 328 q 661 126 692 184 q 568 34 629 68 q 418 0 507 0 l 106 0 l 106 1119 l 231 1119 l 231 103 l 418 103 q 505 124 472 103 q 551 180 537 146 q 566 251 566 214 q 551 322 566 287 q 505 380 537 357 q 418 404 472 404 l 197 404 l 197 506 m 450 987 l 450 884 l -25 884 l -25 987 l 450 987 z "},"Ҏ":{"ha":886,"x_min":115,"x_max":841,"o":"m 591 665 l 841 390 l 766 321 l 517 595 l 591 665 m 479 387 l 215 387 l 215 494 l 479 494 q 603 518 555 494 q 672 586 650 543 q 694 685 694 629 q 672 781 694 736 q 603 853 650 825 q 479 880 555 880 l 245 880 l 245 0 l 115 0 l 115 987 l 479 987 q 668 949 591 987 q 785 842 745 910 q 825 686 825 774 q 785 524 825 591 q 668 422 745 457 q 479 387 591 387 z "},"ҏ":{"ha":788,"x_min":95,"x_max":718,"o":"m 494 264 l 718 10 l 644 -60 l 420 194 l 494 264 m 221 593 l 221 -282 l 95 -282 l 95 734 l 210 734 l 221 593 m 715 373 l 715 359 q 696 211 715 279 q 641 92 677 142 q 552 14 605 42 q 431 -14 499 -14 q 307 9 361 -14 q 216 77 254 33 q 157 182 179 121 q 127 321 135 244 l 127 397 q 157 543 135 479 q 217 653 180 608 q 307 723 254 699 q 429 747 359 747 q 551 721 498 747 q 642 644 605 694 q 697 526 678 595 q 715 373 715 457 m 589 359 l 589 373 q 578 476 589 428 q 542 562 566 525 q 481 620 518 599 q 392 642 444 642 q 310 625 345 642 q 250 582 275 609 q 211 519 226 554 q 188 447 195 484 l 188 271 q 214 203 198 235 q 254 145 230 170 q 312 104 278 119 q 393 90 347 90 q 481 111 444 90 q 542 170 518 132 q 578 255 566 207 q 589 359 589 304 z "},"Ґ":{"ha":762,"x_min":110,"x_max":719,"o":"m 719 1215 l 719 884 l 593 884 l 593 1215 l 719 1215 m 717 987 l 717 880 l 241 880 l 241 0 l 110 0 l 110 987 l 717 987 z "},"ґ":{"ha":619,"x_min":99,"x_max":566,"o":"m 566 949 l 566 630 l 440 630 l 440 949 l 566 949 m 564 734 l 564 630 l 224 630 l 224 0 l 99 0 l 99 734 l 564 734 z "},"Ҕ":{"ha":843,"x_min":121,"x_max":779,"o":"m 727 987 l 727 880 l 251 880 l 251 0 l 121 0 l 121 987 l 727 987 m 229 456 l 229 565 l 374 565 q 544 538 469 565 q 672 461 619 512 q 751 338 724 411 q 779 174 779 266 q 758 17 779 85 q 697 -100 738 -52 q 597 -172 657 -147 q 458 -197 537 -197 l 456 -97 q 549 -78 511 -97 q 610 -23 587 -58 q 643 63 633 13 q 653 174 653 113 q 635 295 652 242 q 583 383 617 347 q 496 437 548 419 q 374 456 444 456 l 229 456 z "},"ҕ":{"ha":699,"x_min":99,"x_max":650,"o":"m 124 328 l 124 438 l 303 438 q 482 400 404 438 q 605 290 560 361 q 650 115 650 218 q 636 31 650 78 q 591 -63 622 -17 q 511 -144 561 -109 q 389 -193 462 -179 l 356 -94 q 457 -46 420 -77 q 509 26 494 -16 q 524 115 525 68 q 496 232 524 184 q 418 304 467 279 q 303 328 368 328 l 124 328 m 564 734 l 564 630 l 224 630 l 224 0 l 99 0 l 99 734 l 564 734 z "},"Җ":{"ha":1325,"x_min":18,"x_max":1303,"o":"m 397 451 l 45 987 l 198 987 l 460 559 l 646 559 l 625 451 l 397 451 m 468 461 l 181 0 l 18 0 l 385 574 l 468 461 m 703 987 l 703 0 l 573 0 l 573 987 l 703 987 m 1226 987 l 872 451 l 651 451 l 631 559 l 810 559 l 1072 987 l 1226 987 m 1089 0 l 803 461 l 886 574 l 1252 0 l 1089 0 m 1303 104 l 1303 -243 l 1178 -243 l 1178 104 l 1303 104 z "},"җ":{"ha":1107,"x_min":15,"x_max":1083,"o":"m 318 319 l 40 734 l 191 734 l 381 430 l 528 430 l 509 319 l 318 319 m 387 332 l 174 0 l 15 0 l 307 423 l 387 332 m 592 734 l 592 0 l 467 0 l 467 734 l 592 734 m 1020 734 l 742 319 l 551 319 l 531 430 l 678 430 l 868 734 l 1020 734 m 886 0 l 672 332 l 753 423 l 1044 0 l 886 0 m 1083 104 l 1083 -243 l 958 -243 l 958 104 l 1083 104 z "},"Қ":{"ha":972,"x_min":121,"x_max":914,"o":"m 252 987 l 252 0 l 121 0 l 121 987 l 252 987 m 860 987 l 431 444 l 199 444 l 179 553 l 353 553 l 698 987 l 860 987 m 728 0 l 357 461 l 431 576 l 888 0 l 728 0 m 914 102 l 914 -245 l 789 -245 l 789 102 l 914 102 z "},"қ":{"ha":819,"x_min":106,"x_max":782,"o":"m 232 734 l 232 0 l 106 0 l 106 734 l 232 734 m 713 734 l 366 313 l 190 313 l 171 423 l 315 423 l 561 734 l 713 734 m 578 0 l 309 332 l 389 423 l 738 0 l 578 0 m 782 104 l 782 -243 l 656 -243 l 656 104 l 782 104 z "},"Ҝ":{"ha":875,"x_min":111,"x_max":867,"o":"m 111 987 l 241 987 l 241 0 l 111 0 l 111 987 m 312 727 l 413 727 l 413 279 l 312 279 l 312 727 m 684 987 l 838 987 l 522 444 l 189 444 l 170 553 l 465 553 l 684 987 m 458 461 l 535 574 l 867 0 l 704 0 l 458 461 z "},"ҝ":{"ha":780,"x_min":105,"x_max":781,"o":"m 105 734 l 231 734 l 231 0 l 105 0 l 105 734 m 299 568 l 400 568 l 400 181 l 299 181 l 299 568 m 604 734 l 756 734 l 479 313 l 189 313 l 170 423 l 429 423 l 604 734 m 422 332 l 503 423 l 781 0 l 622 0 l 422 332 z "},"Ҡ":{"ha":1137,"x_min":47,"x_max":1136,"o":"m 408 987 l 408 884 l 47 884 l 47 987 l 408 987 m 499 987 l 499 0 l 369 0 l 369 987 l 499 987 m 1108 987 l 679 444 l 447 444 l 427 553 l 601 553 l 945 987 l 1108 987 m 976 0 l 605 461 l 678 576 l 1136 0 l 976 0 z "},"ҡ":{"ha":958,"x_min":43,"x_max":953,"o":"m 387 734 l 387 631 l 43 631 l 43 734 l 387 734 m 448 734 l 448 0 l 321 0 l 321 734 l 448 734 m 928 734 l 581 313 l 405 313 l 386 423 l 530 423 l 776 734 l 928 734 m 793 0 l 524 332 l 604 423 l 953 0 l 793 0 z "},"Ң":{"ha":1041,"x_min":115,"x_max":983,"o":"m 760 563 l 760 456 l 225 456 l 225 563 l 760 563 m 245 987 l 245 0 l 115 0 l 115 987 l 245 987 m 873 987 l 873 0 l 743 0 l 743 987 l 873 987 m 983 104 l 983 -243 l 857 -243 l 857 104 l 983 104 z "},"ң":{"ha":842,"x_min":106,"x_max":804,"o":"m 593 416 l 593 314 l 205 314 l 205 416 l 593 416 m 232 734 l 232 0 l 106 0 l 106 734 l 232 734 m 695 734 l 695 0 l 569 0 l 569 734 l 695 734 m 804 104 l 804 -243 l 679 -243 l 679 104 l 804 104 z "},"Ҥ":{"ha":1356,"x_min":115,"x_max":1305,"o":"m 1305 987 l 1305 884 l 864 884 l 784 987 l 1305 987 m 759 563 l 759 456 l 225 456 l 225 563 l 759 563 m 245 987 l 245 0 l 115 0 l 115 987 l 245 987 m 873 987 l 873 0 l 743 0 l 743 987 l 873 987 z "},"ҥ":{"ha":990,"x_min":99,"x_max":940,"o":"m 940 734 l 940 630 l 624 630 l 624 734 l 940 734 m 587 416 l 587 314 l 198 314 l 198 416 l 587 416 m 224 734 l 224 0 l 99 0 l 99 734 l 224 734 m 688 734 l 688 0 l 562 0 l 562 734 l 688 734 z "},"Ҧ":{"ha":1422,"x_min":119,"x_max":1354,"o":"m 867 987 l 867 0 l 737 0 l 737 880 l 250 880 l 250 0 l 119 0 l 119 987 l 867 987 m 804 456 l 804 565 l 949 565 q 1120 538 1045 565 q 1247 461 1195 512 q 1327 338 1300 411 q 1354 174 1354 266 q 1334 17 1354 85 q 1273 -100 1314 -52 q 1173 -172 1233 -147 q 1034 -197 1113 -197 l 1032 -97 q 1125 -78 1087 -97 q 1185 -23 1162 -58 q 1219 63 1208 13 q 1229 174 1229 113 q 1211 295 1228 242 q 1158 383 1193 347 q 1072 437 1124 419 q 949 456 1019 456 l 804 456 z "},"ҧ":{"ha":1207,"x_min":99,"x_max":1161,"o":"m 616 328 l 616 438 l 802 438 q 987 400 906 438 q 1115 290 1068 361 q 1161 115 1161 218 q 1147 31 1161 78 q 1103 -63 1133 -17 q 1022 -144 1072 -109 q 901 -193 972 -179 l 867 -94 q 968 -46 931 -77 q 1020 26 1004 -16 q 1036 115 1036 68 q 1005 232 1036 184 q 923 304 975 279 q 802 328 870 328 l 616 328 m 577 734 l 577 630 l 206 630 l 206 734 l 577 734 m 224 734 l 224 0 l 99 0 l 99 734 l 224 734 m 688 734 l 688 0 l 562 0 l 562 734 l 688 734 z "},"Ҩ":{"ha":1030,"x_min":77,"x_max":979,"o":"m 979 90 l 979 -19 q 748 17 852 -19 q 568 119 644 53 q 453 275 493 184 q 412 474 412 366 l 412 628 q 432 775 412 707 q 489 893 452 842 q 577 971 526 943 q 690 1000 628 1000 q 805 972 753 1000 q 893 895 856 945 q 950 776 930 844 q 970 625 970 707 l 970 460 q 937 273 970 359 q 840 122 903 186 q 691 22 778 58 q 498 -14 604 -14 q 325 22 403 -14 q 192 122 248 58 q 106 272 136 186 q 77 458 77 358 l 77 574 q 99 743 77 665 q 163 879 121 821 q 261 969 204 937 q 389 1002 319 1002 l 389 890 q 313 867 347 890 q 257 800 280 843 q 221 700 233 758 q 209 576 209 643 l 209 458 q 229 315 209 380 q 287 200 249 249 q 377 124 324 151 q 498 96 431 96 q 643 124 579 96 q 750 201 706 152 q 817 317 793 251 q 840 460 840 383 l 840 629 q 829 734 840 687 q 800 817 819 782 q 753 870 781 852 q 690 889 726 889 q 628 870 656 889 q 582 815 601 850 q 553 733 563 780 q 543 630 543 686 l 543 473 q 571 317 543 387 q 655 196 600 246 q 792 118 711 145 q 979 90 873 90 z "},"ҩ":{"ha":838,"x_min":75,"x_max":801,"o":"m 801 98 l 801 -8 q 609 22 694 -8 q 463 106 523 52 q 370 232 402 160 q 338 389 338 304 l 338 458 q 353 575 338 522 q 395 667 368 628 q 463 727 423 706 q 553 749 503 749 q 642 726 602 749 q 710 661 682 703 q 753 564 739 620 q 768 444 768 509 l 768 373 q 743 220 768 291 q 669 97 717 150 q 555 15 621 44 q 408 -14 489 -14 q 272 16 334 -14 q 167 101 211 47 q 99 229 123 156 q 75 387 75 302 l 75 425 q 92 553 75 494 q 141 655 109 612 q 216 723 172 699 q 313 747 260 747 l 313 641 q 267 625 288 641 q 231 580 246 609 q 208 512 216 551 q 200 427 200 473 l 200 387 q 214 271 200 324 q 256 177 229 217 q 321 115 283 137 q 408 93 359 93 q 506 114 463 93 q 580 174 549 136 q 626 262 610 212 q 642 373 642 313 l 642 446 q 636 523 642 487 q 619 585 631 558 q 591 627 608 612 q 553 642 574 642 q 514 629 531 642 q 486 591 497 616 q 469 533 475 567 q 463 460 463 500 l 463 387 q 486 270 463 323 q 552 179 509 217 q 658 119 595 140 q 801 98 721 98 z "},"Ҳ":{"ha":884,"x_min":39,"x_max":863,"o":"m 199 987 l 437 609 l 674 987 l 827 987 l 515 498 l 834 0 l 680 0 l 437 386 l 193 0 l 39 0 l 359 498 l 47 987 l 199 987 m 863 104 l 863 -243 l 737 -243 l 737 104 l 863 104 z "},"ҳ":{"ha":723,"x_min":28,"x_max":699,"o":"m 180 734 l 341 467 l 504 734 l 651 734 l 411 372 l 659 0 l 513 0 l 344 275 l 174 0 l 28 0 l 275 372 l 36 734 l 180 734 m 699 104 l 699 -243 l 573 -243 l 573 104 l 699 104 z "},"Ҵ":{"ha":1246,"x_min":35,"x_max":1142,"o":"m 682 987 l 682 884 l 35 884 l 35 987 l 682 987 m 1142 110 l 1130 -238 l 1013 -238 l 1013 0 l 916 0 l 916 110 l 1142 110 m 290 0 l 290 987 l 421 987 l 421 106 l 908 106 l 908 987 l 1038 987 l 1038 0 l 290 0 z "},"ҵ":{"ha":931,"x_min":21,"x_max":884,"o":"m 501 734 l 501 631 l 21 631 l 21 734 l 501 734 m 207 0 l 207 734 l 333 734 l 333 103 l 671 103 l 671 734 l 796 734 l 796 0 l 207 0 m 884 103 l 871 -218 l 759 -218 l 759 0 l 663 0 l 663 103 l 884 103 z "},"Ҷ":{"ha":996,"x_min":102,"x_max":938,"o":"m 102 987 l 233 987 l 233 679 q 256 559 233 602 q 323 498 278 515 q 437 480 369 480 q 516 484 477 480 q 591 493 554 487 q 663 508 627 499 q 733 527 699 517 l 733 420 q 667 401 700 410 q 599 386 634 392 q 525 376 564 380 q 437 373 485 373 q 257 403 332 373 q 142 500 182 433 q 102 679 102 568 l 102 987 m 700 987 l 831 987 l 831 0 l 700 0 l 700 987 m 938 104 l 938 -243 l 812 -243 l 812 104 l 938 104 z "},"ҷ":{"ha":796,"x_min":71,"x_max":759,"o":"m 649 734 l 649 0 l 524 0 l 524 734 l 649 734 m 606 397 l 606 294 q 529 268 568 279 q 447 251 490 257 q 354 244 404 244 q 203 274 267 244 q 105 366 140 304 q 71 521 71 427 l 71 735 l 196 735 l 196 521 q 214 422 196 460 q 268 366 233 384 q 354 348 303 348 q 446 354 403 348 q 529 372 489 361 q 606 397 568 382 m 759 104 l 759 -243 l 633 -243 l 633 104 l 759 104 z "},"Ҹ":{"ha":944,"x_min":102,"x_max":831,"o":"m 536 691 l 536 216 l 435 216 l 435 691 l 536 691 m 102 987 l 233 987 l 233 679 q 256 559 233 602 q 323 498 278 515 q 437 480 369 480 q 516 484 477 480 q 591 493 554 487 q 663 508 627 499 q 733 527 699 517 l 733 420 q 667 401 700 410 q 599 386 634 392 q 525 376 564 380 q 437 373 485 373 q 257 403 332 373 q 142 500 182 433 q 102 679 102 568 l 102 987 m 700 987 l 831 987 l 831 0 l 700 0 l 700 987 z "},"ҹ":{"ha":767,"x_min":90,"x_max":668,"o":"m 438 539 l 438 155 l 337 155 l 337 539 l 438 539 m 668 734 l 668 0 l 543 0 l 543 734 l 668 734 m 625 397 l 625 294 q 548 268 587 279 q 466 251 509 257 q 373 244 423 244 q 222 274 286 244 q 124 366 159 304 q 90 521 90 427 l 90 735 l 215 735 l 215 521 q 233 422 215 460 q 287 366 252 384 q 373 348 322 348 q 465 354 422 348 q 548 372 508 361 q 625 397 587 382 z "},"Һ":{"ha":944,"x_min":93,"x_max":821,"o":"m 821 0 l 690 0 l 690 309 q 668 429 690 386 q 601 490 646 472 q 487 507 555 507 q 408 504 446 507 q 333 494 370 500 q 261 479 296 488 q 191 460 225 471 l 191 568 q 257 587 224 578 q 325 602 290 595 q 399 611 359 608 q 487 614 439 614 q 667 584 592 614 q 781 487 741 554 q 821 309 821 420 l 821 0 m 224 0 l 93 0 l 93 987 l 224 987 l 224 0 z "},"Ҽ":{"ha":1074,"x_min":43,"x_max":997,"o":"m 43 733 l 146 733 q 163 647 146 684 q 218 589 181 610 q 314 568 256 568 l 314 473 q 164 505 225 473 q 73 596 104 537 q 43 733 43 654 m 679 -16 q 500 16 578 -16 q 368 104 422 47 q 287 238 315 161 q 260 409 260 316 l 260 578 q 288 748 260 671 q 367 883 317 826 q 485 970 418 939 q 629 1000 551 1001 q 788 969 720 1000 q 904 878 857 937 q 974 736 950 819 q 997 549 997 652 l 997 473 l 339 473 l 339 567 l 866 567 l 866 589 q 853 707 866 652 q 813 804 841 762 q 740 868 785 845 q 629 892 694 892 q 527 867 572 892 q 452 800 483 843 q 406 700 422 756 q 390 578 390 643 l 390 409 q 406 286 390 343 q 457 185 422 229 q 547 117 492 142 q 679 92 602 92 q 819 111 763 92 q 913 149 876 130 l 945 52 q 895 25 929 41 q 808 -3 861 9 q 679 -16 754 -16 z "},"ҽ":{"ha":823,"x_min":-24,"x_max":762,"o":"m -24 581 l 77 581 q 111 475 77 515 q 218 435 144 435 l 218 343 q 85 372 139 343 q 4 454 31 401 q -24 581 -24 508 m 476 -14 q 337 13 399 -14 q 231 86 275 39 q 163 199 186 134 q 139 341 139 264 l 139 370 q 165 529 139 459 q 237 648 192 600 q 340 722 283 697 q 460 747 398 747 q 596 720 539 747 q 690 645 653 693 q 745 531 727 596 q 762 388 762 465 l 762 332 l 214 332 l 214 434 l 636 434 l 636 444 q 624 516 634 480 q 594 581 614 551 q 541 627 574 610 q 460 644 508 644 q 381 626 417 644 q 319 573 345 608 q 279 487 294 538 q 265 370 265 436 l 265 341 q 280 243 265 289 q 322 163 294 197 q 391 109 351 128 q 483 89 431 89 q 595 116 549 89 q 676 189 642 143 l 753 128 q 692 60 729 92 q 602 7 655 27 q 476 -14 549 -14 z "},"Ӄ":{"ha":875,"x_min":111,"x_max":833,"o":"m 241 987 l 241 0 l 111 0 l 111 987 l 241 987 m 833 987 l 389 448 l 189 448 l 170 564 l 332 564 l 680 987 l 833 987 m 277 448 l 277 562 l 426 562 q 596 535 521 562 q 724 459 671 509 q 803 335 776 408 q 831 170 831 262 q 810 15 831 83 q 749 -103 790 -54 q 648 -177 709 -151 q 507 -202 587 -202 l 505 -99 q 597 -79 560 -99 q 658 -24 635 -60 q 691 61 681 12 q 701 169 701 110 q 683 289 700 237 q 631 377 665 341 q 545 430 596 412 q 426 448 494 448 l 277 448 z "},"ӄ":{"ha":755,"x_min":105,"x_max":712,"o":"m 231 734 l 231 0 l 105 0 l 105 734 l 231 734 m 712 734 l 345 313 l 189 313 l 170 423 l 293 423 l 559 734 l 712 734 m 159 313 l 159 422 l 347 422 q 532 389 451 422 q 660 289 613 356 q 706 119 706 221 q 691 38 705 83 q 647 -52 677 -7 q 567 -129 617 -96 q 446 -176 517 -163 l 412 -77 q 513 -32 476 -61 q 565 35 549 -3 q 581 119 581 74 q 550 231 581 189 q 468 294 520 274 q 347 313 416 313 l 159 313 z "},"Ӆ":{"ha":1040,"x_min":33,"x_max":983,"o":"m 749 987 l 749 880 l 298 880 l 298 987 l 749 987 m 862 987 l 862 0 l 731 0 l 731 987 l 862 987 m 253 987 l 383 987 l 361 504 q 345 318 356 399 q 313 176 334 236 q 260 77 293 116 q 181 19 228 38 q 68 0 134 0 l 33 0 l 33 106 l 60 109 q 125 126 98 111 q 172 170 153 140 q 203 248 191 200 q 223 364 216 295 q 234 525 230 433 l 253 987 m 983 103 l 983 2 q 951 -129 983 -60 q 864 -243 920 -197 l 793 -194 q 829 -133 814 -164 q 852 -70 844 -102 q 860 0 860 -37 l 860 103 l 983 103 z "},"ӆ":{"ha":857,"x_min":30,"x_max":819,"o":"m 586 734 l 586 630 l 231 630 l 231 734 l 586 734 m 696 734 l 696 0 l 571 0 l 571 734 l 696 734 m 201 734 l 327 734 l 308 380 q 293 235 303 298 q 264 127 282 172 q 219 55 246 83 q 155 13 193 26 q 69 0 118 0 l 30 0 l 30 111 l 57 113 q 107 126 86 115 q 142 160 127 138 q 165 219 156 183 q 179 304 174 255 q 187 420 184 354 l 201 734 m 819 103 l 819 2 q 788 -129 819 -60 q 701 -243 757 -197 l 629 -194 q 666 -133 651 -164 q 689 -70 681 -102 q 696 0 696 -37 l 696 103 l 819 103 z "},"Ӈ":{"ha":989,"x_min":121,"x_max":867,"o":"m 121 987 l 252 987 l 252 542 l 736 542 l 736 987 l 867 987 l 867 -57 q 841 -188 867 -134 q 764 -269 814 -241 q 646 -296 715 -296 q 607 -294 625 -296 q 568 -285 589 -292 l 578 -180 q 611 -187 589 -184 q 644 -189 634 -189 q 694 -173 673 -189 q 726 -128 715 -157 q 736 -57 736 -98 l 736 435 l 252 435 l 252 0 l 121 0 l 121 987 z "},"ӈ":{"ha":787,"x_min":99,"x_max":688,"o":"m 99 734 l 224 734 l 224 416 l 562 416 l 562 734 l 688 734 l 688 -60 q 662 -189 688 -136 q 586 -269 635 -242 q 469 -296 537 -296 q 430 -294 448 -296 q 393 -285 412 -292 l 403 -184 q 436 -191 413 -189 q 469 -193 460 -193 q 519 -177 498 -193 q 551 -132 540 -161 q 562 -60 562 -102 l 562 314 l 224 314 l 224 0 l 99 0 l 99 734 z "},"Ӊ":{"ha":1054,"x_min":115,"x_max":996,"o":"m 760 563 l 760 456 l 225 456 l 225 563 l 760 563 m 245 987 l 245 0 l 115 0 l 115 987 l 245 987 m 873 987 l 873 0 l 743 0 l 743 987 l 873 987 m 996 103 l 996 2 q 965 -129 996 -60 q 878 -243 934 -197 l 806 -194 q 843 -133 828 -164 q 866 -70 858 -102 q 873 0 873 -37 l 873 103 l 996 103 z "},"ӊ":{"ha":854,"x_min":106,"x_max":818,"o":"m 593 416 l 593 314 l 205 314 l 205 416 l 593 416 m 232 734 l 232 0 l 106 0 l 106 734 l 232 734 m 695 734 l 695 0 l 569 0 l 569 734 l 695 734 m 818 103 l 818 2 q 787 -129 818 -60 q 699 -243 755 -197 l 628 -194 q 665 -133 650 -164 q 687 -70 680 -102 q 695 0 695 -37 l 695 103 l 818 103 z "},"Ӎ":{"ha":1269,"x_min":115,"x_max":1211,"o":"m 156 987 l 283 987 l 606 182 l 929 987 l 1057 987 l 655 0 l 556 0 l 156 987 m 115 987 l 227 987 l 245 385 l 245 0 l 115 0 l 115 987 m 985 987 l 1097 987 l 1097 0 l 967 0 l 967 385 l 985 987 m 1211 103 l 1211 2 q 1180 -129 1211 -60 q 1093 -243 1149 -197 l 1021 -194 q 1058 -133 1043 -164 q 1081 -70 1073 -102 q 1088 0 1088 -37 l 1088 103 l 1211 103 z "},"ӎ":{"ha":1084,"x_min":107,"x_max":1047,"o":"m 517 167 l 767 734 l 888 734 l 561 0 l 474 0 l 149 734 l 269 734 l 517 167 m 233 734 l 233 0 l 107 0 l 107 734 l 233 734 m 798 0 l 798 734 l 924 734 l 924 0 l 798 0 m 1047 103 l 1047 2 q 1016 -129 1047 -60 q 928 -243 985 -197 l 857 -194 q 894 -133 879 -164 q 917 -70 909 -102 q 924 0 924 -37 l 924 103 l 1047 103 z "},"Ә":{"ha":960,"x_min":64,"x_max":880,"o":"m 435 1001 q 626 966 543 1001 q 765 868 709 931 q 851 717 822 804 q 880 525 880 630 l 880 461 q 849 269 880 356 q 761 118 817 181 q 631 20 705 55 q 473 -14 557 -14 q 296 18 372 -14 q 168 108 219 49 q 90 250 116 167 q 64 436 64 333 l 64 520 l 800 520 l 800 419 l 195 419 l 195 396 q 209 278 195 333 q 256 182 224 223 q 342 118 289 141 q 473 94 395 94 q 591 123 539 94 q 678 202 642 151 q 732 319 713 252 q 750 461 750 385 l 750 525 q 732 668 750 602 q 676 785 714 734 q 578 864 638 836 q 435 892 519 892 q 287 873 347 892 q 187 836 227 854 l 155 932 q 208 960 172 943 q 300 988 243 976 q 435 1001 357 1001 z "},"Ӡ":{"ha":808,"x_min":71,"x_max":724,"o":"m 100 987 l 694 987 l 694 903 l 355 499 l 278 499 l 278 578 l 541 880 l 100 880 l 100 987 m 278 577 l 380 578 q 566 543 489 578 q 684 440 643 507 q 724 275 724 372 q 700 152 724 206 q 630 61 675 98 q 524 5 585 24 q 391 -14 463 -14 q 275 2 332 -14 q 172 54 218 19 q 98 143 125 89 q 71 274 71 198 l 201 274 q 225 183 201 224 q 291 117 249 142 q 391 92 334 92 q 500 116 455 92 q 570 180 546 139 q 594 273 594 221 q 569 389 594 344 q 495 455 544 434 q 374 476 446 476 l 278 476 l 278 577 z "},"ӡ":{"ha":808,"x_min":72,"x_max":722,"o":"m 100 734 l 690 734 l 691 654 l 361 245 l 277 245 l 277 323 l 529 630 l 100 630 l 100 734 m 277 320 l 376 320 q 563 286 485 320 q 681 184 640 251 q 722 21 722 117 q 697 -102 722 -48 q 628 -192 673 -155 q 523 -249 584 -229 q 390 -268 463 -268 q 275 -251 332 -268 q 173 -200 218 -235 q 99 -110 127 -165 q 72 20 72 -56 l 197 20 q 221 -73 197 -31 q 289 -140 245 -115 q 390 -165 332 -165 q 502 -141 456 -165 q 572 -76 547 -117 q 596 18 596 -35 q 570 135 596 90 q 495 200 545 180 q 373 221 445 221 l 277 221 l 277 320 z "},"Ӻ":{"ha":819,"x_min":39,"x_max":773,"o":"m 773 987 l 773 880 l 297 880 l 297 0 l 167 0 l 167 987 l 773 987 m 471 588 l 471 485 l 39 485 l 39 588 l 471 588 m 281 104 l 408 104 l 408 -60 q 381 -189 408 -136 q 307 -269 355 -242 q 189 -296 258 -296 q 151 -294 168 -296 q 113 -285 133 -292 l 123 -178 q 156 -184 133 -182 q 189 -186 180 -186 q 239 -172 218 -186 q 271 -130 260 -158 q 281 -60 281 -102 l 281 104 z "},"ӻ":{"ha":637,"x_min":39,"x_max":623,"o":"m 623 734 l 623 630 l 284 630 l 284 0 l 159 0 l 159 734 l 623 734 m 471 467 l 471 363 l 39 363 l 39 467 l 471 467 m 271 104 l 397 104 l 397 -60 q 371 -189 397 -136 q 296 -269 345 -242 q 178 -296 247 -296 q 140 -294 157 -296 q 102 -285 122 -292 l 112 -178 q 145 -184 122 -182 q 178 -186 169 -186 q 228 -172 208 -186 q 260 -130 249 -158 q 271 -60 271 -102 l 271 104 z "},"Ӽ":{"ha":899,"x_min":39,"x_max":878,"o":"m 199 987 l 437 609 l 674 987 l 827 987 l 515 498 l 834 0 l 680 0 l 437 386 l 193 0 l 39 0 l 359 498 l 47 987 l 199 987 m 752 104 l 878 104 l 878 -60 q 852 -189 878 -136 q 777 -269 826 -242 q 660 -296 728 -296 q 621 -294 639 -296 q 584 -285 604 -292 l 593 -178 q 627 -184 604 -182 q 660 -186 650 -186 q 710 -172 689 -186 q 741 -130 730 -158 q 752 -60 752 -102 l 752 104 z "},"ӽ":{"ha":738,"x_min":28,"x_max":714,"o":"m 180 734 l 341 467 l 504 734 l 651 734 l 411 372 l 659 0 l 513 0 l 344 275 l 174 0 l 28 0 l 275 372 l 36 734 l 180 734 m 588 104 l 714 104 l 714 -60 q 688 -189 714 -136 q 613 -269 662 -242 q 496 -296 564 -296 q 457 -294 475 -296 q 420 -285 439 -292 l 429 -178 q 463 -184 439 -182 q 496 -186 486 -186 q 546 -172 525 -186 q 577 -130 566 -158 q 588 -60 588 -102 l 588 104 z "},"Ԁ":{"ha":862,"x_min":59,"x_max":763,"o":"m 394 599 l 663 599 l 663 492 l 394 492 q 276 465 321 492 q 211 396 231 439 q 190 303 190 353 q 211 209 190 254 q 276 135 231 163 q 394 106 321 106 l 632 106 l 632 987 l 763 987 l 763 0 l 394 0 q 211 39 286 0 q 98 147 136 79 q 59 302 59 215 q 81 422 59 368 q 145 516 102 476 q 250 577 188 555 q 394 599 313 599 z "},"Ԃ":{"ha":1143,"x_min":61,"x_max":1112,"o":"m 396 599 l 665 599 l 665 492 l 396 492 q 279 465 323 492 q 213 396 234 439 q 193 303 193 353 q 213 209 193 254 q 279 135 234 163 q 396 106 323 106 l 635 106 l 635 987 l 765 987 l 765 0 l 396 0 q 213 39 288 0 q 100 147 138 79 q 61 302 61 215 q 83 422 61 368 q 147 516 104 476 q 252 577 190 555 q 396 599 315 599 m 825 0 l 730 0 l 730 106 l 825 106 q 909 130 876 107 q 960 194 943 153 q 979 290 978 235 q 977 344 980 316 q 969 401 975 372 q 957 459 964 431 q 939 513 949 487 l 1065 513 q 1087 440 1077 478 q 1105 365 1098 403 q 1110 290 1112 326 q 1069 129 1109 193 q 965 32 1029 64 q 825 0 901 0 z "},"ԃ":{"ha":1197,"x_min":68,"x_max":1117,"o":"m 68 340 l 68 354 q 87 513 68 441 q 142 637 106 585 q 232 719 178 690 q 355 747 286 747 q 450 732 408 747 q 525 686 492 716 q 581 614 557 656 q 618 517 604 571 q 638 397 632 463 l 638 335 q 610 190 631 254 q 555 80 590 125 q 471 10 521 34 q 353 -14 420 -14 q 232 12 286 -14 q 142 85 179 38 q 87 198 106 133 q 68 340 68 262 m 194 354 l 194 340 q 205 242 194 288 q 238 164 216 197 q 297 111 261 130 q 385 92 334 92 q 487 119 447 92 q 552 189 528 146 q 590 283 576 233 l 590 447 q 567 519 582 484 q 527 582 551 554 q 468 625 503 609 q 386 642 433 642 q 298 619 334 642 q 239 557 262 597 q 205 465 216 517 q 194 354 194 413 m 550 234 l 550 1058 l 676 1058 l 676 234 q 690 158 675 191 q 730 107 704 125 q 792 89 756 89 q 876 109 840 90 q 937 163 912 127 q 976 248 962 198 q 989 359 989 297 q 980 495 991 427 q 948 632 968 564 l 1070 632 q 1103 497 1088 566 q 1116 359 1117 429 q 1088 194 1114 264 q 1017 78 1062 124 q 914 9 972 32 q 792 -14 857 -14 q 667 9 720 -16 q 584 90 614 35 q 550 234 554 145 z "},"Ԅ":{"ha":1101,"x_min":37,"x_max":1012,"o":"m 305 429 l 173 429 l 173 536 l 271 536 q 395 556 348 536 q 464 614 442 575 q 486 710 486 652 q 474 780 486 749 q 438 834 463 811 q 374 868 413 857 q 280 880 335 880 l 37 880 l 37 987 l 280 987 q 424 969 361 987 q 529 916 487 951 q 594 829 572 881 q 616 709 616 777 q 606 637 616 671 q 576 576 595 604 q 527 526 556 548 q 460 487 498 504 q 376 460 422 471 q 371 455 374 460 q 367 447 369 451 q 362 442 364 443 q 327 434 335 435 q 305 429 319 433 m 477 207 l 477 208 l 477 252 q 456 345 477 305 q 397 407 435 385 q 305 429 359 429 l 317 503 q 457 485 401 503 q 546 433 513 467 q 593 354 579 399 q 608 254 608 308 l 608 207 q 620 148 608 174 q 654 107 631 122 q 708 92 677 92 q 781 112 749 93 q 834 166 812 131 q 868 250 856 201 q 880 359 880 299 q 870 495 882 427 q 838 632 859 564 l 965 632 q 997 497 983 566 q 1010 359 1012 429 q 984 195 1009 265 q 918 79 960 125 q 821 9 876 33 q 707 -14 767 -14 q 588 7 638 -16 q 509 78 537 29 q 477 207 481 127 z "},"ԅ":{"ha":898,"x_min":33,"x_max":852,"o":"m 252 300 l 92 300 l 91 401 l 218 401 q 311 415 275 401 q 362 454 346 429 q 379 512 379 479 q 362 574 379 547 q 309 617 345 601 q 215 633 273 633 l 37 633 l 33 734 l 215 734 q 373 708 308 734 q 471 633 437 682 q 505 516 505 585 q 493 454 505 482 q 456 405 480 427 q 395 367 431 383 q 312 339 359 351 q 309 332 311 338 q 306 318 307 325 q 302 310 304 311 q 273 304 279 305 q 252 300 268 303 m 504 144 l 504 145 q 517 102 503 119 q 568 85 530 85 q 634 99 606 85 q 683 139 663 113 q 714 201 703 165 q 726 284 725 238 q 716 392 727 336 q 683 500 705 448 l 805 500 q 838 393 823 448 q 851 284 852 338 q 826 151 850 208 q 763 57 803 94 q 673 0 724 19 q 568 -18 623 -18 q 488 -10 522 -19 q 429 18 453 -1 q 393 70 406 38 q 378 145 380 101 l 378 197 q 362 252 378 229 q 314 288 346 275 q 235 300 282 300 l 259 372 q 407 350 353 372 q 482 288 460 327 q 504 197 504 248 l 504 144 z "},"Ԇ":{"ha":745,"x_min":56,"x_max":688,"o":"m 269 429 l 119 429 l 119 532 l 229 532 q 358 553 310 532 q 428 612 406 573 q 450 708 450 652 q 429 802 450 762 q 362 863 408 841 q 243 884 317 884 l 56 884 l 56 987 l 243 987 q 425 956 351 987 q 537 861 498 924 q 575 707 575 799 q 565 636 575 669 q 536 575 555 603 q 488 525 517 547 q 421 486 459 503 q 338 458 384 469 q 333 454 336 458 q 328 447 330 450 q 323 442 326 443 q 297 436 306 438 q 283 433 289 434 q 269 429 277 432 m 268 429 l 279 503 q 456 471 392 503 q 546 382 519 439 q 572 252 572 325 l 572 159 q 577 105 572 132 q 591 56 581 79 q 618 17 602 34 l 618 0 l 490 0 q 460 50 469 19 q 449 112 451 81 q 447 161 447 143 l 447 250 q 425 344 447 304 q 363 407 404 385 q 268 429 323 429 m 688 144 l 688 43 q 656 -87 688 -18 q 569 -202 625 -156 l 498 -153 q 534 -92 519 -123 q 557 -28 549 -61 q 565 41 565 5 l 565 144 l 688 144 z "},"ԇ":{"ha":700,"x_min":82,"x_max":668,"o":"m 312 299 l 132 299 l 132 401 l 275 401 q 370 414 334 401 q 422 453 406 428 q 438 512 438 478 q 422 574 438 547 q 370 617 406 602 q 275 632 334 632 l 82 632 l 83 734 l 275 734 q 398 719 345 734 q 489 676 452 705 q 545 608 526 648 q 564 516 564 568 q 552 454 564 481 q 515 404 539 426 q 454 366 490 382 q 370 338 418 349 q 365 325 368 338 q 359 310 361 311 q 337 305 344 307 q 327 302 331 303 q 312 299 322 300 m 295 299 l 320 372 q 467 347 414 372 q 542 280 520 323 q 564 182 564 237 l 564 117 q 568 80 564 100 q 580 42 571 60 q 604 13 589 24 l 604 0 l 475 0 q 449 36 456 12 q 440 83 441 60 q 438 117 438 106 l 438 182 q 422 244 438 218 q 374 285 406 271 q 295 299 342 299 m 668 134 l 668 33 q 637 -98 668 -29 q 550 -213 606 -167 l 478 -163 q 515 -103 500 -134 q 537 -39 530 -72 q 545 31 545 -6 l 545 134 l 668 134 z "},"Ԉ":{"ha":1347,"x_min":47,"x_max":1292,"o":"m 267 987 l 397 987 l 375 504 q 359 318 370 399 q 328 176 348 236 q 275 77 307 116 q 195 19 242 38 q 82 0 148 0 l 47 0 l 47 106 l 74 109 q 139 126 112 111 q 186 170 167 140 q 218 248 205 200 q 237 364 230 295 q 248 525 244 433 l 267 987 m 747 987 l 747 880 l 314 880 l 314 987 l 747 987 m 722 235 l 722 987 l 852 987 l 852 235 q 860 177 852 203 q 883 132 868 151 q 919 102 898 113 q 966 92 940 92 q 1048 111 1013 92 q 1108 165 1084 130 q 1146 249 1133 200 q 1160 359 1159 298 q 1150 495 1161 427 q 1118 632 1139 564 l 1245 632 q 1278 497 1263 566 q 1291 359 1292 429 q 1263 194 1289 264 q 1192 78 1236 124 q 1089 9 1147 32 q 966 -14 1031 -14 q 838 11 892 -14 q 752 91 783 36 q 722 235 722 146 z "},"ԉ":{"ha":1122,"x_min":43,"x_max":1081,"o":"m 214 734 l 340 734 l 321 380 q 306 235 316 298 q 277 127 296 172 q 232 55 259 83 q 168 13 205 26 q 82 0 131 0 l 43 0 l 43 111 l 71 113 q 120 126 99 115 q 155 160 140 138 q 178 219 169 183 q 193 304 187 255 q 201 420 198 354 l 214 734 m 576 734 l 576 630 l 242 630 l 242 734 l 576 734 m 554 234 l 554 734 l 680 734 l 680 234 q 688 175 680 201 q 711 129 696 148 q 747 99 726 109 q 795 89 768 89 q 862 106 833 89 q 911 154 891 123 q 942 229 931 185 q 954 328 953 273 q 944 458 955 393 q 913 587 932 523 l 1034 587 q 1066 459 1052 524 q 1080 328 1081 394 q 1055 178 1078 242 q 992 71 1031 113 q 902 7 953 28 q 795 -14 851 -14 q 696 0 741 -14 q 621 43 652 14 q 571 120 589 73 q 554 234 554 168 z "},"Ԋ":{"ha":1385,"x_min":115,"x_max":1292,"o":"m 226 542 l 741 542 l 741 435 l 226 435 l 226 542 m 115 987 l 245 987 l 245 0 l 115 0 l 115 987 m 722 987 l 852 987 l 852 235 q 866 161 852 193 q 905 110 880 128 q 966 92 931 92 q 1048 112 1013 93 q 1108 165 1084 130 q 1146 249 1133 200 q 1160 359 1160 298 q 1150 495 1162 427 q 1118 632 1139 564 l 1244 632 q 1277 497 1263 566 q 1291 359 1292 429 q 1263 194 1289 264 q 1192 78 1236 124 q 1089 9 1147 32 q 966 -14 1031 -14 q 840 9 893 -16 q 756 90 786 35 q 722 235 726 146 l 722 987 z "},"ԋ":{"ha":1152,"x_min":98,"x_max":1094,"o":"m 584 415 l 584 313 l 197 313 l 197 415 l 584 415 m 224 734 l 224 0 l 98 0 l 98 734 l 224 734 m 566 234 l 566 734 l 692 734 l 692 234 q 700 175 692 201 q 723 129 708 148 q 759 99 738 110 q 807 89 781 89 q 874 106 845 90 q 924 154 904 123 q 955 229 944 185 q 966 328 966 273 q 956 458 968 393 q 925 587 945 523 l 1046 587 q 1079 459 1064 524 q 1093 328 1094 394 q 1068 178 1091 242 q 1005 71 1045 113 q 915 7 966 28 q 807 -14 864 -14 q 710 -1 753 -15 q 635 42 667 12 q 587 120 604 72 q 566 234 570 168 z "},"Ԍ":{"ha":862,"x_min":80,"x_max":804,"o":"m 473 -14 q 313 17 385 -14 q 189 105 241 49 q 108 238 136 162 q 80 405 80 315 l 80 583 q 108 749 80 673 q 189 882 136 825 q 313 970 241 939 q 473 1002 385 1002 q 610 987 551 1002 q 713 943 669 972 l 673 848 q 581 883 630 871 q 473 895 532 895 q 362 870 411 895 q 280 803 314 846 q 229 704 246 760 q 211 584 211 648 l 211 405 q 229 284 211 340 q 280 184 246 227 q 362 117 314 141 q 473 92 411 92 q 581 117 536 93 q 648 185 625 141 q 672 289 671 229 q 664 411 673 349 q 638 533 654 473 l 765 533 q 791 412 778 473 q 803 289 804 351 q 755 119 802 186 q 635 19 709 52 q 473 -14 560 -14 z "},"ԍ":{"ha":715,"x_min":69,"x_max":656,"o":"m 402 89 q 478 104 450 90 q 517 143 505 118 q 530 204 529 169 q 527 284 530 242 q 516 364 524 326 l 637 364 q 650 284 644 325 q 655 204 656 244 q 621 82 654 130 q 531 9 587 33 q 402 -14 474 -14 q 260 15 322 -14 q 155 96 198 45 q 91 213 113 147 q 69 353 69 279 l 69 381 q 90 520 69 454 q 152 637 111 587 q 252 718 193 688 q 388 747 311 747 q 501 736 453 747 q 578 703 549 724 l 549 606 q 476 634 517 624 q 388 644 435 644 q 300 621 336 644 q 240 560 263 598 q 205 475 216 522 q 195 381 195 428 l 195 353 q 207 258 195 305 q 243 173 218 212 q 308 112 268 135 q 402 89 347 89 z "},"Ԏ":{"ha":986,"x_min":24,"x_max":917,"o":"m 806 987 l 806 880 l 24 880 l 24 987 l 806 987 m 347 235 l 347 987 l 477 987 l 477 235 q 485 177 477 203 q 507 132 492 151 q 543 103 522 113 q 591 92 564 92 q 673 112 637 93 q 733 165 709 130 q 770 249 758 200 q 785 359 783 298 q 774 495 786 427 q 743 632 763 564 l 869 632 q 902 497 888 566 q 915 359 917 429 q 887 194 913 264 q 817 78 861 124 q 714 9 772 32 q 591 -14 656 -14 q 464 9 517 -16 q 381 90 411 35 q 347 235 351 146 z "},"ԏ":{"ha":890,"x_min":47,"x_max":819,"o":"m 663 734 l 663 632 l 47 632 l 47 734 l 663 734 m 291 234 l 291 734 l 416 734 l 416 234 q 430 158 416 191 q 471 107 444 125 q 533 89 497 89 q 600 103 571 90 q 650 143 629 117 q 681 207 670 170 q 692 290 692 243 q 682 400 694 343 q 651 510 671 456 l 772 510 q 804 401 789 456 q 818 290 819 345 q 793 156 817 213 q 730 61 770 98 q 640 4 691 23 q 533 -14 589 -14 q 435 -1 479 -15 q 361 42 392 12 q 312 120 330 72 q 291 234 294 168 z "},"Ԑ":{"ha":937,"x_min":102,"x_max":867,"o":"m 479 532 l 609 532 l 609 450 l 484 450 q 376 439 422 450 q 297 407 329 429 q 250 352 266 385 q 233 273 233 318 q 251 201 233 234 q 301 144 268 168 q 383 106 334 119 q 493 92 431 92 q 621 117 566 92 q 707 183 676 142 q 737 274 737 224 l 867 274 q 836 143 867 198 q 750 54 804 89 q 629 2 696 19 q 493 -14 562 -14 q 336 5 408 -14 q 213 61 265 24 q 131 152 160 98 q 102 275 102 206 q 127 385 102 337 q 201 465 153 433 q 319 515 249 498 q 479 532 389 532 m 609 474 l 479 474 q 331 493 397 474 q 217 547 264 513 q 143 625 169 581 q 117 721 117 670 q 144 842 117 790 q 220 930 170 895 q 338 984 269 966 q 493 1002 408 1002 q 673 968 591 1002 q 805 874 755 935 q 854 728 854 812 l 724 728 q 693 814 724 777 q 610 873 662 852 q 493 895 557 895 q 354 871 408 895 q 274 809 300 848 q 248 723 248 770 q 261 656 248 686 q 303 604 275 626 q 376 569 332 581 q 484 557 421 557 l 609 557 l 609 474 z "},"Ԓ":{"ha":1043,"x_min":33,"x_max":985,"o":"m 749 987 l 749 880 l 298 880 l 298 987 l 749 987 m 862 987 l 862 0 l 731 0 l 731 987 l 862 987 m 253 987 l 383 987 l 361 504 q 345 318 356 399 q 313 176 334 236 q 260 77 293 116 q 181 19 228 38 q 68 0 134 0 l 33 0 l 33 106 l 60 109 q 125 126 98 111 q 172 170 153 140 q 203 248 191 200 q 223 364 216 295 q 234 525 230 433 l 253 987 m 859 104 l 985 104 l 985 -60 q 959 -189 985 -136 q 884 -269 933 -242 q 767 -296 836 -296 q 728 -294 746 -296 q 691 -285 711 -292 l 701 -178 q 734 -184 711 -182 q 767 -186 758 -186 q 817 -172 796 -186 q 848 -130 838 -158 q 859 -60 859 -102 l 859 104 z "},"ԓ":{"ha":859,"x_min":30,"x_max":822,"o":"m 586 734 l 586 630 l 231 630 l 231 734 l 586 734 m 696 734 l 696 0 l 571 0 l 571 734 l 696 734 m 201 734 l 327 734 l 308 380 q 293 235 303 298 q 264 127 282 172 q 219 55 246 83 q 155 13 193 26 q 69 0 118 0 l 30 0 l 30 111 l 57 113 q 107 126 86 115 q 142 160 127 138 q 165 219 156 183 q 179 304 174 255 q 187 420 184 354 l 201 734 m 696 104 l 822 104 l 822 -60 q 796 -189 822 -136 q 721 -269 770 -242 q 604 -296 672 -296 q 565 -294 583 -296 q 528 -285 547 -292 l 537 -178 q 571 -184 547 -182 q 604 -186 594 -186 q 653 -172 633 -186 q 685 -130 674 -158 q 696 -60 696 -102 l 696 104 z "}," ":{"ha":708,"x_min":0,"x_max":0,"o":""}," ":{"ha":1417,"x_min":0,"x_max":0,"o":""}," ":{"ha":708,"x_min":0,"x_max":0,"o":""}," ":{"ha":1417,"x_min":0,"x_max":0,"o":""}," ":{"ha":473,"x_min":0,"x_max":0,"o":""}," ":{"ha":354,"x_min":0,"x_max":0,"o":""}," ":{"ha":236,"x_min":0,"x_max":0,"o":""}," ":{"ha":781,"x_min":0,"x_max":0,"o":""}," ":{"ha":380,"x_min":0,"x_max":0,"o":""}," ":{"ha":283,"x_min":0,"x_max":0,"o":""}," ":{"ha":142,"x_min":0,"x_max":0,"o":""},"​":{"ha":0,"x_min":0,"x_max":0,"o":""},"‐":{"ha":382,"x_min":26,"x_max":357,"o":"m 357 471 l 357 368 l 26 368 l 26 471 l 357 471 z "},"‑":{"ha":382,"x_min":26,"x_max":357,"o":"m 357 471 l 357 368 l 26 368 l 26 471 l 357 471 z "},"–":{"ha":911,"x_min":110,"x_max":789,"o":"m 789 545 l 789 441 l 110 441 l 110 545 l 789 545 z "},"—":{"ha":1084,"x_min":98,"x_max":1004,"o":"m 1004 545 l 1004 441 l 98 441 l 98 545 l 1004 545 z "},"‗":{"ha":633,"x_min":9,"x_max":630,"o":"m 630 -172 l 630 -275 l 9 -275 l 9 -172 l 630 -172 m 630 0 l 630 -103 l 9 -103 l 9 0 l 630 0 z "},"‘":{"ha":278,"x_min":66,"x_max":255,"o":"m 66 728 l 66 810 q 80 896 66 851 q 120 983 94 941 q 184 1055 146 1025 l 255 1006 q 207 914 224 961 q 190 812 190 867 l 190 728 l 66 728 z "},"’":{"ha":278,"x_min":33,"x_max":222,"o":"m 222 1042 l 222 955 q 209 869 222 914 q 168 782 195 824 q 104 709 142 741 l 33 759 q 81 851 64 804 q 98 953 98 898 l 98 1042 l 222 1042 z "},"‚":{"ha":277,"x_min":24,"x_max":214,"o":"m 214 123 l 214 54 q 200 -32 214 13 q 160 -119 186 -77 q 96 -192 134 -161 l 24 -143 q 73 -51 56 -98 q 89 52 89 -3 l 89 123 l 214 123 z "},"‛":{"ha":278,"x_min":54,"x_max":243,"o":"m 54 1042 l 178 1042 l 178 953 q 195 851 178 898 q 243 759 212 804 l 172 709 q 108 782 135 741 q 67 869 81 824 q 54 955 54 914 l 54 1042 z "},"“":{"ha":491,"x_min":71,"x_max":474,"o":"m 71 728 l 71 810 q 85 896 71 851 q 125 983 99 941 q 189 1055 152 1025 l 260 1006 q 212 914 229 961 q 195 812 195 867 l 195 728 l 71 728 m 285 728 l 285 810 q 299 896 285 851 q 339 983 313 941 q 403 1055 366 1025 l 474 1006 q 426 914 443 961 q 409 812 409 867 l 409 728 l 285 728 z "},"”":{"ha":496,"x_min":41,"x_max":439,"o":"m 231 1042 l 231 955 q 217 869 231 914 q 176 782 203 824 q 113 709 150 741 l 41 759 q 89 851 73 804 q 106 953 106 898 l 106 1042 l 231 1042 m 439 1042 l 439 955 q 425 869 439 914 q 385 782 411 824 q 321 709 358 741 l 249 759 q 297 851 281 804 q 314 953 314 898 l 314 1042 l 439 1042 z "},"„":{"ha":479,"x_min":24,"x_max":415,"o":"m 214 167 l 214 54 q 200 -37 214 10 q 160 -129 186 -85 q 96 -205 134 -172 l 24 -155 q 73 -57 56 -107 q 89 52 89 -7 l 89 167 l 214 167 m 415 167 l 415 54 q 401 -37 415 10 q 361 -129 387 -85 q 297 -205 334 -172 l 225 -155 q 273 -57 257 -107 q 290 52 290 -7 l 290 167 l 415 167 z "},"†":{"ha":766,"x_min":47,"x_max":719,"o":"m 445 987 l 445 0 l 319 0 l 319 987 l 445 987 m 719 734 l 719 630 l 47 630 l 47 734 l 719 734 z "},"‡":{"ha":792,"x_min":59,"x_max":730,"o":"m 454 987 l 454 -282 l 329 -282 l 329 987 l 454 987 m 730 734 l 730 630 l 59 630 l 59 734 l 730 734 m 730 103 l 730 0 l 59 0 l 59 103 l 730 103 z "},"•":{"ha":469,"x_min":94,"x_max":371,"o":"m 94 496 l 94 524 q 131 621 94 583 q 232 659 168 659 q 334 621 296 659 q 371 524 371 583 l 371 496 q 334 401 371 439 q 233 363 297 363 q 132 401 169 363 q 94 496 94 439 z "},"‥":{"ha":654,"x_min":100,"x_max":553,"o":"m 100 66 q 120 120 100 98 q 178 142 140 142 q 236 120 216 142 q 256 66 256 98 q 236 14 256 35 q 178 -8 216 -8 q 120 14 140 -8 q 100 66 100 35 m 397 66 q 417 120 397 98 q 475 142 437 142 q 533 120 513 142 q 553 66 553 98 q 533 14 553 35 q 475 -8 513 -8 q 417 14 437 -8 q 397 66 397 35 z "},"…":{"ha":929,"x_min":100,"x_max":834,"o":"m 100 66 q 120 120 100 98 q 178 142 140 142 q 236 120 216 142 q 256 66 256 98 q 236 14 256 35 q 178 -8 216 -8 q 120 14 140 -8 q 100 66 100 35 m 397 66 q 417 120 397 98 q 475 142 437 142 q 533 120 513 142 q 553 66 553 98 q 533 14 553 35 q 475 -8 513 -8 q 417 14 437 -8 q 397 66 397 35 m 678 66 q 698 120 678 98 q 756 142 718 142 q 814 120 794 142 q 834 66 834 98 q 814 14 834 35 q 756 -8 794 -8 q 698 14 718 -8 q 678 66 678 35 z "},"‧":{"ha":260,"x_min":56,"x_max":204,"o":"m 56 420 q 75 471 56 450 q 130 492 94 492 q 185 471 166 492 q 204 420 204 450 q 185 369 204 390 q 130 349 166 349 q 75 369 94 349 q 56 420 56 390 z "},"‰":{"ha":1331,"x_min":46,"x_max":1274,"o":"m 46 745 l 46 798 q 71 900 46 854 q 140 974 95 946 q 248 1002 186 1002 q 357 974 312 1002 q 427 900 403 946 q 451 798 451 854 l 451 745 q 427 644 451 690 q 358 570 403 598 q 250 543 313 543 q 141 570 186 543 q 71 644 96 598 q 46 745 46 690 m 140 798 l 140 745 q 152 686 140 714 q 189 641 164 659 q 250 624 213 624 q 310 641 286 624 q 346 686 334 659 q 357 745 357 714 l 357 798 q 346 858 357 829 q 310 903 334 886 q 248 920 286 920 q 188 903 212 920 q 152 858 164 886 q 140 798 140 829 m 558 189 l 558 242 q 583 344 558 298 q 652 418 607 390 q 760 446 698 446 q 862 418 820 446 q 927 344 905 390 q 950 242 950 298 l 950 189 q 927 87 950 134 q 863 14 905 41 q 762 -14 821 -14 q 653 14 699 -14 q 583 87 608 41 q 558 189 558 134 m 652 242 l 652 189 q 664 130 652 158 q 701 84 676 102 q 762 67 725 67 q 822 84 798 67 q 858 130 846 102 q 869 189 869 157 l 869 242 q 858 302 869 274 q 822 347 846 330 q 760 364 798 364 q 700 347 724 364 q 664 302 676 330 q 652 242 652 274 m 882 189 l 882 242 q 905 344 882 298 q 970 418 928 390 q 1072 446 1013 446 q 1180 418 1135 446 q 1250 344 1225 390 q 1274 242 1274 298 l 1274 189 q 1250 87 1274 134 q 1181 14 1226 41 q 1073 -14 1136 -14 q 971 14 1014 -14 q 905 87 928 41 q 882 189 882 134 m 963 242 l 963 189 q 975 130 963 158 q 1011 84 987 102 q 1072 67 1036 67 q 1133 84 1109 67 q 1168 130 1156 102 q 1180 189 1180 157 l 1180 242 q 1168 302 1180 274 q 1132 347 1156 330 q 1071 364 1108 364 q 1011 347 1035 364 q 975 302 987 330 q 963 242 963 274 m 774 847 l 292 75 l 220 120 l 703 892 l 774 847 z "},"‹":{"ha":417,"x_min":73,"x_max":370,"o":"m 370 644 l 193 371 l 73 372 l 73 380 l 273 644 l 370 644 m 193 377 l 370 104 l 273 104 l 73 368 l 73 376 l 193 377 z "},"›":{"ha":417,"x_min":61,"x_max":357,"o":"m 61 104 l 238 376 l 357 376 l 357 367 l 157 104 l 61 104 m 61 644 l 157 644 l 357 380 l 357 371 l 238 370 l 61 644 z "},"⁄":{"ha":631,"x_min":41,"x_max":593,"o":"m 593 847 l 111 75 l 41 120 l 523 892 l 593 847 z "},"⁰":{"ha":509,"x_min":55,"x_max":454,"o":"m 454 767 l 454 673 q 430 545 454 595 q 360 470 405 494 q 256 445 315 445 q 150 470 195 445 q 80 545 105 494 q 55 673 55 595 l 55 767 q 80 895 55 844 q 150 970 104 945 q 254 995 195 995 q 359 970 315 995 q 429 895 404 945 q 454 767 454 844 m 347 664 l 347 777 q 336 851 347 822 q 305 893 326 880 q 254 907 284 907 q 204 893 224 907 q 172 851 183 880 q 161 777 161 822 l 161 664 q 172 589 161 618 q 204 546 183 560 q 256 532 226 532 q 306 546 286 532 q 337 589 326 560 q 347 664 347 618 z "},"⁴":{"ha":509,"x_min":37,"x_max":475,"o":"m 475 656 l 475 568 l 41 568 l 37 637 l 293 987 l 377 987 l 284 832 l 144 656 l 475 656 m 401 987 l 401 452 l 295 452 l 295 987 l 401 987 z "},"⁵":{"ha":509,"x_min":62,"x_max":461,"o":"m 161 694 l 77 715 l 110 987 l 435 987 l 435 899 l 198 899 l 182 783 q 221 795 195 788 q 277 803 246 803 q 376 782 335 803 q 439 722 417 761 q 461 627 461 682 q 439 537 461 579 q 374 470 418 496 q 262 445 330 445 q 167 463 212 445 q 94 515 122 481 q 62 599 65 550 l 168 599 q 197 548 171 564 q 262 532 222 532 q 333 559 311 532 q 354 629 354 587 q 328 697 354 671 q 252 724 301 724 q 195 714 214 724 q 161 694 176 705 z "},"⁶":{"ha":509,"x_min":58,"x_max":464,"o":"m 360 994 l 375 994 l 375 905 l 368 905 q 256 886 301 905 q 188 827 210 867 q 165 726 165 787 l 165 647 q 178 583 165 609 q 213 545 191 557 q 264 532 235 532 q 313 545 292 532 q 346 579 334 557 q 357 628 357 601 q 333 695 357 670 q 263 721 309 721 q 210 710 234 721 q 172 681 186 699 q 157 644 158 663 l 128 676 q 150 735 130 705 q 207 787 170 766 q 292 808 243 808 q 388 784 349 808 q 445 720 426 760 q 464 629 464 679 q 440 535 464 576 q 371 469 416 493 q 266 445 327 445 q 156 471 202 445 q 84 545 109 497 q 58 658 58 593 l 58 695 q 78 821 58 766 q 135 915 97 876 q 230 974 174 954 q 360 994 286 994 z "},"⁷":{"ha":509,"x_min":40,"x_max":460,"o":"m 460 987 l 460 926 l 222 452 l 110 452 l 347 900 l 40 900 l 40 987 l 460 987 z "},"⁸":{"ha":509,"x_min":54,"x_max":455,"o":"m 455 599 q 429 514 455 548 q 357 462 403 479 q 255 445 312 445 q 153 462 198 445 q 80 514 107 479 q 54 599 54 548 q 80 678 54 645 q 151 730 106 711 q 254 748 197 748 q 357 730 312 748 q 429 678 403 711 q 455 599 455 645 m 349 607 q 337 647 349 631 q 303 673 325 664 q 254 682 282 682 q 205 673 226 682 q 172 647 184 664 q 161 607 161 631 q 172 567 161 584 q 205 541 184 550 q 255 532 227 532 q 304 541 283 532 q 337 567 326 550 q 349 607 349 584 m 442 846 q 418 772 442 804 q 352 723 394 741 q 255 706 310 706 q 158 723 200 706 q 91 772 115 741 q 67 846 67 804 q 91 927 67 894 q 158 978 115 960 q 254 995 200 995 q 351 978 309 995 q 418 927 393 960 q 442 846 442 894 m 335 839 q 325 875 335 860 q 297 899 315 890 q 254 908 279 908 q 195 890 217 908 q 174 839 174 871 q 183 803 174 819 q 212 779 193 787 q 255 770 230 770 q 314 789 292 770 q 335 839 335 808 z "},"⁹":{"ha":509,"x_min":50,"x_max":448,"o":"m 142 534 l 151 534 q 261 551 219 534 q 323 606 303 569 q 342 698 342 642 l 342 797 q 330 859 342 834 q 296 895 317 883 q 248 907 275 907 q 199 893 220 907 q 167 856 178 879 q 156 804 156 832 q 166 755 156 777 q 198 721 177 734 q 250 708 219 708 q 302 720 280 708 q 337 749 325 731 q 351 784 350 766 l 382 753 q 361 693 381 722 q 306 644 340 663 q 226 625 271 625 q 130 648 169 625 q 70 711 90 671 q 50 804 50 751 q 74 900 50 857 q 143 969 98 943 q 248 995 187 995 q 356 969 311 995 q 425 894 401 943 q 448 777 448 845 l 448 742 q 431 616 448 671 q 376 524 413 562 q 284 467 340 486 q 152 448 229 448 l 142 448 l 142 534 z "},"⁺":{"ha":559,"x_min":54,"x_max":505,"o":"m 505 727 l 505 639 l 54 639 l 54 727 l 505 727 m 324 922 l 324 444 l 235 444 l 235 922 l 324 922 z "},"⁻":{"ha":515,"x_min":54,"x_max":461,"o":"m 461 730 l 461 642 l 54 642 l 54 730 l 461 730 z "},"⁼":{"ha":515,"x_min":54,"x_max":461,"o":"m 461 646 l 461 557 l 54 557 l 54 646 l 461 646 m 461 806 l 461 718 l 54 718 l 54 806 l 461 806 z "},"⁽":{"ha":337,"x_min":57,"x_max":283,"o":"m 57 676 l 57 688 q 89 884 57 801 q 166 1020 121 967 q 248 1094 211 1073 l 283 1015 q 229 948 256 990 q 184 842 202 905 q 167 688 167 778 l 167 675 q 177 551 167 604 q 204 459 187 498 q 242 393 221 420 q 283 345 262 366 l 248 271 q 187 319 220 286 q 124 404 154 353 q 76 523 95 455 q 57 676 57 591 z "},"⁾":{"ha":337,"x_min":54,"x_max":280,"o":"m 280 688 l 280 676 q 248 479 280 563 q 171 344 216 396 q 89 271 126 292 l 54 345 q 109 413 82 372 q 153 516 135 453 q 170 675 170 580 l 170 688 q 160 808 170 755 q 133 900 150 861 q 95 968 116 939 q 54 1015 75 996 l 89 1094 q 150 1044 117 1078 q 212 960 182 1010 q 261 841 242 909 q 280 688 280 772 z "},"ⁿ":{"ha":587,"x_min":83,"x_max":516,"o":"m 198 868 l 198 441 l 83 441 l 83 984 l 170 984 l 198 868 m 182 731 l 151 730 q 164 836 151 787 q 202 919 177 884 q 261 975 227 955 q 340 994 296 994 q 433 973 393 994 q 494 905 473 951 q 516 786 516 859 l 516 441 l 401 441 l 401 764 q 389 843 401 814 q 354 884 376 871 q 302 897 332 897 q 234 874 261 897 q 195 815 208 852 q 182 731 182 778 z "},"₀":{"ha":509,"x_min":55,"x_max":454,"o":"m 454 65 l 454 -29 q 430 -157 454 -106 q 360 -232 405 -208 q 256 -257 315 -257 q 150 -232 195 -257 q 80 -157 105 -208 q 55 -29 55 -106 l 55 65 q 80 193 55 142 q 150 268 104 243 q 254 293 195 293 q 359 268 315 293 q 429 193 404 243 q 454 65 454 142 m 347 -38 l 347 75 q 336 149 347 120 q 305 192 326 178 q 254 205 284 205 q 204 192 224 205 q 172 149 183 178 q 161 75 161 120 l 161 -38 q 172 -113 161 -83 q 204 -156 183 -142 q 256 -170 226 -170 q 306 -156 286 -170 q 337 -113 326 -142 q 347 -38 347 -83 z "},"₁":{"ha":509,"x_min":83,"x_max":336,"o":"m 336 286 l 336 -249 l 230 -249 l 230 159 l 83 120 l 83 208 l 323 286 l 336 286 z "},"₂":{"ha":509,"x_min":45,"x_max":463,"o":"m 463 -162 l 463 -249 l 58 -249 l 58 -176 l 253 8 q 301 59 283 37 q 327 99 319 81 q 334 132 334 117 q 313 186 334 165 q 251 207 291 207 q 176 181 200 207 q 152 117 152 155 l 45 117 q 69 205 45 165 q 139 270 94 245 q 248 294 184 294 q 353 274 309 294 q 419 219 396 254 q 442 134 442 183 q 426 66 442 98 q 381 4 410 35 q 312 -63 352 -27 l 193 -162 l 463 -162 z "},"₃":{"ha":509,"x_min":43,"x_max":452,"o":"m 180 62 l 237 62 q 292 72 271 62 q 325 98 314 81 q 336 136 336 115 q 315 186 336 166 q 246 207 293 207 q 182 190 208 207 q 157 144 157 173 l 50 144 q 76 223 50 190 q 146 275 102 257 q 244 294 190 294 q 348 276 303 294 q 418 225 393 259 q 443 142 443 191 q 421 76 443 106 q 357 27 399 45 q 256 9 315 9 l 180 9 l 180 62 m 180 -16 l 180 37 l 256 37 q 367 21 323 37 q 431 -26 410 5 q 452 -100 452 -56 q 425 -184 452 -149 q 351 -238 398 -220 q 245 -256 304 -256 q 148 -240 194 -256 q 72 -188 101 -223 q 43 -98 43 -153 l 149 -98 q 176 -149 149 -128 q 248 -170 203 -170 q 320 -149 296 -170 q 345 -94 345 -127 q 332 -48 345 -66 q 295 -23 319 -31 q 237 -16 271 -16 l 180 -16 z "},"₄":{"ha":509,"x_min":37,"x_max":475,"o":"m 475 -45 l 475 -134 l 41 -134 l 37 -64 l 293 286 l 377 286 l 284 131 l 144 -45 l 475 -45 m 401 286 l 401 -249 l 295 -249 l 295 286 l 401 286 z "},"₅":{"ha":509,"x_min":62,"x_max":461,"o":"m 161 -7 l 77 14 l 110 286 l 435 286 l 435 197 l 198 197 l 182 81 q 221 94 195 87 q 277 102 246 102 q 376 81 335 102 q 439 20 417 60 q 461 -74 461 -19 q 439 -164 461 -122 q 374 -231 418 -205 q 262 -256 330 -256 q 167 -238 212 -256 q 94 -186 122 -220 q 62 -102 65 -151 l 168 -102 q 197 -153 171 -137 q 262 -170 222 -170 q 333 -142 311 -170 q 354 -73 354 -114 q 328 -4 354 -31 q 252 22 301 22 q 195 13 214 22 q 161 -7 176 3 z "},"₆":{"ha":509,"x_min":58,"x_max":464,"o":"m 360 293 l 375 293 l 375 204 l 368 204 q 256 185 301 204 q 188 125 210 165 q 165 24 165 85 l 165 -54 q 178 -118 165 -92 q 213 -157 191 -144 q 264 -170 235 -170 q 313 -157 292 -170 q 346 -122 334 -144 q 357 -73 357 -100 q 333 -6 357 -31 q 263 20 309 20 q 210 8 234 20 q 172 -20 186 -3 q 157 -57 158 -38 l 128 -25 q 150 34 130 4 q 207 85 170 64 q 292 106 243 106 q 388 83 349 106 q 445 18 426 59 q 464 -73 464 -22 q 440 -166 464 -125 q 371 -232 416 -208 q 266 -256 327 -256 q 156 -230 202 -256 q 84 -156 109 -204 q 58 -43 58 -109 l 58 -6 q 78 120 58 64 q 135 214 97 175 q 230 273 174 252 q 360 293 286 293 z "},"₇":{"ha":509,"x_min":40,"x_max":460,"o":"m 460 286 l 460 225 l 222 -249 l 110 -249 l 347 199 l 40 199 l 40 286 l 460 286 z "},"₈":{"ha":509,"x_min":54,"x_max":455,"o":"m 455 -102 q 429 -188 455 -153 q 357 -239 403 -222 q 255 -256 312 -256 q 153 -239 198 -256 q 80 -188 107 -222 q 54 -102 54 -153 q 80 -23 54 -56 q 151 28 106 10 q 254 47 197 47 q 357 28 312 47 q 429 -23 403 10 q 455 -102 455 -56 m 349 -94 q 337 -54 349 -71 q 303 -28 325 -37 q 254 -19 282 -19 q 205 -28 226 -19 q 172 -54 184 -37 q 161 -94 161 -71 q 172 -134 161 -117 q 205 -160 184 -151 q 255 -170 227 -170 q 304 -160 283 -170 q 337 -134 326 -151 q 349 -94 349 -117 m 442 144 q 418 71 442 102 q 352 22 394 39 q 255 5 310 5 q 158 22 200 5 q 91 71 115 39 q 67 144 67 102 q 91 226 67 193 q 158 276 115 259 q 254 294 200 294 q 351 276 309 294 q 418 226 393 259 q 442 144 442 193 m 335 138 q 325 174 335 159 q 297 198 315 189 q 254 207 279 207 q 195 189 217 207 q 174 138 174 170 q 183 102 174 117 q 212 77 193 86 q 255 68 230 68 q 314 87 292 68 q 335 138 335 106 z "},"₉":{"ha":509,"x_min":50,"x_max":448,"o":"m 142 -168 l 151 -168 q 261 -150 219 -168 q 323 -96 303 -132 q 342 -3 342 -59 l 342 96 q 330 157 342 133 q 296 194 317 182 q 248 206 275 206 q 199 192 220 206 q 167 154 178 178 q 156 103 156 131 q 166 54 156 76 q 198 20 177 33 q 250 7 219 7 q 302 18 280 7 q 337 47 325 30 q 351 83 350 65 l 382 52 q 361 -8 381 21 q 306 -57 340 -38 q 226 -76 271 -76 q 130 -53 169 -76 q 70 10 90 -31 q 50 103 50 50 q 74 198 50 155 q 143 268 98 241 q 248 294 187 294 q 356 268 311 294 q 425 193 401 241 q 448 75 448 144 l 448 41 q 431 -85 448 -31 q 376 -177 413 -140 q 284 -234 340 -215 q 152 -254 229 -254 l 142 -254 l 142 -168 z "},"₊":{"ha":559,"x_min":54,"x_max":505,"o":"m 505 50 l 505 -38 l 54 -38 l 54 50 l 505 50 m 324 245 l 324 -233 l 235 -233 l 235 245 l 324 245 z "},"₋":{"ha":515,"x_min":54,"x_max":461,"o":"m 461 53 l 461 -35 l 54 -35 l 54 53 l 461 53 z "},"₌":{"ha":515,"x_min":54,"x_max":461,"o":"m 461 -31 l 461 -119 l 54 -119 l 54 -31 l 461 -31 m 461 130 l 461 41 l 54 41 l 54 130 l 461 130 z "},"₍":{"ha":337,"x_min":57,"x_max":283,"o":"m 57 20 l 57 32 q 89 218 57 139 q 166 347 121 297 q 248 416 211 397 l 283 338 q 229 275 256 315 q 184 176 202 235 q 167 33 167 117 l 167 20 q 184 -129 167 -70 q 229 -225 202 -188 q 283 -289 256 -263 l 248 -364 q 187 -317 220 -349 q 124 -237 154 -286 q 76 -125 95 -189 q 57 20 57 -60 z "},"₎":{"ha":337,"x_min":54,"x_max":280,"o":"m 280 39 l 280 28 q 248 -162 280 -81 q 171 -293 216 -242 q 89 -363 126 -343 l 54 -288 q 109 -223 82 -262 q 153 -125 135 -185 q 170 27 170 -64 l 170 40 q 153 180 170 122 q 109 277 135 238 q 54 338 82 315 l 89 416 q 150 371 117 402 q 213 292 183 340 q 261 181 242 245 q 280 39 280 118 z "},"₤":{"ha":808,"x_min":62,"x_max":765,"o":"m 765 0 l 64 0 l 64 106 l 765 106 l 765 0 m 295 705 l 310 273 q 292 154 311 209 q 235 71 273 98 l 117 106 q 154 141 140 113 q 174 205 168 169 q 180 272 180 242 l 165 705 q 204 864 165 798 q 312 966 243 930 q 466 1001 380 1001 q 617 968 555 1001 q 713 875 680 935 q 746 737 746 816 l 616 737 q 593 829 616 794 q 534 879 570 863 q 455 895 497 895 q 374 872 410 895 q 316 808 338 850 q 295 705 295 766 m 536 581 l 536 496 l 62 496 l 62 581 l 536 581 m 536 404 l 536 319 l 62 319 l 62 404 l 536 404 z "},"₦":{"ha":1100,"x_min":21,"x_max":1079,"o":"m 1079 638 l 1079 535 l 21 535 l 21 638 l 1079 638 m 1079 435 l 1079 332 l 21 332 l 21 435 l 1079 435 m 927 987 l 927 0 l 796 0 l 299 762 l 299 0 l 168 0 l 168 987 l 299 987 l 798 224 l 798 987 l 927 987 z "},"₧":{"ha":1140,"x_min":113,"x_max":1044,"o":"m 370 383 l 211 383 l 211 486 l 370 486 q 489 515 448 486 q 543 589 529 543 q 557 684 557 634 q 543 781 557 735 q 489 856 529 827 q 370 884 448 884 l 239 884 l 239 0 l 113 0 l 113 987 l 370 987 q 551 948 481 987 q 652 841 620 909 q 684 686 684 772 q 652 530 684 599 q 551 422 620 462 q 370 383 481 383 m 1040 734 l 1040 637 l 644 637 l 644 734 l 1040 734 m 778 912 l 903 912 l 903 182 q 915 125 903 144 q 945 100 926 106 q 984 94 963 94 q 1017 97 1000 94 q 1043 102 1034 100 l 1044 0 q 1005 -9 1029 -5 q 947 -14 981 -14 q 863 5 901 -14 q 801 66 824 23 q 778 182 778 109 l 778 912 z "},"₨":{"ha":1469,"x_min":115,"x_max":1400,"o":"m 115 987 l 441 987 q 630 954 553 987 q 747 853 707 920 q 787 691 787 787 q 760 567 787 623 q 681 472 732 511 q 559 414 630 433 l 522 400 l 215 400 l 214 507 l 446 507 q 563 531 516 507 q 633 598 610 556 q 657 691 657 640 q 635 791 657 748 q 565 857 612 833 q 441 880 517 880 l 245 880 l 245 0 l 115 0 l 115 987 m 692 0 l 452 448 l 588 448 l 831 8 l 831 0 l 692 0 m 1275 195 q 1263 245 1275 222 q 1215 288 1251 269 q 1106 321 1179 307 q 996 352 1045 334 q 912 395 947 370 q 860 454 878 420 q 842 533 842 488 q 861 615 842 576 q 916 684 880 654 q 1002 730 951 713 q 1114 747 1052 747 q 1264 716 1202 747 q 1360 633 1326 685 q 1393 518 1393 581 l 1267 518 q 1250 577 1267 549 q 1197 625 1232 606 q 1114 644 1163 644 q 1029 628 1061 644 q 982 588 997 612 q 968 536 968 564 q 975 500 968 516 q 1000 471 982 484 q 1052 446 1019 458 q 1137 423 1085 435 q 1285 374 1227 403 q 1372 304 1343 346 q 1400 204 1400 263 q 1380 116 1400 156 q 1323 47 1360 76 q 1233 2 1285 18 q 1117 -14 1181 -14 q 953 21 1020 -14 q 851 111 886 56 q 817 227 817 165 l 943 227 q 972 145 945 175 q 1039 102 1000 115 q 1117 90 1078 90 q 1203 103 1168 90 q 1257 140 1238 117 q 1275 195 1275 164 z "},"₩":{"ha":1027,"x_min":21,"x_max":1006,"o":"m 1006 665 l 1006 562 l 21 562 l 21 665 l 1006 665 m 1006 430 l 1006 328 l 21 328 l 21 430 l 1006 430 m 289 0 l 334 320 l 454 987 l 543 987 l 498 667 l 376 0 l 289 0 m 172 987 l 298 323 l 334 0 l 251 0 l 41 987 l 172 987 m 694 0 l 730 323 l 853 987 l 984 987 l 774 0 l 694 0 m 576 987 l 696 322 l 740 0 l 649 0 l 531 669 l 488 987 l 576 987 z "},"₪":{"ha":1071,"x_min":95,"x_max":976,"o":"m 95 734 l 474 734 q 572 719 528 734 q 646 673 615 705 q 693 588 677 641 q 709 460 709 536 l 709 237 l 583 237 l 583 461 q 574 541 583 508 q 546 593 564 573 q 500 622 527 613 q 437 631 473 631 l 221 631 l 221 0 l 95 0 l 95 734 m 741 0 l 362 0 l 362 498 l 488 498 l 488 103 l 703 103 q 784 119 751 103 q 833 173 817 136 q 850 273 850 210 l 850 734 l 976 734 l 976 274 q 960 145 976 198 q 912 61 943 93 q 838 15 882 29 q 741 0 795 0 z "},"€":{"ha":781,"x_min":64,"x_max":714,"o":"m 553 92 q 629 98 592 92 q 701 115 667 104 l 714 7 q 635 -8 676 -3 q 551 -14 593 -14 q 404 11 471 -14 q 288 85 336 36 q 212 208 239 134 q 185 380 185 281 l 185 606 q 212 779 185 705 q 287 902 238 852 q 402 976 336 951 q 551 1001 469 1001 q 633 995 593 1001 q 714 980 673 989 l 701 871 q 629 888 667 882 q 552 895 591 895 q 454 877 498 895 q 379 824 410 859 q 332 734 349 789 q 316 607 316 680 l 316 380 q 333 252 316 307 q 380 163 349 198 q 455 110 412 127 q 553 92 499 92 m 576 629 l 576 544 l 64 544 l 64 629 l 576 629 m 576 452 l 576 368 l 64 368 l 64 452 l 576 452 z "},"₱":{"ha":1016,"x_min":21,"x_max":996,"o":"m 996 823 l 996 720 l 21 720 l 21 823 l 996 823 m 996 656 l 996 553 l 21 553 l 21 656 l 996 656 m 519 387 l 256 387 l 256 494 l 519 494 q 644 518 596 494 q 713 586 691 543 q 735 685 735 629 q 713 781 735 736 q 644 853 691 825 q 519 880 596 880 l 286 880 l 286 0 l 155 0 l 155 987 l 519 987 q 709 949 631 987 q 826 842 786 910 q 866 686 866 774 q 826 524 866 591 q 709 422 786 457 q 519 387 631 387 z "},"₹":{"ha":718,"x_min":29,"x_max":690,"o":"m 690 746 l 659 639 l 29 639 l 60 746 l 690 746 m 408 0 l 49 419 l 48 503 l 214 503 q 333 527 286 503 q 404 593 380 551 q 427 686 427 634 q 405 787 427 743 q 335 856 382 831 q 210 880 287 880 l 31 880 l 62 987 l 210 987 q 405 952 328 987 q 519 848 481 916 q 557 684 557 781 q 526 536 557 602 q 422 433 494 471 q 228 396 350 396 l 562 8 l 562 0 l 408 0 m 690 987 l 659 880 l 151 880 l 182 987 l 690 987 z "},"₺":{"ha":773,"x_min":22,"x_max":713,"o":"m 318 987 l 318 0 l 188 0 l 188 987 l 318 987 m 583 523 l 713 523 l 713 463 q 685 264 713 353 q 604 114 656 176 q 479 20 552 52 q 315 -13 406 -13 q 252 -9 283 -13 q 188 0 220 -5 l 315 98 q 430 122 380 98 q 514 191 480 145 q 566 306 548 237 q 583 463 583 374 l 583 523 m 488 892 l 488 771 l 22 558 l 22 679 l 488 892 m 488 667 l 488 547 l 22 334 l 22 454 l 488 667 z "},"₼":{"ha":917,"x_min":63,"x_max":854,"o":"m 854 0 l 728 0 l 728 127 q 717 257 728 199 q 683 358 705 315 q 627 432 660 402 q 552 477 594 462 q 458 492 509 492 q 347 468 397 492 q 262 399 298 445 q 208 285 227 353 q 189 127 189 217 l 189 0 l 63 0 l 63 126 q 92 326 63 237 q 173 475 121 414 q 298 570 226 537 q 458 602 370 602 q 591 581 530 602 q 701 520 652 560 q 784 421 749 479 q 836 289 818 363 q 854 126 854 215 l 854 0 m 521 734 l 521 0 l 395 0 l 395 734 l 521 734 z "},"₽":{"ha":922,"x_min":21,"x_max":871,"o":"m 526 387 l 21 387 l 21 494 l 526 494 q 648 517 600 494 q 718 585 695 541 q 741 687 741 628 q 719 779 741 735 q 651 852 698 823 q 526 880 604 880 l 292 880 l 292 0 l 161 0 l 161 987 l 526 987 q 715 949 638 987 q 831 843 791 911 q 871 688 871 776 q 831 526 871 593 q 715 423 791 458 q 526 387 638 387 m 518 294 l 518 187 l 21 187 l 21 294 l 518 294 z "},"℅":{"ha":1025,"x_min":83,"x_max":957,"o":"m 368 715 l 462 715 q 439 629 462 668 q 375 566 417 589 q 275 543 334 543 q 173 570 216 543 q 107 644 130 598 q 83 745 83 690 l 83 798 q 106 900 83 854 q 172 974 130 946 q 273 1002 215 1002 q 374 978 332 1002 q 439 915 416 954 q 462 828 462 876 l 368 828 q 345 892 368 864 q 273 920 321 920 q 220 903 241 920 q 188 858 199 886 q 178 798 178 829 l 178 745 q 189 686 178 714 q 221 641 199 659 q 275 624 243 624 q 345 653 323 624 q 368 715 368 683 m 552 189 l 552 242 q 576 344 552 298 q 646 418 601 390 q 754 446 692 446 q 863 418 818 446 q 932 344 908 390 q 957 242 957 298 l 957 189 q 933 87 957 134 q 864 14 909 41 q 755 -14 819 -14 q 647 14 692 -14 q 577 87 602 41 q 552 189 552 134 m 646 242 l 646 189 q 658 130 646 158 q 694 84 670 102 q 755 67 719 67 q 816 84 792 67 q 852 130 840 102 q 863 189 863 157 l 863 242 q 851 302 863 274 q 815 347 840 330 q 754 364 791 364 q 694 347 718 364 q 658 302 670 330 q 646 242 646 274 m 785 847 l 302 75 l 232 120 l 714 892 l 785 847 z "},"ℓ":{"ha":661,"x_min":71,"x_max":593,"o":"m 486 93 l 486 -14 q 365 7 416 -14 q 279 70 313 29 q 229 166 245 110 q 212 292 212 223 l 212 798 q 225 905 212 858 q 264 986 239 953 q 327 1037 290 1019 q 410 1055 363 1055 q 483 1040 450 1055 q 541 997 516 1025 q 580 930 566 969 q 593 840 593 890 l 593 812 q 571 669 593 743 q 505 527 549 595 q 398 404 462 458 q 253 317 335 349 q 71 285 171 285 l 71 404 q 250 444 175 404 q 373 546 326 484 q 444 680 421 609 q 467 811 467 750 l 467 840 q 463 888 467 868 q 451 922 459 909 q 433 941 444 935 q 410 947 422 947 q 378 938 391 947 q 356 910 365 929 q 342 863 347 891 q 338 798 338 836 l 338 292 q 345 209 338 245 q 370 146 353 172 q 415 106 387 120 q 486 93 444 93 z "},"№":{"ha":1428,"x_min":110,"x_max":1350,"o":"m 1327 376 l 1327 280 l 909 280 l 909 376 l 1327 376 m 886 698 l 886 765 q 914 887 886 835 q 995 969 943 940 q 1118 998 1046 998 q 1241 969 1190 998 q 1321 887 1293 940 q 1350 765 1350 835 l 1350 698 q 1322 576 1350 628 q 1242 494 1294 524 q 1119 465 1190 465 q 995 494 1047 465 q 914 576 943 524 q 886 698 886 628 m 996 765 l 996 698 q 1009 625 996 656 q 1050 577 1023 594 q 1119 559 1078 559 q 1186 577 1160 559 q 1226 625 1213 594 q 1240 698 1240 656 l 1240 765 q 1226 837 1240 806 q 1186 886 1213 868 q 1118 903 1159 903 q 1050 886 1077 903 q 1009 837 1023 868 q 996 765 996 806 m 777 987 l 777 0 l 638 0 l 236 769 l 236 0 l 110 0 l 110 987 l 248 987 l 652 216 l 652 987 l 777 987 z "},"™":{"ha":869,"x_min":71,"x_max":732,"o":"m 671 623 l 671 891 l 577 623 l 542 623 l 447 890 l 447 623 l 386 623 l 386 987 l 462 987 l 559 718 l 656 987 l 732 987 l 732 623 l 671 623 m 332 987 l 332 932 l 232 932 l 232 623 l 170 623 l 170 932 l 71 932 l 71 987 l 332 987 z "},"℮":{"ha":884,"x_min":103,"x_max":794,"o":"m 708 134 l 709 64 q 589 7 652 28 q 458 -14 525 -14 q 320 16 385 -14 q 207 98 256 46 q 131 220 158 151 q 103 367 103 289 q 133 514 103 446 q 214 635 163 583 q 329 718 265 688 q 458 747 392 747 q 589 720 528 747 q 696 643 650 692 q 768 527 742 593 q 794 380 794 460 q 794 372 794 378 q 794 349 794 366 l 273 349 l 273 126 q 358 72 311 92 q 458 52 406 52 q 585 72 522 52 q 708 134 648 92 m 458 684 q 360 661 408 684 q 273 601 312 639 l 273 413 l 640 413 l 640 607 q 557 663 604 642 q 458 684 511 684 z "},"⅛":{"ha":1067,"x_min":57,"x_max":989,"o":"m 309 973 l 309 438 l 203 438 l 203 846 l 57 807 l 57 895 l 297 973 l 309 973 m 749 847 l 267 75 l 197 120 l 679 892 l 749 847 m 989 146 q 963 61 989 96 q 892 10 937 27 q 789 -7 846 -7 q 687 10 732 -7 q 615 61 642 27 q 588 146 588 96 q 614 226 588 193 q 686 277 640 259 q 789 296 731 296 q 892 277 846 296 q 963 226 937 259 q 989 146 989 193 m 884 155 q 871 195 884 178 q 838 221 859 212 q 789 230 817 230 q 739 221 760 230 q 707 195 718 212 q 695 155 695 178 q 707 115 695 132 q 740 89 718 98 q 789 79 761 79 q 839 89 817 79 q 872 115 860 98 q 884 155 884 132 m 977 393 q 952 320 977 351 q 886 271 928 288 q 789 254 844 254 q 692 271 734 254 q 626 320 650 288 q 602 393 602 351 q 626 475 602 441 q 692 525 650 508 q 789 543 734 543 q 885 525 843 543 q 952 475 928 508 q 977 393 977 441 m 869 387 q 860 423 869 408 q 832 447 850 438 q 789 456 814 456 q 730 437 751 456 q 708 387 708 419 q 718 351 708 366 q 746 326 728 335 q 789 317 764 317 q 848 336 827 317 q 869 387 869 355 z "},"⅜":{"ha":1187,"x_min":68,"x_max":1098,"o":"m 206 759 l 263 759 q 318 768 296 759 q 351 794 340 778 q 362 833 362 811 q 340 883 362 863 q 272 903 319 903 q 208 886 233 903 q 182 840 182 869 l 76 840 q 102 920 76 886 q 172 972 127 954 q 270 990 216 990 q 374 973 329 990 q 444 922 418 956 q 469 838 469 888 q 447 772 469 802 q 383 724 425 742 q 281 706 341 706 l 206 706 l 206 759 m 206 681 l 206 734 l 281 734 q 393 718 349 734 q 457 671 436 701 q 478 597 478 640 q 451 512 478 547 q 377 458 424 477 q 271 440 330 440 q 173 457 220 440 q 98 509 127 473 q 68 599 68 544 l 175 599 q 202 548 175 568 q 274 527 229 527 q 346 548 321 527 q 371 602 371 569 q 358 648 371 631 q 320 673 345 665 q 263 681 296 681 l 206 681 m 879 847 l 397 75 l 326 120 l 808 892 l 879 847 m 1098 146 q 1072 61 1098 96 q 1000 10 1046 27 q 898 -7 955 -7 q 795 10 841 -7 q 723 61 750 27 q 696 146 696 96 q 723 226 696 193 q 794 277 749 259 q 897 296 840 296 q 1000 277 955 296 q 1072 226 1046 259 q 1098 146 1098 193 m 992 155 q 980 195 992 178 q 946 221 968 212 q 897 230 925 230 q 848 221 869 230 q 815 195 827 212 q 804 155 804 178 q 815 115 804 132 q 848 89 827 98 q 898 79 869 79 q 947 89 926 79 q 980 115 968 98 q 992 155 992 132 m 1085 393 q 1061 320 1085 351 q 995 271 1037 288 q 898 254 953 254 q 801 271 843 254 q 734 320 758 288 q 710 393 710 351 q 734 475 710 441 q 801 525 758 508 q 897 543 843 543 q 994 525 951 543 q 1061 475 1036 508 q 1085 393 1085 441 m 978 387 q 968 423 978 408 q 940 447 958 438 q 897 456 922 456 q 838 437 860 456 q 817 387 817 419 q 826 351 817 366 q 854 326 836 335 q 898 317 873 317 q 957 336 935 317 q 978 387 978 355 z "},"⅝":{"ha":1182,"x_min":68,"x_max":1091,"o":"m 167 686 l 82 707 l 115 979 l 440 979 l 440 890 l 203 890 l 188 774 q 226 787 201 780 q 283 795 252 795 q 381 774 340 795 q 445 713 422 753 q 467 619 467 674 q 445 529 467 571 q 379 462 423 488 q 267 437 335 437 q 172 455 217 437 q 99 507 127 473 q 68 591 71 542 l 173 591 q 202 540 176 556 q 267 524 228 524 q 338 551 317 524 q 359 621 359 579 q 333 689 359 663 q 257 715 307 715 q 201 706 220 715 q 167 686 182 696 m 856 847 l 374 75 l 303 120 l 785 892 l 856 847 m 1091 146 q 1065 61 1091 96 q 994 10 1039 27 q 891 -7 948 -7 q 789 10 834 -7 q 716 61 743 27 q 690 146 690 96 q 716 226 690 193 q 787 277 742 259 q 890 296 833 296 q 994 277 948 296 q 1065 226 1039 259 q 1091 146 1091 193 m 985 155 q 973 195 985 178 q 940 221 961 212 q 890 230 918 230 q 841 221 862 230 q 808 195 820 212 q 797 155 797 178 q 808 115 797 132 q 841 89 820 98 q 891 79 863 79 q 940 89 919 79 q 974 115 962 98 q 985 155 985 132 m 1078 393 q 1054 320 1078 351 q 988 271 1030 288 q 891 254 946 254 q 794 271 836 254 q 727 320 751 288 q 703 393 703 351 q 727 475 703 441 q 794 525 751 508 q 890 543 836 543 q 987 525 945 543 q 1054 475 1029 508 q 1078 393 1078 441 m 971 387 q 961 423 971 408 q 933 447 951 438 q 890 456 916 456 q 831 437 853 456 q 810 387 810 419 q 820 351 810 366 q 848 326 829 335 q 891 317 866 317 q 950 336 928 317 q 971 387 971 355 z "},"⅞":{"ha":1114,"x_min":61,"x_max":1040,"o":"m 481 979 l 481 918 l 243 444 l 131 444 l 368 892 l 61 892 l 61 979 l 481 979 m 789 847 l 307 75 l 236 120 l 718 892 l 789 847 m 1040 146 q 1014 61 1040 96 q 942 10 987 27 q 840 -7 897 -7 q 737 10 783 -7 q 665 61 692 27 q 638 146 638 96 q 664 226 638 193 q 736 277 690 259 q 839 296 781 296 q 942 277 897 296 q 1014 226 987 259 q 1040 146 1040 193 m 934 155 q 922 195 934 178 q 888 221 909 212 q 839 230 867 230 q 789 221 810 230 q 757 195 768 212 q 745 155 745 178 q 757 115 745 132 q 790 89 768 98 q 840 79 811 79 q 889 89 867 79 q 922 115 910 98 q 934 155 934 132 m 1027 393 q 1003 320 1027 351 q 937 271 979 288 q 840 254 895 254 q 742 271 785 254 q 676 320 700 288 q 652 393 652 351 q 676 475 652 441 q 742 525 700 508 q 839 543 785 543 q 936 525 893 543 q 1002 475 978 508 q 1027 393 1027 441 m 920 387 q 910 423 920 408 q 882 447 900 438 q 839 456 864 456 q 780 437 802 456 q 758 387 758 419 q 768 351 758 366 q 796 326 778 335 q 840 317 814 317 q 898 336 877 317 q 920 387 920 355 z "},"∂":{"ha":792,"x_min":72,"x_max":729,"o":"m 389 693 q 507 667 451 693 q 603 595 564 641 q 581 705 597 655 q 541 795 565 755 q 486 862 517 835 q 419 904 455 890 q 345 919 384 919 q 277 914 309 919 q 215 901 245 909 q 152 880 184 892 l 141 981 q 195 1003 166 993 q 263 1021 224 1014 q 356 1028 302 1028 q 490 1003 431 1028 q 595 929 550 977 q 669 811 640 880 q 714 656 699 743 q 729 467 729 569 l 729 427 q 715 285 729 352 q 673 164 701 218 q 605 69 645 109 q 513 7 565 29 q 399 -14 462 -14 q 261 13 322 -14 q 158 89 201 40 q 94 202 116 137 q 72 345 72 268 l 72 359 q 93 492 72 431 q 156 598 115 553 q 255 668 197 643 q 389 693 314 693 m 401 590 q 310 571 349 590 q 247 520 272 553 q 210 447 222 488 q 198 359 198 406 l 198 345 q 210 247 198 293 q 247 165 222 201 q 310 109 271 130 q 399 89 348 89 q 491 113 452 89 q 554 180 529 137 q 591 279 579 222 q 604 402 604 336 l 604 448 q 587 489 600 465 q 551 536 574 513 q 490 574 527 559 q 401 590 453 590 z "},"∏":{"ha":965,"x_min":115,"x_max":850,"o":"m 850 987 l 850 -144 l 724 -144 l 724 884 l 241 884 l 241 -144 l 115 -144 l 115 987 l 850 987 z "},"∑":{"ha":813,"x_min":47,"x_max":811,"o":"m 811 -80 l 811 -182 l 97 -182 l 97 -80 l 811 -80 m 759 987 l 759 885 l 74 885 l 74 987 l 759 987 m 593 408 l 593 391 l 114 -182 l 47 -182 l 47 -86 l 460 400 l 47 890 l 47 987 l 114 987 l 593 408 z "},"−":{"ha":794,"x_min":114,"x_max":680,"o":"m 680 545 l 680 441 l 114 441 l 114 545 l 680 545 z "},"√":{"ha":828,"x_min":43,"x_max":798,"o":"m 371 167 l 669 987 l 798 987 l 431 -1 l 347 -1 l 371 167 m 256 530 l 390 167 l 418 -1 l 335 -1 l 128 530 l 256 530 m 43 427 l 43 530 l 251 530 l 251 427 l 43 427 z "},"∞":{"ha":1428,"x_min":67,"x_max":1354,"o":"m 67 357 l 67 376 q 91 516 67 450 q 157 635 114 583 q 261 718 201 688 q 395 747 321 747 q 524 719 469 747 q 620 644 579 690 q 687 548 660 599 q 731 453 714 498 q 756 381 747 408 l 756 353 q 731 281 747 326 q 687 185 714 236 q 620 89 660 134 q 525 15 580 43 q 397 -14 469 -14 q 261 16 322 -14 q 157 98 201 45 q 91 217 114 150 q 67 357 67 283 m 193 376 l 193 357 q 206 254 193 302 q 245 168 219 205 q 309 110 271 131 q 397 89 347 89 q 483 110 445 89 q 549 165 520 132 q 596 235 577 198 q 627 303 616 271 q 643 353 639 335 l 643 381 q 627 430 639 398 q 596 498 616 461 q 549 568 577 534 q 482 623 520 602 q 395 644 444 644 q 309 623 347 644 q 245 564 271 602 q 206 478 219 527 q 193 376 193 430 m 1354 376 l 1354 357 q 1330 217 1354 283 q 1263 98 1306 150 q 1159 16 1219 45 q 1024 -14 1098 -14 q 896 15 951 -14 q 801 89 841 43 q 733 185 760 134 q 689 281 706 236 q 665 353 673 326 l 665 381 q 690 453 673 408 q 734 548 707 498 q 801 644 761 599 q 897 719 842 690 q 1025 747 952 747 q 1159 718 1099 747 q 1263 635 1219 688 q 1330 516 1307 583 q 1354 376 1354 450 m 1228 357 l 1228 376 q 1215 478 1228 430 q 1175 564 1201 527 q 1112 623 1149 602 q 1025 644 1074 644 q 939 623 977 644 q 872 568 901 602 q 824 498 844 534 q 793 430 804 461 q 777 381 781 398 l 777 353 q 793 303 781 335 q 824 235 804 271 q 872 165 844 198 q 938 110 900 132 q 1024 89 976 89 q 1111 110 1073 89 q 1175 168 1149 131 q 1215 254 1201 205 q 1228 357 1228 302 z "},"∫":{"ha":356,"x_min":-55,"x_max":444,"o":"m 243 -73 q 217 -198 243 -149 q 142 -272 191 -248 q 24 -296 93 -296 q -16 -293 3 -296 q -55 -283 -35 -290 l -42 -184 q -16 -190 -33 -187 q 12 -193 1 -193 q 68 -180 45 -193 q 104 -141 92 -168 q 117 -73 117 -114 l 117 812 q 144 946 117 892 q 224 1028 172 1000 q 347 1056 275 1056 q 395 1052 371 1056 q 444 1042 419 1048 l 428 945 q 401 951 416 949 q 366 953 386 953 q 298 936 326 953 q 257 888 271 920 q 243 812 243 857 l 243 -73 z "},"≈":{"ha":783,"x_min":68,"x_max":703,"o":"m 70 483 l 69 611 q 146 666 101 646 q 235 686 191 686 q 320 672 290 687 q 394 636 351 658 q 463 602 434 616 q 542 589 492 589 q 628 612 586 589 q 702 675 670 635 l 703 547 q 629 493 671 513 q 543 473 587 473 q 464 487 492 473 q 395 520 435 500 q 321 556 352 542 q 235 570 290 571 q 146 547 191 570 q 70 483 102 524 m 69 200 l 68 328 q 145 382 100 363 q 235 402 191 402 q 320 389 289 404 q 393 353 351 374 q 462 319 433 332 q 541 306 491 306 q 627 329 585 306 q 701 393 669 352 l 702 264 q 628 210 670 229 q 542 190 586 190 q 463 203 492 190 q 394 237 434 216 q 320 273 351 258 q 235 287 289 288 q 146 264 191 287 q 69 200 101 241 z "},"≠":{"ha":762,"x_min":103,"x_max":669,"o":"m 618 799 l 213 106 l 149 146 l 553 839 l 618 799 m 669 661 l 669 552 l 103 552 l 103 661 l 669 661 m 669 380 l 669 271 l 103 271 l 103 380 l 669 380 z "},"≤":{"ha":706,"x_min":41,"x_max":608,"o":"m 135 479 l 604 307 l 604 186 l 49 420 l 49 491 l 135 479 m 604 621 l 136 446 l 49 438 l 49 509 l 604 742 l 604 621 m 608 104 l 608 1 l 41 1 l 41 104 l 608 104 z "},"≥":{"ha":726,"x_min":90,"x_max":671,"o":"m 574 467 l 92 638 l 92 755 l 671 523 l 671 451 l 574 467 m 92 317 l 575 491 l 671 505 l 671 433 l 92 199 l 92 317 m 656 103 l 656 0 l 90 0 l 90 103 l 656 103 z "},"◊":{"ha":700,"x_min":30,"x_max":671,"o":"m 30 493 l 301 987 l 385 987 l 373 897 l 159 493 l 377 90 l 387 0 l 304 0 l 30 493 m 327 90 l 541 493 l 323 897 l 314 987 l 397 987 l 671 493 l 399 0 l 316 0 l 327 90 z "},"":{"ha":399,"x_min":123,"x_max":279,"o":"m 123 187 q 143 241 123 219 q 201 263 163 263 q 259 241 239 263 q 279 187 279 219 q 259 134 279 156 q 201 113 239 113 q 143 134 163 113 q 123 187 123 156 m 123 785 q 143 839 123 817 q 201 861 163 861 q 259 839 239 861 q 279 785 279 817 q 259 732 279 754 q 201 711 239 711 q 143 732 163 711 q 123 785 123 754 z "},"":{"ha":445,"x_min":75,"x_max":382,"o":"m 170 734 l 170 429 l 75 429 l 75 734 l 170 734 m 382 734 l 382 429 l 287 429 l 287 734 l 382 734 z "},"":{"ha":350,"x_min":63,"x_max":233,"o":"m 233 162 l 233 109 q 209 -7 233 55 q 134 -110 184 -68 l 63 -60 q 101 19 88 -22 q 113 107 113 60 l 113 162 l 233 162 z "},"fi":{"ha":770,"x_min":22,"x_max":660,"o":"m 263 0 l 138 0 l 138 798 q 170 939 138 881 q 263 1026 203 996 q 406 1056 323 1056 q 502 1044 455 1056 q 598 1015 549 1032 l 577 909 q 505 932 546 921 q 415 943 464 943 q 299 907 334 943 q 263 798 263 871 l 263 0 m 413 734 l 413 637 l 22 637 l 22 734 l 413 734 m 660 734 l 660 0 l 534 0 l 534 734 l 660 734 z "},"fl":{"ha":789,"x_min":41,"x_max":680,"o":"m 283 0 l 157 0 l 157 811 q 187 945 157 890 q 272 1028 216 1000 q 408 1056 328 1056 q 483 1050 438 1056 q 579 1034 528 1044 q 680 1015 631 1025 l 621 924 q 505 942 557 936 q 418 949 454 949 q 343 933 374 949 q 298 886 313 917 q 283 811 283 856 l 283 0 m 554 0 l 554 1015 l 680 1015 l 680 0 l 554 0 m 439 734 l 439 637 l 41 637 l 41 734 l 439 734 z "},"ffi":{"ha":1185,"x_min":41,"x_max":1076,"o":"m 283 0 l 157 0 l 157 811 q 186 945 157 890 q 269 1028 215 1000 q 398 1056 323 1056 q 442 1053 420 1056 q 485 1045 464 1050 l 478 943 q 446 947 464 946 q 410 949 428 949 q 341 933 370 949 q 298 886 313 917 q 283 811 283 856 l 283 0 m 446 734 l 446 637 l 41 637 l 41 734 l 446 734 m 680 0 l 554 0 l 554 798 q 586 939 554 881 q 679 1026 618 996 q 822 1056 739 1056 q 918 1044 871 1056 q 1015 1015 965 1032 l 993 909 q 921 932 962 921 q 831 943 880 943 q 715 907 751 943 q 680 798 680 871 l 680 0 m 829 734 l 829 637 l 438 637 l 438 734 l 829 734 m 1076 734 l 1076 0 l 951 0 l 951 734 l 1076 734 z "},"ffl":{"ha":1185,"x_min":41,"x_max":1076,"o":"m 283 0 l 157 0 l 157 811 q 186 945 157 890 q 269 1028 215 1000 q 398 1056 323 1056 q 442 1053 420 1056 q 485 1045 464 1050 l 478 943 q 446 947 464 946 q 410 949 428 949 q 341 933 370 949 q 298 886 313 917 q 283 811 283 856 l 283 0 m 446 734 l 446 637 l 41 637 l 41 734 l 446 734 m 680 0 l 554 0 l 554 811 q 584 945 554 890 q 669 1028 613 1000 q 805 1056 725 1056 q 880 1050 835 1056 q 976 1034 925 1044 q 1076 1015 1027 1025 l 1018 924 q 902 942 954 936 q 814 949 850 949 q 740 933 770 949 q 695 886 710 917 q 680 811 680 856 l 680 0 m 951 0 l 951 1015 l 1076 1015 l 1076 0 l 951 0 m 836 734 l 836 637 l 438 637 l 438 734 l 836 734 z "},"\ufeff":{"ha":0,"x_min":0,"x_max":0,"o":""},"":{"ha":1424,"x_min":62,"x_max":1377,"o":"m 138 793 l 62 793 l 62 986 l 271 986 l 271 907 l 138 907 l 138 793 m 1301 907 l 1166 907 l 1166 986 l 1377 986 l 1377 793 l 1301 793 l 1301 907 m 271 -270 l 62 -270 l 62 -56 l 138 -56 l 138 -193 l 271 -193 l 271 -270 m 1377 -270 l 1166 -270 l 1166 -193 l 1301 -193 l 1301 -56 l 1377 -56 l 1377 -270 m 1084 -270 l 896 -270 l 896 -193 l 1084 -193 l 1084 -270 m 542 -270 l 355 -270 l 355 -193 l 542 -193 l 542 -270 m 542 907 l 355 907 l 355 986 l 542 986 l 542 907 m 1377 197 l 1377 28 l 1301 28 l 1301 197 l 1377 197 m 1377 708 l 1377 538 l 1301 538 l 1301 708 l 1377 708 m 813 -270 l 625 -270 l 625 -193 l 813 -193 l 813 -270 m 138 197 l 138 28 l 62 28 l 62 197 l 138 197 m 813 907 l 625 907 l 625 986 l 813 986 l 813 907 m 1084 907 l 896 907 l 896 986 l 1084 986 l 1084 907 m 138 453 l 138 282 l 62 282 l 62 453 l 138 453 m 138 708 l 138 538 l 62 538 l 62 708 l 138 708 m 1377 453 l 1377 282 l 1301 282 l 1301 453 l 1377 453 m 1144 288 l 1144 545 l 1206 545 l 1206 288 q 1170 203 1206 235 q 1080 172 1134 172 q 983 200 1020 172 q 946 283 946 227 l 1009 283 q 1028 237 1009 252 q 1080 222 1047 222 q 1126 240 1107 222 q 1144 288 1144 259 m 755 336 l 653 336 l 652 384 l 732 384 q 792 398 772 384 q 812 438 812 412 q 792 476 812 466 q 732 486 772 486 l 669 486 l 669 171 l 605 171 l 605 543 l 732 543 q 809 532 777 543 q 859 499 842 522 q 876 441 876 477 q 865 399 876 418 q 831 368 853 380 q 777 353 809 356 q 775 347 777 353 q 772 340 774 340 q 764 337 764 337 q 755 336 764 336 m 755 171 l 629 171 l 662 222 l 755 222 q 807 237 790 222 q 825 278 825 252 q 807 320 825 304 q 755 336 790 336 l 674 336 l 675 384 l 777 384 q 787 384 787 384 q 795 380 787 383 q 797 373 795 379 q 800 366 800 366 q 848 351 829 363 q 878 318 868 338 q 888 276 888 299 q 853 198 888 224 q 755 171 817 171 m 559 393 l 559 317 q 516 210 559 252 q 404 169 473 169 q 291 210 334 169 q 247 317 247 252 l 247 393 q 290 500 247 459 q 403 542 334 542 q 516 500 473 542 q 559 393 559 459 m 497 317 l 497 393 q 472 466 497 439 q 403 493 447 493 q 334 466 359 493 q 309 393 309 439 l 309 317 q 335 244 309 271 q 404 218 360 218 q 472 244 448 218 q 497 317 497 271 z "},"�":{"ha":1425,"x_min":62,"x_max":1361,"o":"m 62 436 l 711 1097 l 1361 436 l 711 -225 l 62 436 m 630 273 l 767 273 q 775 328 767 307 q 812 368 784 349 q 891 436 858 393 q 924 536 924 480 q 868 674 924 623 q 710 725 811 725 q 564 683 624 725 q 503 545 504 640 l 640 545 q 663 598 642 582 q 710 614 684 614 q 767 593 748 614 q 787 536 787 571 q 769 474 787 500 q 724 431 751 448 q 671 389 692 408 q 641 342 650 369 q 630 273 631 316 m 767 96 l 767 211 l 630 211 l 630 96 l 767 96 m 716 -376 l 716 -374 l 719 -374 l 719 -376 l 716 -376 m 715 1464 l 715 1467 l 718 1467 l 718 1464 l 715 1464 z "}," ":{"ha":345,"x_min":0,"x_max":0,"o":""},"­":{"ha":384,"x_min":26,"x_max":357,"o":"m 357 471 l 357 368 l 26 368 l 26 471 l 357 471 z "},"Đ":{"ha":932,"x_min":25,"x_max":850,"o":"m 402 0 l 196 0 l 197 106 l 402 106 q 578 151 508 106 q 685 276 649 195 q 720 464 720 356 l 720 524 q 700 675 720 609 q 640 787 680 741 q 544 857 601 833 q 414 880 488 880 l 192 880 l 192 987 l 414 987 q 591 955 511 987 q 729 862 671 923 q 819 716 787 802 q 850 523 850 630 l 850 464 q 819 271 850 357 q 729 125 787 185 q 588 32 670 64 q 402 0 505 0 m 266 987 l 266 0 l 135 0 l 135 987 l 266 987 m 457 554 l 457 451 l 25 451 l 25 554 l 457 554 z "},"Ð":{"ha":932,"x_min":25,"x_max":850,"o":"m 402 0 l 196 0 l 197 106 l 402 106 q 578 151 508 106 q 685 276 649 195 q 720 464 720 356 l 720 524 q 700 675 720 609 q 640 787 680 741 q 544 857 601 833 q 414 880 488 880 l 192 880 l 192 987 l 414 987 q 591 955 511 987 q 729 862 671 923 q 819 716 787 802 q 850 523 850 630 l 850 464 q 819 271 850 357 q 729 125 787 185 q 588 32 670 64 q 402 0 505 0 m 266 987 l 266 0 l 135 0 l 135 987 l 266 987 m 457 554 l 457 451 l 25 451 l 25 554 l 457 554 z "},"ħ":{"ha":785,"x_min":1,"x_max":693,"o":"m 241 1042 l 241 0 l 116 0 l 116 1042 l 241 1042 m 212 395 l 159 397 q 182 536 160 472 q 243 648 203 600 q 337 721 282 695 q 458 747 391 747 q 555 733 512 747 q 630 686 599 718 q 677 604 661 654 q 693 481 693 553 l 693 0 l 567 0 l 567 482 q 550 575 567 540 q 500 626 533 610 q 420 642 468 642 q 335 622 374 642 q 270 568 297 602 q 227 489 242 533 q 212 395 212 444 m 433 939 l 433 836 l 1 836 l 1 939 l 433 939 z "},"Ŧ":{"ha":829,"x_min":34,"x_max":797,"o":"m 479 987 l 479 0 l 351 0 l 351 987 l 479 987 m 797 987 l 797 880 l 34 880 l 34 987 l 797 987 m 637 661 l 637 557 l 205 557 l 205 661 l 637 661 z "},"ŧ":{"ha":454,"x_min":-8,"x_max":424,"o":"m 403 734 l 403 637 l 6 637 l 6 734 l 403 734 m 140 912 l 266 912 l 266 182 q 277 125 266 144 q 307 100 289 106 q 347 94 326 94 q 379 97 362 94 q 406 102 397 100 l 406 0 q 367 -9 391 -5 q 309 -14 343 -14 q 224 5 263 -14 q 163 66 186 23 q 140 182 140 109 l 140 912 m 424 511 l 424 408 l -8 408 l -8 511 l 424 511 z "},"À":{"ha":906,"x_min":20,"x_max":888,"o":"m 480 900 l 153 0 l 20 0 l 396 987 l 482 987 l 480 900 m 754 0 l 427 900 l 425 987 l 511 987 l 888 0 l 754 0 m 737 366 l 737 258 l 182 258 l 182 366 l 737 366 m 396 1253 l 527 1053 l 419 1053 l 244 1253 l 396 1253 z "},"Á":{"ha":906,"x_min":20,"x_max":888,"o":"m 480 900 l 153 0 l 20 0 l 396 987 l 482 987 l 480 900 m 754 0 l 427 900 l 425 987 l 511 987 l 888 0 l 754 0 m 737 366 l 737 258 l 182 258 l 182 366 l 737 366 m 387 1053 l 518 1253 l 669 1253 l 488 1053 l 387 1053 z "},"Â":{"ha":906,"x_min":20,"x_max":888,"o":"m 480 900 l 153 0 l 20 0 l 396 987 l 482 987 l 480 900 m 754 0 l 427 900 l 425 987 l 511 987 l 888 0 l 754 0 m 737 366 l 737 258 l 182 258 l 182 366 l 737 366 m 494 1253 l 662 1067 l 662 1061 l 557 1061 l 456 1175 l 355 1061 l 252 1061 l 252 1068 l 418 1253 l 494 1253 z "},"Ã":{"ha":906,"x_min":20,"x_max":888,"o":"m 480 900 l 153 0 l 20 0 l 396 987 l 482 987 l 480 900 m 754 0 l 427 900 l 425 987 l 511 987 l 888 0 l 754 0 m 737 366 l 737 258 l 182 258 l 182 366 l 737 366 m 612 1239 l 696 1232 q 677 1145 696 1182 q 624 1087 657 1107 q 550 1067 591 1067 q 493 1077 515 1067 q 453 1099 471 1086 q 416 1121 435 1112 q 368 1131 397 1131 q 320 1109 340 1131 q 301 1056 301 1088 l 216 1060 q 236 1147 216 1109 q 288 1206 255 1185 q 362 1227 321 1227 q 413 1218 391 1227 q 455 1195 435 1208 q 496 1173 475 1183 q 544 1163 517 1163 q 592 1185 572 1163 q 612 1239 612 1207 z "},"Ä":{"ha":906,"x_min":20,"x_max":888,"o":"m 480 900 l 153 0 l 20 0 l 396 987 l 482 987 l 480 900 m 754 0 l 427 900 l 425 987 l 511 987 l 888 0 l 754 0 m 737 366 l 737 258 l 182 258 l 182 366 l 737 366 m 237 1141 q 256 1192 237 1171 q 311 1213 275 1213 q 367 1192 348 1213 q 386 1141 386 1171 q 367 1091 386 1112 q 311 1070 348 1070 q 256 1091 275 1070 q 237 1141 237 1112 m 530 1139 q 548 1191 530 1170 q 604 1212 567 1212 q 659 1191 640 1212 q 678 1139 678 1170 q 659 1089 678 1110 q 604 1069 640 1069 q 548 1089 567 1069 q 530 1139 530 1110 z "},"Å":{"ha":906,"x_min":20,"x_max":888,"o":"m 480 900 l 153 0 l 20 0 l 396 987 l 482 987 l 480 900 m 754 0 l 427 900 l 425 987 l 511 987 l 888 0 l 754 0 m 737 366 l 737 258 l 182 258 l 182 366 l 737 366 m 310 1174 q 329 1245 310 1213 q 381 1296 349 1277 q 456 1315 414 1315 q 559 1274 517 1315 q 602 1174 602 1232 q 582 1103 602 1135 q 530 1054 563 1072 q 456 1036 497 1036 q 352 1075 394 1036 q 310 1174 310 1114 m 377 1174 q 399 1120 377 1144 q 456 1096 421 1096 q 512 1119 490 1096 q 534 1174 534 1143 q 512 1230 534 1206 q 456 1254 490 1254 q 399 1230 421 1254 q 377 1174 377 1206 z "},"Ǻ":{"ha":906,"x_min":20,"x_max":888,"o":"m 480 900 l 153 0 l 20 0 l 396 987 l 482 987 l 480 900 m 754 0 l 427 900 l 425 987 l 511 987 l 888 0 l 754 0 m 737 366 l 737 258 l 182 258 l 182 366 l 737 366 m 429 1192 l 528 1316 l 656 1316 l 507 1192 l 429 1192 m 342 1045 q 376 1127 342 1095 q 458 1158 410 1158 q 538 1127 505 1158 q 572 1045 572 1095 q 538 965 572 996 q 458 935 505 935 q 376 965 410 935 q 342 1045 342 996 m 399 1045 q 416 1005 399 1021 q 458 988 434 988 q 498 1005 481 988 q 515 1045 515 1021 q 498 1088 515 1071 q 458 1105 481 1105 q 416 1088 434 1105 q 399 1045 399 1071 z "},"Ç":{"ha":904,"x_min":81,"x_max":841,"o":"m 711 314 l 841 314 q 787 146 831 220 q 665 30 744 73 q 467 -14 585 -14 q 309 19 380 -14 q 187 112 238 52 q 109 256 136 172 q 81 444 81 340 l 81 543 q 109 731 81 646 q 188 876 136 815 q 313 968 240 936 q 478 1001 387 1001 q 667 959 590 1001 q 788 843 745 917 q 841 671 831 768 l 711 671 q 675 790 701 740 q 602 867 650 840 q 478 894 555 894 q 362 869 412 894 q 279 798 313 844 q 229 687 245 751 q 212 544 212 623 l 212 444 q 227 308 212 372 q 273 196 242 244 q 353 120 304 148 q 467 93 401 93 q 600 119 550 93 q 674 195 649 146 q 711 314 700 245 m 420 -7 l 510 -7 l 502 -43 q 573 -75 541 -50 q 606 -160 606 -101 q 592 -218 606 -192 q 553 -263 579 -244 q 489 -292 528 -281 q 400 -302 451 -302 l 395 -229 q 452 -222 427 -229 q 493 -201 477 -216 q 508 -162 508 -186 q 496 -127 508 -140 q 461 -107 485 -114 q 399 -98 437 -101 l 420 -7 z "},"È":{"ha":789,"x_min":115,"x_max":742,"o":"m 742 106 l 742 0 l 219 0 l 219 106 l 742 106 m 245 987 l 245 0 l 115 0 l 115 987 l 245 987 m 673 563 l 673 456 l 219 456 l 219 563 l 673 563 m 735 987 l 735 880 l 219 880 l 219 987 l 735 987 m 360 1260 l 491 1061 l 383 1061 l 208 1260 l 360 1260 z "},"É":{"ha":789,"x_min":115,"x_max":742,"o":"m 742 106 l 742 0 l 219 0 l 219 106 l 742 106 m 245 987 l 245 0 l 115 0 l 115 987 l 245 987 m 673 563 l 673 456 l 219 456 l 219 563 l 673 563 m 735 987 l 735 880 l 219 880 l 219 987 l 735 987 m 351 1061 l 482 1260 l 633 1260 l 452 1061 l 351 1061 z "},"Ê":{"ha":789,"x_min":115,"x_max":742,"o":"m 742 106 l 742 0 l 219 0 l 219 106 l 742 106 m 245 987 l 245 0 l 115 0 l 115 987 l 245 987 m 673 563 l 673 456 l 219 456 l 219 563 l 673 563 m 735 987 l 735 880 l 219 880 l 219 987 l 735 987 m 458 1260 l 626 1075 l 626 1068 l 522 1068 l 420 1183 l 319 1068 l 216 1068 l 216 1076 l 382 1260 l 458 1260 z "},"Ë":{"ha":789,"x_min":115,"x_max":742,"o":"m 742 106 l 742 0 l 219 0 l 219 106 l 742 106 m 245 987 l 245 0 l 115 0 l 115 987 l 245 987 m 673 563 l 673 456 l 219 456 l 219 563 l 673 563 m 735 987 l 735 880 l 219 880 l 219 987 l 735 987 m 201 1148 q 220 1200 201 1179 q 275 1221 239 1221 q 331 1200 312 1221 q 350 1148 350 1179 q 331 1098 350 1119 q 275 1078 312 1078 q 220 1098 239 1078 q 201 1148 201 1119 m 494 1147 q 512 1198 494 1177 q 568 1219 531 1219 q 623 1198 604 1219 q 642 1147 642 1177 q 623 1097 642 1118 q 568 1076 604 1076 q 512 1097 531 1076 q 494 1147 494 1118 z "},"Ì":{"ha":378,"x_min":-22,"x_max":260,"o":"m 255 987 l 255 0 l 124 0 l 124 987 l 255 987 m 130 1260 l 260 1061 l 153 1061 l -22 1260 l 130 1260 z "},"Í":{"ha":378,"x_min":120,"x_max":403,"o":"m 255 987 l 255 0 l 124 0 l 124 987 l 255 987 m 120 1061 l 252 1260 l 403 1260 l 221 1061 l 120 1061 z "},"Î":{"ha":378,"x_min":-15,"x_max":395,"o":"m 255 987 l 255 0 l 124 0 l 124 987 l 255 987 m 227 1260 l 395 1075 l 395 1068 l 291 1068 l 189 1183 l 88 1068 l -15 1068 l -15 1076 l 151 1260 l 227 1260 z "},"Ï":{"ha":378,"x_min":-29,"x_max":412,"o":"m 255 987 l 255 0 l 124 0 l 124 987 l 255 987 m -29 1148 q -10 1200 -29 1179 q 45 1221 9 1221 q 100 1200 81 1221 q 119 1148 119 1179 q 100 1098 119 1119 q 45 1078 81 1078 q -10 1098 9 1078 q -29 1148 -29 1119 m 263 1147 q 282 1198 263 1177 q 337 1219 300 1219 q 392 1198 373 1219 q 412 1147 412 1177 q 392 1097 412 1118 q 337 1076 373 1076 q 282 1097 300 1076 q 263 1147 263 1118 z "},"Ñ":{"ha":991,"x_min":115,"x_max":874,"o":"m 874 987 l 874 0 l 743 0 l 245 762 l 245 0 l 115 0 l 115 987 l 245 987 l 745 224 l 745 987 l 874 987 m 648 1239 l 733 1232 q 713 1145 733 1182 q 661 1087 694 1107 q 587 1067 628 1067 q 530 1077 552 1067 q 490 1099 507 1086 q 453 1121 472 1112 q 405 1131 433 1131 q 357 1109 376 1131 q 338 1056 338 1088 l 253 1060 q 272 1147 253 1109 q 325 1206 292 1185 q 399 1227 358 1227 q 450 1218 428 1227 q 492 1195 472 1208 q 532 1173 511 1183 q 581 1163 553 1163 q 629 1185 609 1163 q 648 1239 648 1207 z "},"Ò":{"ha":956,"x_min":81,"x_max":875,"o":"m 875 525 l 875 463 q 847 263 875 351 q 767 113 819 175 q 642 19 715 52 q 479 -14 569 -14 q 318 19 391 -14 q 192 113 245 52 q 110 263 139 175 q 81 463 81 351 l 81 525 q 110 724 81 636 q 191 874 138 812 q 317 968 244 936 q 477 1001 390 1001 q 641 968 568 1001 q 766 874 713 936 q 847 724 819 812 q 875 525 875 636 m 745 463 l 745 526 q 727 682 745 614 q 675 796 709 750 q 590 866 640 842 q 477 890 541 890 q 367 866 416 890 q 283 796 318 842 q 229 682 248 750 q 210 526 210 614 l 210 463 q 229 306 210 374 q 284 191 248 237 q 369 121 319 144 q 479 97 418 97 q 592 121 543 97 q 676 191 642 144 q 728 306 710 237 q 745 463 745 374 m 420 1254 l 551 1055 l 443 1055 l 268 1254 l 420 1254 z "},"Ó":{"ha":956,"x_min":81,"x_max":875,"o":"m 875 525 l 875 463 q 847 263 875 351 q 767 113 819 175 q 642 19 715 52 q 479 -14 569 -14 q 318 19 391 -14 q 192 113 245 52 q 110 263 139 175 q 81 463 81 351 l 81 525 q 110 724 81 636 q 191 874 138 812 q 317 968 244 936 q 477 1001 390 1001 q 641 968 568 1001 q 766 874 713 936 q 847 724 819 812 q 875 525 875 636 m 745 463 l 745 526 q 727 682 745 614 q 675 796 709 750 q 590 866 640 842 q 477 890 541 890 q 367 866 416 890 q 283 796 318 842 q 229 682 248 750 q 210 526 210 614 l 210 463 q 229 306 210 374 q 284 191 248 237 q 369 121 319 144 q 479 97 418 97 q 592 121 543 97 q 676 191 642 144 q 728 306 710 237 q 745 463 745 374 m 410 1055 l 542 1254 l 693 1254 l 511 1055 l 410 1055 z "},"Ô":{"ha":956,"x_min":81,"x_max":875,"o":"m 875 525 l 875 463 q 847 263 875 351 q 767 113 819 175 q 642 19 715 52 q 479 -14 569 -14 q 318 19 391 -14 q 192 113 245 52 q 110 263 139 175 q 81 463 81 351 l 81 525 q 110 724 81 636 q 191 874 138 812 q 317 968 244 936 q 477 1001 390 1001 q 641 968 568 1001 q 766 874 713 936 q 847 724 819 812 q 875 525 875 636 m 745 463 l 745 526 q 727 682 745 614 q 675 796 709 750 q 590 866 640 842 q 477 890 541 890 q 367 866 416 890 q 283 796 318 842 q 229 682 248 750 q 210 526 210 614 l 210 463 q 229 306 210 374 q 284 191 248 237 q 369 121 319 144 q 479 97 418 97 q 592 121 543 97 q 676 191 642 144 q 728 306 710 237 q 745 463 745 374 m 517 1254 l 686 1069 l 686 1062 l 581 1062 l 479 1177 l 378 1062 l 275 1062 l 275 1069 l 441 1254 l 517 1254 z "},"Õ":{"ha":956,"x_min":81,"x_max":875,"o":"m 875 525 l 875 463 q 847 263 875 351 q 767 113 819 175 q 642 19 715 52 q 479 -14 569 -14 q 318 19 391 -14 q 192 113 245 52 q 110 263 139 175 q 81 463 81 351 l 81 525 q 110 724 81 636 q 191 874 138 812 q 317 968 244 936 q 477 1001 390 1001 q 641 968 568 1001 q 766 874 713 936 q 847 724 819 812 q 875 525 875 636 m 745 463 l 745 526 q 727 682 745 614 q 675 796 709 750 q 590 866 640 842 q 477 890 541 890 q 367 866 416 890 q 283 796 318 842 q 229 682 248 750 q 210 526 210 614 l 210 463 q 229 306 210 374 q 284 191 248 237 q 369 121 319 144 q 479 97 418 97 q 592 121 543 97 q 676 191 642 144 q 728 306 710 237 q 745 463 745 374 m 635 1240 l 720 1233 q 701 1146 720 1183 q 648 1088 681 1109 q 574 1068 615 1068 q 517 1078 539 1068 q 477 1100 494 1088 q 440 1123 459 1113 q 392 1133 420 1133 q 344 1111 363 1133 q 325 1057 325 1089 l 240 1061 q 259 1148 240 1111 q 312 1207 279 1186 q 386 1229 345 1229 q 437 1219 415 1229 q 479 1197 459 1209 q 519 1174 498 1184 q 568 1164 541 1164 q 616 1186 596 1164 q 635 1240 635 1208 z "},"Ö":{"ha":956,"x_min":81,"x_max":875,"o":"m 875 525 l 875 463 q 847 263 875 351 q 767 113 819 175 q 642 19 715 52 q 479 -14 569 -14 q 318 19 391 -14 q 192 113 245 52 q 110 263 139 175 q 81 463 81 351 l 81 525 q 110 724 81 636 q 191 874 138 812 q 317 968 244 936 q 477 1001 390 1001 q 641 968 568 1001 q 766 874 713 936 q 847 724 819 812 q 875 525 875 636 m 745 463 l 745 526 q 727 682 745 614 q 675 796 709 750 q 590 866 640 842 q 477 890 541 890 q 367 866 416 890 q 283 796 318 842 q 229 682 248 750 q 210 526 210 614 l 210 463 q 229 306 210 374 q 284 191 248 237 q 369 121 319 144 q 479 97 418 97 q 592 121 543 97 q 676 191 642 144 q 728 306 710 237 q 745 463 745 374 m 261 1142 q 280 1194 261 1173 q 335 1215 299 1215 q 391 1194 372 1215 q 410 1142 410 1173 q 391 1092 410 1113 q 335 1072 372 1072 q 280 1092 299 1072 q 261 1142 261 1113 m 553 1141 q 572 1192 553 1171 q 627 1213 591 1213 q 683 1192 663 1213 q 702 1141 702 1171 q 683 1091 702 1112 q 627 1070 663 1070 q 572 1091 591 1070 q 553 1141 553 1112 z "},"Ù":{"ha":901,"x_min":95,"x_max":810,"o":"m 680 987 l 810 987 l 810 319 q 760 134 810 208 q 629 23 711 60 q 452 -14 547 -14 q 270 23 351 -14 q 142 134 189 60 q 95 319 95 208 l 95 987 l 224 987 l 224 319 q 253 192 224 242 q 333 117 281 142 q 452 93 384 93 q 571 117 520 93 q 651 192 623 142 q 680 319 680 242 l 680 987 m 393 1253 l 524 1053 l 416 1053 l 241 1253 l 393 1253 z "},"Ú":{"ha":901,"x_min":95,"x_max":810,"o":"m 680 987 l 810 987 l 810 319 q 760 134 810 208 q 629 23 711 60 q 452 -14 547 -14 q 270 23 351 -14 q 142 134 189 60 q 95 319 95 208 l 95 987 l 224 987 l 224 319 q 253 192 224 242 q 333 117 281 142 q 452 93 384 93 q 571 117 520 93 q 651 192 623 142 q 680 319 680 242 l 680 987 m 383 1053 l 515 1253 l 666 1253 l 484 1053 l 383 1053 z "},"Û":{"ha":901,"x_min":95,"x_max":810,"o":"m 680 987 l 810 987 l 810 319 q 760 134 810 208 q 629 23 711 60 q 452 -14 547 -14 q 270 23 351 -14 q 142 134 189 60 q 95 319 95 208 l 95 987 l 224 987 l 224 319 q 253 192 224 242 q 333 117 281 142 q 452 93 384 93 q 571 117 520 93 q 651 192 623 142 q 680 319 680 242 l 680 987 m 490 1253 l 659 1067 l 659 1061 l 554 1061 l 452 1175 l 351 1061 l 248 1061 l 248 1068 l 414 1253 l 490 1253 z "},"Ü":{"ha":901,"x_min":95,"x_max":810,"o":"m 680 987 l 810 987 l 810 319 q 760 134 810 208 q 629 23 711 60 q 452 -14 547 -14 q 270 23 351 -14 q 142 134 189 60 q 95 319 95 208 l 95 987 l 224 987 l 224 319 q 253 192 224 242 q 333 117 281 142 q 452 93 384 93 q 571 117 520 93 q 651 192 623 142 q 680 319 680 242 l 680 987 m 234 1141 q 253 1192 234 1171 q 308 1213 272 1213 q 363 1192 345 1213 q 382 1141 382 1171 q 363 1091 382 1112 q 308 1070 345 1070 q 253 1091 272 1070 q 234 1141 234 1112 m 526 1139 q 545 1191 526 1170 q 600 1212 564 1212 q 655 1191 636 1212 q 675 1139 675 1170 q 655 1089 675 1110 q 600 1069 636 1069 q 545 1089 564 1069 q 526 1139 526 1110 z "},"Ý":{"ha":834,"x_min":10,"x_max":822,"o":"m 160 987 l 416 492 l 673 987 l 822 987 l 481 369 l 481 0 l 351 0 l 351 369 l 10 987 l 160 987 m 350 1053 l 481 1252 l 633 1252 l 451 1053 l 350 1053 z "},"à":{"ha":755,"x_min":74,"x_max":680,"o":"m 528 125 l 528 503 q 511 579 528 547 q 459 629 494 611 q 374 646 425 646 q 291 630 326 646 q 235 587 255 614 q 215 530 215 561 l 90 530 q 110 608 90 570 q 169 679 130 647 q 261 729 207 710 q 381 747 315 747 q 523 720 461 747 q 619 638 584 693 q 654 502 654 584 l 654 160 q 660 82 654 123 q 680 11 667 41 l 680 0 l 549 0 q 534 58 539 22 q 528 125 528 94 m 550 445 l 551 357 l 425 357 q 329 348 371 357 q 258 323 287 340 q 215 280 230 306 q 200 221 200 255 q 216 158 200 186 q 263 113 231 130 q 340 96 294 96 q 442 121 398 96 q 512 180 486 145 q 541 249 538 216 l 594 189 q 568 125 589 160 q 512 59 547 91 q 430 7 477 28 q 322 -14 382 -14 q 192 16 248 -14 q 105 94 136 45 q 74 204 74 143 q 97 308 74 263 q 163 384 120 353 q 268 429 207 414 q 404 445 329 445 l 550 445 m 335 1042 l 466 842 l 358 842 l 183 1042 l 335 1042 z "},"á":{"ha":755,"x_min":74,"x_max":680,"o":"m 528 125 l 528 503 q 511 579 528 547 q 459 629 494 611 q 374 646 425 646 q 291 630 326 646 q 235 587 255 614 q 215 530 215 561 l 90 530 q 110 608 90 570 q 169 679 130 647 q 261 729 207 710 q 381 747 315 747 q 523 720 461 747 q 619 638 584 693 q 654 502 654 584 l 654 160 q 660 82 654 123 q 680 11 667 41 l 680 0 l 549 0 q 534 58 539 22 q 528 125 528 94 m 550 445 l 551 357 l 425 357 q 329 348 371 357 q 258 323 287 340 q 215 280 230 306 q 200 221 200 255 q 216 158 200 186 q 263 113 231 130 q 340 96 294 96 q 442 121 398 96 q 512 180 486 145 q 541 249 538 216 l 594 189 q 568 125 589 160 q 512 59 547 91 q 430 7 477 28 q 322 -14 382 -14 q 192 16 248 -14 q 105 94 136 45 q 74 204 74 143 q 97 308 74 263 q 163 384 120 353 q 268 429 207 414 q 404 445 329 445 l 550 445 m 326 842 l 457 1042 l 608 1042 l 427 842 l 326 842 z "},"â":{"ha":755,"x_min":74,"x_max":680,"o":"m 528 125 l 528 503 q 511 579 528 547 q 459 629 494 611 q 374 646 425 646 q 291 630 326 646 q 235 587 255 614 q 215 530 215 561 l 90 530 q 110 608 90 570 q 169 679 130 647 q 261 729 207 710 q 381 747 315 747 q 523 720 461 747 q 619 638 584 693 q 654 502 654 584 l 654 160 q 660 82 654 123 q 680 11 667 41 l 680 0 l 549 0 q 534 58 539 22 q 528 125 528 94 m 550 445 l 551 357 l 425 357 q 329 348 371 357 q 258 323 287 340 q 215 280 230 306 q 200 221 200 255 q 216 158 200 186 q 263 113 231 130 q 340 96 294 96 q 442 121 398 96 q 512 180 486 145 q 541 249 538 216 l 594 189 q 568 125 589 160 q 512 59 547 91 q 430 7 477 28 q 322 -14 382 -14 q 192 16 248 -14 q 105 94 136 45 q 74 204 74 143 q 97 308 74 263 q 163 384 120 353 q 268 429 207 414 q 404 445 329 445 l 550 445 m 433 1042 l 601 857 l 601 850 l 496 850 l 395 964 l 294 850 l 191 850 l 191 857 l 357 1042 l 433 1042 z "},"ã":{"ha":755,"x_min":74,"x_max":680,"o":"m 528 125 l 528 503 q 511 579 528 547 q 459 629 494 611 q 374 646 425 646 q 291 630 326 646 q 235 587 255 614 q 215 530 215 561 l 90 530 q 110 608 90 570 q 169 679 130 647 q 261 729 207 710 q 381 747 315 747 q 523 720 461 747 q 619 638 584 693 q 654 502 654 584 l 654 160 q 660 82 654 123 q 680 11 667 41 l 680 0 l 549 0 q 534 58 539 22 q 528 125 528 94 m 550 445 l 551 357 l 425 357 q 329 348 371 357 q 258 323 287 340 q 215 280 230 306 q 200 221 200 255 q 216 158 200 186 q 263 113 231 130 q 340 96 294 96 q 442 121 398 96 q 512 180 486 145 q 541 249 538 216 l 594 189 q 568 125 589 160 q 512 59 547 91 q 430 7 477 28 q 322 -14 382 -14 q 192 16 248 -14 q 105 94 136 45 q 74 204 74 143 q 97 308 74 263 q 163 384 120 353 q 268 429 207 414 q 404 445 329 445 l 550 445 m 551 1028 l 635 1021 q 616 934 635 971 q 563 876 596 897 q 489 856 530 856 q 432 866 454 856 q 392 888 410 876 q 355 910 374 901 q 307 920 336 920 q 259 899 279 920 q 240 845 240 877 l 155 849 q 175 936 155 899 q 227 995 194 974 q 301 1017 260 1017 q 352 1007 330 1017 q 394 984 374 997 q 435 962 414 972 q 483 952 456 952 q 531 974 511 952 q 551 1028 551 996 z "},"ä":{"ha":755,"x_min":74,"x_max":680,"o":"m 528 125 l 528 503 q 511 579 528 547 q 459 629 494 611 q 374 646 425 646 q 291 630 326 646 q 235 587 255 614 q 215 530 215 561 l 90 530 q 110 608 90 570 q 169 679 130 647 q 261 729 207 710 q 381 747 315 747 q 523 720 461 747 q 619 638 584 693 q 654 502 654 584 l 654 160 q 660 82 654 123 q 680 11 667 41 l 680 0 l 549 0 q 534 58 539 22 q 528 125 528 94 m 550 445 l 551 357 l 425 357 q 329 348 371 357 q 258 323 287 340 q 215 280 230 306 q 200 221 200 255 q 216 158 200 186 q 263 113 231 130 q 340 96 294 96 q 442 121 398 96 q 512 180 486 145 q 541 249 538 216 l 594 189 q 568 125 589 160 q 512 59 547 91 q 430 7 477 28 q 322 -14 382 -14 q 192 16 248 -14 q 105 94 136 45 q 74 204 74 143 q 97 308 74 263 q 163 384 120 353 q 268 429 207 414 q 404 445 329 445 l 550 445 m 176 930 q 195 981 176 960 q 250 1002 214 1002 q 306 981 287 1002 q 325 930 325 960 q 306 880 325 901 q 250 859 287 859 q 195 880 214 859 q 176 930 176 901 m 469 928 q 487 980 469 959 q 543 1001 506 1001 q 598 980 578 1001 q 617 928 617 959 q 598 879 617 899 q 543 858 578 858 q 487 879 506 858 q 469 928 469 899 z "},"å":{"ha":755,"x_min":74,"x_max":680,"o":"m 528 125 l 528 503 q 511 579 528 547 q 459 629 494 611 q 374 646 425 646 q 291 630 326 646 q 235 587 255 614 q 215 530 215 561 l 90 530 q 110 608 90 570 q 169 679 130 647 q 261 729 207 710 q 381 747 315 747 q 523 720 461 747 q 619 638 584 693 q 654 502 654 584 l 654 160 q 660 82 654 123 q 680 11 667 41 l 680 0 l 549 0 q 534 58 539 22 q 528 125 528 94 m 550 445 l 551 357 l 425 357 q 329 348 371 357 q 258 323 287 340 q 215 280 230 306 q 200 221 200 255 q 216 158 200 186 q 263 113 231 130 q 340 96 294 96 q 442 121 398 96 q 512 180 486 145 q 541 249 538 216 l 594 189 q 568 125 589 160 q 512 59 547 91 q 430 7 477 28 q 322 -14 382 -14 q 192 16 248 -14 q 105 94 136 45 q 74 204 74 143 q 97 308 74 263 q 163 384 120 353 q 268 429 207 414 q 404 445 329 445 l 550 445 m 249 963 q 268 1034 249 1002 q 320 1085 288 1066 q 395 1104 353 1104 q 498 1063 456 1104 q 541 963 541 1021 q 521 892 541 924 q 469 843 502 861 q 395 825 436 825 q 291 864 333 825 q 249 963 249 903 m 316 963 q 338 909 316 933 q 395 885 360 885 q 451 908 429 885 q 473 963 473 932 q 451 1019 473 995 q 395 1043 429 1043 q 338 1019 360 1043 q 316 963 316 995 z "},"ǻ":{"ha":755,"x_min":74,"x_max":680,"o":"m 528 125 l 528 503 q 511 579 528 547 q 459 629 494 611 q 374 646 425 646 q 291 630 326 646 q 235 587 255 614 q 215 530 215 561 l 90 530 q 110 608 90 570 q 169 679 130 647 q 261 729 207 710 q 381 747 315 747 q 523 720 461 747 q 619 638 584 693 q 654 502 654 584 l 654 160 q 660 82 654 123 q 680 11 667 41 l 680 0 l 549 0 q 534 58 539 22 q 528 125 528 94 m 550 445 l 551 357 l 425 357 q 329 348 371 357 q 258 323 287 340 q 215 280 230 306 q 200 221 200 255 q 216 158 200 186 q 263 113 231 130 q 340 96 294 96 q 442 121 398 96 q 512 180 486 145 q 541 249 538 216 l 594 189 q 568 125 589 160 q 512 59 547 91 q 430 7 477 28 q 322 -14 382 -14 q 192 16 248 -14 q 105 94 136 45 q 74 204 74 143 q 97 308 74 263 q 163 384 120 353 q 268 429 207 414 q 404 445 329 445 l 550 445 m 368 981 l 467 1105 l 595 1105 l 446 981 l 368 981 m 281 834 q 315 916 281 884 q 397 947 349 947 q 477 916 444 947 q 511 834 511 884 q 477 754 511 785 q 397 724 444 724 q 315 754 349 724 q 281 834 281 785 m 338 834 q 355 794 338 810 q 397 777 373 777 q 437 794 420 777 q 454 834 454 810 q 437 877 454 860 q 397 894 420 894 q 355 877 373 894 q 338 834 338 860 z "},"ç":{"ha":727,"x_min":63,"x_max":682,"o":"m 389 90 q 472 108 434 90 q 534 158 510 126 q 562 232 559 191 l 682 232 q 638 111 678 167 q 532 21 597 55 q 389 -14 467 -14 q 245 16 307 -14 q 143 96 184 45 q 83 213 103 146 q 63 353 63 279 l 63 381 q 83 521 63 455 q 143 638 103 587 q 245 718 184 689 q 389 747 307 747 q 540 712 475 747 q 641 617 604 677 q 682 481 678 557 l 562 481 q 537 564 559 527 q 477 622 515 600 q 389 644 439 644 q 293 622 332 644 q 231 561 254 599 q 198 476 208 522 q 189 381 189 429 l 189 353 q 198 258 189 304 q 230 173 208 211 q 292 112 253 135 q 389 90 331 90 m 320 -7 l 410 -7 l 402 -43 q 474 -75 441 -50 q 506 -160 506 -101 q 493 -218 506 -192 q 454 -263 479 -244 q 390 -292 428 -281 q 300 -302 351 -302 l 296 -229 q 352 -222 327 -229 q 393 -201 378 -216 q 408 -162 408 -186 q 397 -127 408 -140 q 361 -107 385 -114 q 299 -98 337 -101 l 320 -7 z "},"è":{"ha":736,"x_min":63,"x_max":686,"o":"m 400 -14 q 261 13 323 -14 q 155 86 199 39 q 87 199 111 134 q 63 341 63 264 l 63 370 q 90 529 63 459 q 161 648 116 600 q 264 722 207 697 q 384 747 322 747 q 520 720 463 747 q 614 645 577 693 q 668 531 650 596 q 686 388 686 465 l 686 332 l 138 332 l 138 434 l 560 434 l 560 444 q 540 538 557 492 q 486 614 523 585 q 384 644 448 644 q 305 626 341 644 q 243 573 269 608 q 203 487 218 538 q 189 370 189 436 l 189 341 q 204 243 189 289 q 247 163 218 197 q 315 109 275 128 q 407 89 355 89 q 519 116 473 89 q 600 189 566 143 l 676 128 q 616 60 652 92 q 526 7 579 27 q 400 -14 473 -14 m 323 1042 l 454 842 l 347 842 l 172 1042 l 323 1042 z "},"é":{"ha":736,"x_min":63,"x_max":686,"o":"m 400 -14 q 261 13 323 -14 q 155 86 199 39 q 87 199 111 134 q 63 341 63 264 l 63 370 q 90 529 63 459 q 161 648 116 600 q 264 722 207 697 q 384 747 322 747 q 520 720 463 747 q 614 645 577 693 q 668 531 650 596 q 686 388 686 465 l 686 332 l 138 332 l 138 434 l 560 434 l 560 444 q 540 538 557 492 q 486 614 523 585 q 384 644 448 644 q 305 626 341 644 q 243 573 269 608 q 203 487 218 538 q 189 370 189 436 l 189 341 q 204 243 189 289 q 247 163 218 197 q 315 109 275 128 q 407 89 355 89 q 519 116 473 89 q 600 189 566 143 l 676 128 q 616 60 652 92 q 526 7 579 27 q 400 -14 473 -14 m 314 842 l 446 1042 l 597 1042 l 415 842 l 314 842 z "},"ê":{"ha":736,"x_min":63,"x_max":686,"o":"m 400 -14 q 261 13 323 -14 q 155 86 199 39 q 87 199 111 134 q 63 341 63 264 l 63 370 q 90 529 63 459 q 161 648 116 600 q 264 722 207 697 q 384 747 322 747 q 520 720 463 747 q 614 645 577 693 q 668 531 650 596 q 686 388 686 465 l 686 332 l 138 332 l 138 434 l 560 434 l 560 444 q 540 538 557 492 q 486 614 523 585 q 384 644 448 644 q 305 626 341 644 q 243 573 269 608 q 203 487 218 538 q 189 370 189 436 l 189 341 q 204 243 189 289 q 247 163 218 197 q 315 109 275 128 q 407 89 355 89 q 519 116 473 89 q 600 189 566 143 l 676 128 q 616 60 652 92 q 526 7 579 27 q 400 -14 473 -14 m 421 1042 l 589 857 l 589 850 l 485 850 l 383 964 l 282 850 l 179 850 l 179 857 l 345 1042 l 421 1042 z "},"ë":{"ha":736,"x_min":63,"x_max":686,"o":"m 400 -14 q 261 13 323 -14 q 155 86 199 39 q 87 199 111 134 q 63 341 63 264 l 63 370 q 90 529 63 459 q 161 648 116 600 q 264 722 207 697 q 384 747 322 747 q 520 720 463 747 q 614 645 577 693 q 668 531 650 596 q 686 388 686 465 l 686 332 l 138 332 l 138 434 l 560 434 l 560 444 q 540 538 557 492 q 486 614 523 585 q 384 644 448 644 q 305 626 341 644 q 243 573 269 608 q 203 487 218 538 q 189 370 189 436 l 189 341 q 204 243 189 289 q 247 163 218 197 q 315 109 275 128 q 407 89 355 89 q 519 116 473 89 q 600 189 566 143 l 676 128 q 616 60 652 92 q 526 7 579 27 q 400 -14 473 -14 m 165 930 q 184 981 165 960 q 239 1002 203 1002 q 294 981 275 1002 q 313 930 313 960 q 294 880 313 901 q 239 859 275 859 q 184 880 203 859 q 165 930 165 901 m 457 928 q 476 980 457 959 q 531 1001 494 1001 q 586 980 567 1001 q 606 928 606 959 q 586 879 606 899 q 531 858 567 858 q 476 879 494 858 q 457 928 457 899 z "},"ì":{"ha":344,"x_min":-41,"x_max":242,"o":"m 231 734 l 231 0 l 106 0 l 106 734 l 231 734 m 111 1040 l 242 841 l 134 841 l -41 1040 l 111 1040 z "},"í":{"ha":344,"x_min":102,"x_max":385,"o":"m 231 734 l 231 0 l 106 0 l 106 734 l 231 734 m 102 841 l 233 1040 l 385 1040 l 203 841 l 102 841 z "},"î":{"ha":344,"x_min":-33,"x_max":377,"o":"m 231 734 l 231 0 l 106 0 l 106 734 l 231 734 m 209 1040 l 377 855 l 377 848 l 273 848 l 171 963 l 70 848 l -33 848 l -33 856 l 133 1040 l 209 1040 z "},"ï":{"ha":344,"x_min":-47,"x_max":393,"o":"m 231 734 l 231 0 l 106 0 l 106 734 l 231 734 m -47 928 q -28 980 -47 959 q 26 1001 -9 1001 q 82 980 63 1001 q 101 928 101 959 q 82 879 101 899 q 26 858 63 858 q -28 879 -9 858 q -47 928 -47 899 m 245 927 q 263 979 245 958 q 319 1000 282 1000 q 374 979 355 1000 q 393 927 393 958 q 374 877 393 898 q 319 857 355 857 q 263 877 282 857 q 245 927 245 898 z "},"ñ":{"ha":767,"x_min":96,"x_max":673,"o":"m 221 577 l 221 0 l 96 0 l 96 734 l 214 734 l 221 577 m 191 395 l 139 397 q 161 536 140 472 q 222 648 183 600 q 316 721 262 695 q 437 747 371 747 q 535 733 492 747 q 609 686 578 718 q 656 604 640 654 q 673 481 673 553 l 673 0 l 547 0 l 547 482 q 530 575 547 540 q 480 626 513 610 q 400 642 448 642 q 315 622 353 642 q 249 568 277 602 q 207 489 222 533 q 191 395 191 444 m 545 1028 l 629 1021 q 610 934 629 971 q 557 876 590 897 q 483 856 524 856 q 426 866 448 856 q 386 888 404 876 q 349 910 368 901 q 301 920 330 920 q 253 899 273 920 q 234 845 234 877 l 149 849 q 169 936 149 899 q 221 995 188 974 q 295 1017 254 1017 q 346 1007 324 1017 q 388 984 368 997 q 429 962 408 972 q 477 952 450 952 q 525 974 505 952 q 545 1028 545 996 z "},"ò":{"ha":792,"x_min":62,"x_max":730,"o":"m 62 359 l 62 374 q 85 522 62 454 q 152 641 109 590 q 257 719 195 691 q 395 747 319 747 q 535 719 473 747 q 641 641 597 691 q 707 522 684 590 q 730 374 730 454 l 730 359 q 707 212 730 279 q 641 93 684 144 q 535 15 597 43 q 397 -14 474 -14 q 258 15 319 -14 q 152 93 196 43 q 85 212 109 144 q 62 359 62 279 m 188 374 l 188 359 q 201 255 188 304 q 240 170 214 207 q 305 111 266 132 q 397 90 345 90 q 487 111 448 90 q 552 170 526 132 q 591 255 578 207 q 604 359 604 304 l 604 374 q 591 477 604 429 q 552 563 578 526 q 487 623 526 601 q 395 644 448 644 q 305 623 344 644 q 240 563 266 601 q 201 477 214 526 q 188 374 188 429 m 330 1042 l 461 842 l 353 842 l 178 1042 l 330 1042 z "},"ó":{"ha":792,"x_min":62,"x_max":730,"o":"m 62 359 l 62 374 q 85 522 62 454 q 152 641 109 590 q 257 719 195 691 q 395 747 319 747 q 535 719 473 747 q 641 641 597 691 q 707 522 684 590 q 730 374 730 454 l 730 359 q 707 212 730 279 q 641 93 684 144 q 535 15 597 43 q 397 -14 474 -14 q 258 15 319 -14 q 152 93 196 43 q 85 212 109 144 q 62 359 62 279 m 188 374 l 188 359 q 201 255 188 304 q 240 170 214 207 q 305 111 266 132 q 397 90 345 90 q 487 111 448 90 q 552 170 526 132 q 591 255 578 207 q 604 359 604 304 l 604 374 q 591 477 604 429 q 552 563 578 526 q 487 623 526 601 q 395 644 448 644 q 305 623 344 644 q 240 563 266 601 q 201 477 214 526 q 188 374 188 429 m 321 842 l 452 1042 l 604 1042 l 422 842 l 321 842 z "},"ô":{"ha":792,"x_min":62,"x_max":730,"o":"m 62 359 l 62 374 q 85 522 62 454 q 152 641 109 590 q 257 719 195 691 q 395 747 319 747 q 535 719 473 747 q 641 641 597 691 q 707 522 684 590 q 730 374 730 454 l 730 359 q 707 212 730 279 q 641 93 684 144 q 535 15 597 43 q 397 -14 474 -14 q 258 15 319 -14 q 152 93 196 43 q 85 212 109 144 q 62 359 62 279 m 188 374 l 188 359 q 201 255 188 304 q 240 170 214 207 q 305 111 266 132 q 397 90 345 90 q 487 111 448 90 q 552 170 526 132 q 591 255 578 207 q 604 359 604 304 l 604 374 q 591 477 604 429 q 552 563 578 526 q 487 623 526 601 q 395 644 448 644 q 305 623 344 644 q 240 563 266 601 q 201 477 214 526 q 188 374 188 429 m 428 1042 l 596 857 l 596 850 l 492 850 l 390 964 l 289 850 l 186 850 l 186 857 l 352 1042 l 428 1042 z "},"õ":{"ha":792,"x_min":62,"x_max":730,"o":"m 62 359 l 62 374 q 85 522 62 454 q 152 641 109 590 q 257 719 195 691 q 395 747 319 747 q 535 719 473 747 q 641 641 597 691 q 707 522 684 590 q 730 374 730 454 l 730 359 q 707 212 730 279 q 641 93 684 144 q 535 15 597 43 q 397 -14 474 -14 q 258 15 319 -14 q 152 93 196 43 q 85 212 109 144 q 62 359 62 279 m 188 374 l 188 359 q 201 255 188 304 q 240 170 214 207 q 305 111 266 132 q 397 90 345 90 q 487 111 448 90 q 552 170 526 132 q 591 255 578 207 q 604 359 604 304 l 604 374 q 591 477 604 429 q 552 563 578 526 q 487 623 526 601 q 395 644 448 644 q 305 623 344 644 q 240 563 266 601 q 201 477 214 526 q 188 374 188 429 m 546 1028 l 631 1021 q 611 934 631 971 q 558 876 591 897 q 484 856 526 856 q 427 866 450 856 q 387 888 405 876 q 350 910 370 901 q 302 920 331 920 q 255 899 274 920 q 235 845 235 877 l 151 849 q 170 936 151 899 q 222 995 189 974 q 296 1017 256 1017 q 348 1007 326 1017 q 389 984 370 997 q 430 962 409 972 q 478 952 451 952 q 526 974 507 952 q 546 1028 546 996 z "},"ö":{"ha":792,"x_min":62,"x_max":730,"o":"m 62 359 l 62 374 q 85 522 62 454 q 152 641 109 590 q 257 719 195 691 q 395 747 319 747 q 535 719 473 747 q 641 641 597 691 q 707 522 684 590 q 730 374 730 454 l 730 359 q 707 212 730 279 q 641 93 684 144 q 535 15 597 43 q 397 -14 474 -14 q 258 15 319 -14 q 152 93 196 43 q 85 212 109 144 q 62 359 62 279 m 188 374 l 188 359 q 201 255 188 304 q 240 170 214 207 q 305 111 266 132 q 397 90 345 90 q 487 111 448 90 q 552 170 526 132 q 591 255 578 207 q 604 359 604 304 l 604 374 q 591 477 604 429 q 552 563 578 526 q 487 623 526 601 q 395 644 448 644 q 305 623 344 644 q 240 563 266 601 q 201 477 214 526 q 188 374 188 429 m 172 930 q 191 981 172 960 q 245 1002 210 1002 q 301 981 282 1002 q 320 930 320 960 q 301 880 320 901 q 245 859 282 859 q 191 880 210 859 q 172 930 172 901 m 464 928 q 483 980 464 959 q 538 1001 501 1001 q 593 980 574 1001 q 612 928 612 959 q 593 879 612 899 q 538 858 574 858 q 483 879 501 858 q 464 928 464 899 z "},"ù":{"ha":766,"x_min":93,"x_max":671,"o":"m 545 170 l 545 734 l 671 734 l 671 0 l 551 0 l 545 170 m 568 324 l 621 326 q 605 190 621 252 q 556 83 590 128 q 467 12 522 37 q 334 -14 412 -14 q 236 2 280 -14 q 159 50 191 18 q 110 135 127 83 q 93 260 93 187 l 93 734 l 218 734 l 218 259 q 230 177 218 210 q 260 126 241 145 q 303 100 279 108 q 353 93 328 93 q 480 124 433 93 q 548 207 527 155 q 568 324 568 260 m 325 1042 l 456 842 l 348 842 l 173 1042 l 325 1042 z "},"ú":{"ha":766,"x_min":93,"x_max":671,"o":"m 545 170 l 545 734 l 671 734 l 671 0 l 551 0 l 545 170 m 568 324 l 621 326 q 605 190 621 252 q 556 83 590 128 q 467 12 522 37 q 334 -14 412 -14 q 236 2 280 -14 q 159 50 191 18 q 110 135 127 83 q 93 260 93 187 l 93 734 l 218 734 l 218 259 q 230 177 218 210 q 260 126 241 145 q 303 100 279 108 q 353 93 328 93 q 480 124 433 93 q 548 207 527 155 q 568 324 568 260 m 315 842 l 447 1042 l 598 1042 l 416 842 l 315 842 z "},"û":{"ha":766,"x_min":93,"x_max":671,"o":"m 545 170 l 545 734 l 671 734 l 671 0 l 551 0 l 545 170 m 568 324 l 621 326 q 605 190 621 252 q 556 83 590 128 q 467 12 522 37 q 334 -14 412 -14 q 236 2 280 -14 q 159 50 191 18 q 110 135 127 83 q 93 260 93 187 l 93 734 l 218 734 l 218 259 q 230 177 218 210 q 260 126 241 145 q 303 100 279 108 q 353 93 328 93 q 480 124 433 93 q 548 207 527 155 q 568 324 568 260 m 422 1042 l 591 857 l 591 850 l 486 850 l 385 964 l 283 850 l 180 850 l 180 857 l 347 1042 l 422 1042 z "},"ü":{"ha":766,"x_min":93,"x_max":671,"o":"m 545 170 l 545 734 l 671 734 l 671 0 l 551 0 l 545 170 m 568 324 l 621 326 q 605 190 621 252 q 556 83 590 128 q 467 12 522 37 q 334 -14 412 -14 q 236 2 280 -14 q 159 50 191 18 q 110 135 127 83 q 93 260 93 187 l 93 734 l 218 734 l 218 259 q 230 177 218 210 q 260 126 241 145 q 303 100 279 108 q 353 93 328 93 q 480 124 433 93 q 548 207 527 155 q 568 324 568 260 m 166 930 q 185 981 166 960 q 240 1002 204 1002 q 296 981 277 1002 q 315 930 315 960 q 296 880 315 901 q 240 859 277 859 q 185 880 204 859 q 166 930 166 901 m 458 928 q 477 980 458 959 q 532 1001 496 1001 q 588 980 568 1001 q 607 928 607 959 q 588 879 607 899 q 532 858 568 858 q 477 879 496 858 q 458 928 458 899 z "},"ý":{"ha":657,"x_min":15,"x_max":640,"o":"m 302 76 l 506 734 l 640 734 l 346 -113 q 319 -172 336 -140 q 277 -232 302 -203 q 215 -278 251 -260 q 128 -296 178 -296 q 90 -292 113 -296 q 58 -286 67 -288 l 57 -184 q 74 -185 62 -184 q 91 -186 86 -186 q 163 -175 134 -186 q 214 -138 193 -164 q 250 -66 235 -112 l 302 76 m 152 734 l 342 164 l 375 32 l 285 -14 l 15 734 l 152 734 m 275 842 l 407 1042 l 558 1042 l 376 842 l 275 842 z "},"ÿ":{"ha":657,"x_min":15,"x_max":640,"o":"m 302 76 l 506 734 l 640 734 l 346 -113 q 319 -172 336 -140 q 277 -232 302 -203 q 215 -278 251 -260 q 128 -296 178 -296 q 90 -292 113 -296 q 58 -286 67 -288 l 57 -184 q 74 -185 62 -184 q 91 -186 86 -186 q 163 -175 134 -186 q 214 -138 193 -164 q 250 -66 235 -112 l 302 76 m 152 734 l 342 164 l 375 32 l 285 -14 l 15 734 l 152 734 m 126 930 q 145 981 126 960 q 200 1002 164 1002 q 256 981 237 1002 q 275 930 275 960 q 256 880 275 901 q 200 859 237 859 q 145 880 164 859 q 126 930 126 901 m 418 928 q 437 980 418 959 q 492 1001 456 1001 q 548 980 528 1001 q 567 928 567 959 q 548 879 567 899 q 492 858 528 858 q 437 879 456 858 q 418 928 418 899 z "},"Ā":{"ha":906,"x_min":20,"x_max":888,"o":"m 480 900 l 153 0 l 20 0 l 396 987 l 482 987 l 480 900 m 754 0 l 427 900 l 425 987 l 511 987 l 888 0 l 754 0 m 737 366 l 737 258 l 182 258 l 182 366 l 737 366 m 687 1196 l 687 1100 l 232 1100 l 232 1196 l 687 1196 z "},"ā":{"ha":755,"x_min":74,"x_max":680,"o":"m 528 125 l 528 503 q 511 579 528 547 q 459 629 494 611 q 374 646 425 646 q 291 630 326 646 q 235 587 255 614 q 215 530 215 561 l 90 530 q 110 608 90 570 q 169 679 130 647 q 261 729 207 710 q 381 747 315 747 q 523 720 461 747 q 619 638 584 693 q 654 502 654 584 l 654 160 q 660 82 654 123 q 680 11 667 41 l 680 0 l 549 0 q 534 58 539 22 q 528 125 528 94 m 550 445 l 551 357 l 425 357 q 329 348 371 357 q 258 323 287 340 q 215 280 230 306 q 200 221 200 255 q 216 158 200 186 q 263 113 231 130 q 340 96 294 96 q 442 121 398 96 q 512 180 486 145 q 541 249 538 216 l 594 189 q 568 125 589 160 q 512 59 547 91 q 430 7 477 28 q 322 -14 382 -14 q 192 16 248 -14 q 105 94 136 45 q 74 204 74 143 q 97 308 74 263 q 163 384 120 353 q 268 429 207 414 q 404 445 329 445 l 550 445 m 626 985 l 626 889 l 171 889 l 171 985 l 626 985 z "},"Ă":{"ha":906,"x_min":20,"x_max":888,"o":"m 480 900 l 153 0 l 20 0 l 396 987 l 482 987 l 480 900 m 754 0 l 427 900 l 425 987 l 511 987 l 888 0 l 754 0 m 737 366 l 737 258 l 182 258 l 182 366 l 737 366 m 557 1225 l 659 1225 q 634 1131 659 1172 q 564 1067 610 1090 q 456 1044 519 1044 q 308 1094 362 1044 q 253 1225 253 1145 l 355 1225 q 378 1154 355 1185 q 456 1124 401 1124 q 534 1154 511 1124 q 557 1225 557 1185 z "},"ă":{"ha":755,"x_min":74,"x_max":680,"o":"m 528 125 l 528 503 q 511 579 528 547 q 459 629 494 611 q 374 646 425 646 q 291 630 326 646 q 235 587 255 614 q 215 530 215 561 l 90 530 q 110 608 90 570 q 169 679 130 647 q 261 729 207 710 q 381 747 315 747 q 523 720 461 747 q 619 638 584 693 q 654 502 654 584 l 654 160 q 660 82 654 123 q 680 11 667 41 l 680 0 l 549 0 q 534 58 539 22 q 528 125 528 94 m 550 445 l 551 357 l 425 357 q 329 348 371 357 q 258 323 287 340 q 215 280 230 306 q 200 221 200 255 q 216 158 200 186 q 263 113 231 130 q 340 96 294 96 q 442 121 398 96 q 512 180 486 145 q 541 249 538 216 l 594 189 q 568 125 589 160 q 512 59 547 91 q 430 7 477 28 q 322 -14 382 -14 q 192 16 248 -14 q 105 94 136 45 q 74 204 74 143 q 97 308 74 263 q 163 384 120 353 q 268 429 207 414 q 404 445 329 445 l 550 445 m 496 1014 l 597 1014 q 573 920 597 961 q 503 856 549 879 q 395 833 458 833 q 247 883 301 833 q 192 1014 192 934 l 294 1014 q 317 943 294 974 q 395 913 340 913 q 473 943 450 913 q 496 1014 496 974 z "},"Ą":{"ha":906,"x_min":20,"x_max":888,"o":"m 480 900 l 153 0 l 20 0 l 396 987 l 482 987 l 480 900 m 754 0 l 427 900 l 425 987 l 511 987 l 888 0 l 754 0 m 737 366 l 737 258 l 182 258 l 182 366 l 737 366 m 812 39 l 863 0 q 807 -45 833 -22 q 764 -95 781 -68 q 747 -151 747 -121 q 759 -186 747 -173 q 800 -200 770 -200 q 840 -194 822 -200 q 867 -182 857 -187 l 877 -264 q 834 -284 860 -275 q 768 -294 808 -294 q 675 -261 713 -294 q 637 -165 637 -229 q 655 -92 637 -128 q 712 -23 673 -56 q 812 39 751 10 z "},"ą":{"ha":755,"x_min":74,"x_max":680,"o":"m 528 125 l 528 503 q 511 579 528 547 q 459 629 494 611 q 374 646 425 646 q 291 630 326 646 q 235 587 255 614 q 215 530 215 561 l 90 530 q 110 608 90 570 q 169 679 130 647 q 261 729 207 710 q 381 747 315 747 q 523 720 461 747 q 619 638 584 693 q 654 502 654 584 l 654 160 q 660 82 654 123 q 680 11 667 41 l 680 0 l 549 0 q 534 58 539 22 q 528 125 528 94 m 550 445 l 551 357 l 425 357 q 329 348 371 357 q 258 323 287 340 q 215 280 230 306 q 200 221 200 255 q 216 158 200 186 q 263 113 231 130 q 340 96 294 96 q 442 121 398 96 q 512 180 486 145 q 541 249 538 216 l 594 189 q 568 125 589 160 q 512 59 547 91 q 430 7 477 28 q 322 -14 382 -14 q 192 16 248 -14 q 105 94 136 45 q 74 204 74 143 q 97 308 74 263 q 163 384 120 353 q 268 429 207 414 q 404 445 329 445 l 550 445 m 608 39 l 658 0 q 602 -45 629 -22 q 559 -95 576 -68 q 542 -151 542 -121 q 554 -186 542 -173 q 595 -200 566 -200 q 635 -194 617 -200 q 663 -182 652 -187 l 672 -264 q 629 -284 655 -275 q 563 -294 603 -294 q 470 -261 508 -294 q 433 -165 433 -229 q 451 -92 433 -128 q 507 -23 469 -56 q 608 39 546 10 z "},"Ć":{"ha":904,"x_min":81,"x_max":841,"o":"m 711 314 l 841 314 q 787 146 831 220 q 665 30 744 73 q 467 -14 585 -14 q 309 19 380 -14 q 187 112 238 52 q 109 256 136 172 q 81 444 81 340 l 81 543 q 109 731 81 646 q 188 876 136 815 q 313 968 240 936 q 478 1001 387 1001 q 667 959 590 1001 q 788 843 745 917 q 841 671 831 768 l 711 671 q 675 790 701 740 q 602 867 650 840 q 478 894 555 894 q 362 869 412 894 q 279 798 313 844 q 229 687 245 751 q 212 544 212 623 l 212 444 q 227 308 212 372 q 273 196 242 244 q 353 120 304 148 q 467 93 401 93 q 600 119 550 93 q 674 195 649 146 q 711 314 700 245 m 392 1075 l 524 1274 l 675 1274 l 493 1075 l 392 1075 z "},"ć":{"ha":727,"x_min":63,"x_max":682,"o":"m 389 90 q 472 108 434 90 q 534 158 510 126 q 562 232 559 191 l 682 232 q 638 111 678 167 q 532 21 597 55 q 389 -14 467 -14 q 245 16 307 -14 q 143 96 184 45 q 83 213 103 146 q 63 353 63 279 l 63 381 q 83 521 63 455 q 143 638 103 587 q 245 718 184 689 q 389 747 307 747 q 540 712 475 747 q 641 617 604 677 q 682 481 678 557 l 562 481 q 537 564 559 527 q 477 622 515 600 q 389 644 439 644 q 293 622 332 644 q 231 561 254 599 q 198 476 208 522 q 189 381 189 429 l 189 353 q 198 258 189 304 q 230 173 208 211 q 292 112 253 135 q 389 90 331 90 m 292 842 l 424 1042 l 575 1042 l 393 842 l 292 842 z "},"Ĉ":{"ha":904,"x_min":81,"x_max":841,"o":"m 711 314 l 841 314 q 787 146 831 220 q 665 30 744 73 q 467 -14 585 -14 q 309 19 380 -14 q 187 112 238 52 q 109 256 136 172 q 81 444 81 340 l 81 543 q 109 731 81 646 q 188 876 136 815 q 313 968 240 936 q 478 1001 387 1001 q 667 959 590 1001 q 788 843 745 917 q 841 671 831 768 l 711 671 q 675 790 701 740 q 602 867 650 840 q 478 894 555 894 q 362 869 412 894 q 279 798 313 844 q 229 687 245 751 q 212 544 212 623 l 212 444 q 227 308 212 372 q 273 196 242 244 q 353 120 304 148 q 467 93 401 93 q 600 119 550 93 q 674 195 649 146 q 711 314 700 245 m 499 1274 l 667 1089 l 667 1082 l 563 1082 l 461 1197 l 360 1082 l 257 1082 l 257 1090 l 423 1274 l 499 1274 z "},"ĉ":{"ha":727,"x_min":63,"x_max":682,"o":"m 389 90 q 472 108 434 90 q 534 158 510 126 q 562 232 559 191 l 682 232 q 638 111 678 167 q 532 21 597 55 q 389 -14 467 -14 q 245 16 307 -14 q 143 96 184 45 q 83 213 103 146 q 63 353 63 279 l 63 381 q 83 521 63 455 q 143 638 103 587 q 245 718 184 689 q 389 747 307 747 q 540 712 475 747 q 641 617 604 677 q 682 481 678 557 l 562 481 q 537 564 559 527 q 477 622 515 600 q 389 644 439 644 q 293 622 332 644 q 231 561 254 599 q 198 476 208 522 q 189 381 189 429 l 189 353 q 198 258 189 304 q 230 173 208 211 q 292 112 253 135 q 389 90 331 90 m 399 1042 l 568 857 l 568 850 l 463 850 l 361 964 l 260 850 l 157 850 l 157 857 l 323 1042 l 399 1042 z "},"Ċ":{"ha":904,"x_min":81,"x_max":841,"o":"m 711 314 l 841 314 q 787 146 831 220 q 665 30 744 73 q 467 -14 585 -14 q 309 19 380 -14 q 187 112 238 52 q 109 256 136 172 q 81 444 81 340 l 81 543 q 109 731 81 646 q 188 876 136 815 q 313 968 240 936 q 478 1001 387 1001 q 667 959 590 1001 q 788 843 745 917 q 841 671 831 768 l 711 671 q 675 790 701 740 q 602 867 650 840 q 478 894 555 894 q 362 869 412 894 q 279 798 313 844 q 229 687 245 751 q 212 544 212 623 l 212 444 q 227 308 212 372 q 273 196 242 244 q 353 120 304 148 q 467 93 401 93 q 600 119 550 93 q 674 195 649 146 q 711 314 700 245 m 387 1160 q 406 1211 387 1190 q 461 1232 425 1232 q 516 1211 497 1232 q 536 1160 536 1190 q 516 1110 536 1131 q 461 1089 497 1089 q 406 1110 425 1089 q 387 1160 387 1131 z "},"ċ":{"ha":727,"x_min":63,"x_max":682,"o":"m 389 90 q 472 108 434 90 q 534 158 510 126 q 562 232 559 191 l 682 232 q 638 111 678 167 q 532 21 597 55 q 389 -14 467 -14 q 245 16 307 -14 q 143 96 184 45 q 83 213 103 146 q 63 353 63 279 l 63 381 q 83 521 63 455 q 143 638 103 587 q 245 718 184 689 q 389 747 307 747 q 540 712 475 747 q 641 617 604 677 q 682 481 678 557 l 562 481 q 537 564 559 527 q 477 622 515 600 q 389 644 439 644 q 293 622 332 644 q 231 561 254 599 q 198 476 208 522 q 189 381 189 429 l 189 353 q 198 258 189 304 q 230 173 208 211 q 292 112 253 135 q 389 90 331 90 m 288 928 q 306 979 288 958 q 361 1000 325 1000 q 417 979 397 1000 q 436 928 436 958 q 417 877 436 898 q 361 857 397 857 q 306 877 325 857 q 288 928 288 898 z "},"Č":{"ha":904,"x_min":81,"x_max":841,"o":"m 711 314 l 841 314 q 787 146 831 220 q 665 30 744 73 q 467 -14 585 -14 q 309 19 380 -14 q 187 112 238 52 q 109 256 136 172 q 81 444 81 340 l 81 543 q 109 731 81 646 q 188 876 136 815 q 313 968 240 936 q 478 1001 387 1001 q 667 959 590 1001 q 788 843 745 917 q 841 671 831 768 l 711 671 q 675 790 701 740 q 602 867 650 840 q 478 894 555 894 q 362 869 412 894 q 279 798 313 844 q 229 687 245 751 q 212 544 212 623 l 212 444 q 227 308 212 372 q 273 196 242 244 q 353 120 304 148 q 467 93 401 93 q 600 119 550 93 q 674 195 649 146 q 711 314 700 245 m 358 1274 l 460 1158 l 563 1274 l 671 1274 l 671 1267 l 499 1081 l 422 1081 l 252 1267 l 252 1274 l 358 1274 z "},"č":{"ha":727,"x_min":63,"x_max":682,"o":"m 389 90 q 472 108 434 90 q 534 158 510 126 q 562 232 559 191 l 682 232 q 638 111 678 167 q 532 21 597 55 q 389 -14 467 -14 q 245 16 307 -14 q 143 96 184 45 q 83 213 103 146 q 63 353 63 279 l 63 381 q 83 521 63 455 q 143 638 103 587 q 245 718 184 689 q 389 747 307 747 q 540 712 475 747 q 641 617 604 677 q 682 481 678 557 l 562 481 q 537 564 559 527 q 477 622 515 600 q 389 644 439 644 q 293 622 332 644 q 231 561 254 599 q 198 476 208 522 q 189 381 189 429 l 189 353 q 198 258 189 304 q 230 173 208 211 q 292 112 253 135 q 389 90 331 90 m 258 1041 l 361 926 l 463 1041 l 572 1041 l 572 1034 l 399 848 l 322 848 l 153 1034 l 153 1041 l 258 1041 z "},"Ď":{"ha":911,"x_min":115,"x_max":829,"o":"m 382 0 l 176 0 l 177 106 l 382 106 q 558 151 488 106 q 664 276 629 195 q 700 464 700 356 l 700 524 q 680 675 700 609 q 620 787 659 741 q 524 857 581 833 q 394 880 467 880 l 172 880 l 172 987 l 394 987 q 571 955 491 987 q 709 862 651 923 q 798 716 767 802 q 829 523 829 630 l 829 464 q 798 271 829 357 q 708 125 767 185 q 567 32 650 64 q 382 0 485 0 m 245 987 l 245 0 l 115 0 l 115 987 l 245 987 m 310 1259 l 412 1144 l 515 1259 l 623 1259 l 623 1253 l 451 1067 l 374 1067 l 204 1253 l 204 1259 l 310 1259 z "},"ď":{"ha":885,"x_min":64,"x_max":898,"o":"m 558 142 l 558 1042 l 684 1042 l 684 0 l 569 0 l 558 142 m 64 359 l 64 373 q 85 526 64 457 q 144 644 106 595 q 236 721 182 694 q 355 747 289 747 q 476 723 424 747 q 564 653 528 699 q 621 543 600 608 q 650 397 642 479 l 650 335 q 622 190 643 254 q 564 80 600 125 q 475 11 528 35 q 353 -14 423 -14 q 236 14 289 -14 q 144 92 182 42 q 85 211 106 142 q 64 359 64 279 m 191 373 l 191 359 q 202 256 191 304 q 237 171 213 208 q 297 114 260 134 q 385 93 334 93 q 487 119 447 93 q 552 189 528 146 q 590 283 576 233 l 590 447 q 567 519 582 484 q 527 582 551 554 q 468 625 503 609 q 386 642 433 642 q 297 620 334 642 q 237 562 260 599 q 202 476 213 525 q 191 373 191 428 m 898 1043 l 898 989 q 874 874 898 936 q 800 771 850 812 l 728 821 q 766 900 753 859 q 779 988 779 941 l 779 1043 l 898 1043 z "},"Ē":{"ha":789,"x_min":115,"x_max":742,"o":"m 742 106 l 742 0 l 219 0 l 219 106 l 742 106 m 245 987 l 245 0 l 115 0 l 115 987 l 245 987 m 673 563 l 673 456 l 219 456 l 219 563 l 673 563 m 735 987 l 735 880 l 219 880 l 219 987 l 735 987 m 651 1204 l 651 1107 l 196 1107 l 196 1204 l 651 1204 z "},"ē":{"ha":736,"x_min":63,"x_max":686,"o":"m 400 -14 q 261 13 323 -14 q 155 86 199 39 q 87 199 111 134 q 63 341 63 264 l 63 370 q 90 529 63 459 q 161 648 116 600 q 264 722 207 697 q 384 747 322 747 q 520 720 463 747 q 614 645 577 693 q 668 531 650 596 q 686 388 686 465 l 686 332 l 138 332 l 138 434 l 560 434 l 560 444 q 540 538 557 492 q 486 614 523 585 q 384 644 448 644 q 305 626 341 644 q 243 573 269 608 q 203 487 218 538 q 189 370 189 436 l 189 341 q 204 243 189 289 q 247 163 218 197 q 315 109 275 128 q 407 89 355 89 q 519 116 473 89 q 600 189 566 143 l 676 128 q 616 60 652 92 q 526 7 579 27 q 400 -14 473 -14 m 614 985 l 614 889 l 159 889 l 159 985 l 614 985 z "},"Ĕ":{"ha":789,"x_min":115,"x_max":742,"o":"m 742 106 l 742 0 l 219 0 l 219 106 l 742 106 m 245 987 l 245 0 l 115 0 l 115 987 l 245 987 m 673 563 l 673 456 l 219 456 l 219 563 l 673 563 m 735 987 l 735 880 l 219 880 l 219 987 l 735 987 m 521 1232 l 623 1232 q 598 1138 623 1179 q 528 1074 574 1097 q 420 1051 483 1051 q 272 1102 326 1051 q 217 1232 217 1152 l 319 1232 q 342 1162 319 1192 q 420 1131 365 1131 q 498 1162 475 1131 q 521 1232 521 1192 z "},"ĕ":{"ha":736,"x_min":63,"x_max":686,"o":"m 400 -14 q 261 13 323 -14 q 155 86 199 39 q 87 199 111 134 q 63 341 63 264 l 63 370 q 90 529 63 459 q 161 648 116 600 q 264 722 207 697 q 384 747 322 747 q 520 720 463 747 q 614 645 577 693 q 668 531 650 596 q 686 388 686 465 l 686 332 l 138 332 l 138 434 l 560 434 l 560 444 q 540 538 557 492 q 486 614 523 585 q 384 644 448 644 q 305 626 341 644 q 243 573 269 608 q 203 487 218 538 q 189 370 189 436 l 189 341 q 204 243 189 289 q 247 163 218 197 q 315 109 275 128 q 407 89 355 89 q 519 116 473 89 q 600 189 566 143 l 676 128 q 616 60 652 92 q 526 7 579 27 q 400 -14 473 -14 m 484 1014 l 586 1014 q 562 920 586 961 q 492 856 537 879 q 384 833 446 833 q 235 883 290 833 q 180 1014 180 934 l 282 1014 q 305 943 282 974 q 384 913 328 913 q 461 943 438 913 q 484 1014 484 974 z "},"Ė":{"ha":789,"x_min":115,"x_max":742,"o":"m 742 106 l 742 0 l 219 0 l 219 106 l 742 106 m 245 987 l 245 0 l 115 0 l 115 987 l 245 987 m 673 563 l 673 456 l 219 456 l 219 563 l 673 563 m 735 987 l 735 880 l 219 880 l 219 987 l 735 987 m 346 1146 q 365 1197 346 1176 q 420 1218 383 1218 q 475 1197 456 1218 q 494 1146 494 1176 q 475 1096 494 1116 q 420 1075 456 1075 q 365 1096 383 1075 q 346 1146 346 1116 z "},"ė":{"ha":736,"x_min":63,"x_max":686,"o":"m 400 -14 q 261 13 323 -14 q 155 86 199 39 q 87 199 111 134 q 63 341 63 264 l 63 370 q 90 529 63 459 q 161 648 116 600 q 264 722 207 697 q 384 747 322 747 q 520 720 463 747 q 614 645 577 693 q 668 531 650 596 q 686 388 686 465 l 686 332 l 138 332 l 138 434 l 560 434 l 560 444 q 540 538 557 492 q 486 614 523 585 q 384 644 448 644 q 305 626 341 644 q 243 573 269 608 q 203 487 218 538 q 189 370 189 436 l 189 341 q 204 243 189 289 q 247 163 218 197 q 315 109 275 128 q 407 89 355 89 q 519 116 473 89 q 600 189 566 143 l 676 128 q 616 60 652 92 q 526 7 579 27 q 400 -14 473 -14 m 309 928 q 328 979 309 958 q 383 1000 347 1000 q 438 979 419 1000 q 458 928 458 958 q 438 877 458 898 q 383 857 419 857 q 328 877 347 857 q 309 928 309 898 z "},"Ę":{"ha":789,"x_min":115,"x_max":742,"o":"m 742 106 l 742 0 l 219 0 l 219 106 l 742 106 m 245 987 l 245 0 l 115 0 l 115 987 l 245 987 m 673 563 l 673 456 l 219 456 l 219 563 l 673 563 m 735 987 l 735 880 l 219 880 l 219 987 l 735 987 m 643 39 l 693 0 q 637 -45 664 -22 q 594 -95 611 -68 q 577 -151 577 -121 q 589 -186 577 -173 q 630 -200 601 -200 q 670 -194 652 -200 q 698 -182 688 -187 l 707 -264 q 664 -284 690 -275 q 598 -294 638 -294 q 506 -261 543 -294 q 468 -165 468 -229 q 486 -92 468 -128 q 543 -23 504 -56 q 643 39 581 10 z "},"ę":{"ha":736,"x_min":63,"x_max":686,"o":"m 400 -14 q 261 13 323 -14 q 155 86 199 39 q 87 199 111 134 q 63 341 63 264 l 63 370 q 90 529 63 459 q 161 648 116 600 q 264 722 207 697 q 384 747 322 747 q 520 720 463 747 q 614 645 577 693 q 668 531 650 596 q 686 388 686 465 l 686 332 l 138 332 l 138 434 l 560 434 l 560 444 q 540 538 557 492 q 486 614 523 585 q 384 644 448 644 q 305 626 341 644 q 243 573 269 608 q 203 487 218 538 q 189 370 189 436 l 189 341 q 204 243 189 289 q 247 163 218 197 q 315 109 275 128 q 407 89 355 89 q 519 116 473 89 q 600 189 566 143 l 676 128 q 616 60 652 92 q 526 7 579 27 q 400 -14 473 -14 m 500 56 l 551 18 q 495 -27 522 -4 q 452 -77 469 -51 q 435 -133 435 -103 q 447 -169 435 -155 q 488 -182 458 -182 q 528 -176 510 -182 q 555 -164 545 -170 l 565 -247 q 522 -267 548 -257 q 456 -277 496 -277 q 363 -244 401 -277 q 326 -147 326 -211 q 343 -75 326 -111 q 400 -5 361 -39 q 500 56 439 28 z "},"Ě":{"ha":789,"x_min":115,"x_max":742,"o":"m 742 106 l 742 0 l 219 0 l 219 106 l 742 106 m 245 987 l 245 0 l 115 0 l 115 987 l 245 987 m 673 563 l 673 456 l 219 456 l 219 563 l 673 563 m 735 987 l 735 880 l 219 880 l 219 987 l 735 987 m 317 1259 l 419 1144 l 522 1259 l 630 1259 l 630 1253 l 458 1067 l 380 1067 l 211 1253 l 211 1259 l 317 1259 z "},"ě":{"ha":736,"x_min":63,"x_max":686,"o":"m 400 -14 q 261 13 323 -14 q 155 86 199 39 q 87 199 111 134 q 63 341 63 264 l 63 370 q 90 529 63 459 q 161 648 116 600 q 264 722 207 697 q 384 747 322 747 q 520 720 463 747 q 614 645 577 693 q 668 531 650 596 q 686 388 686 465 l 686 332 l 138 332 l 138 434 l 560 434 l 560 444 q 540 538 557 492 q 486 614 523 585 q 384 644 448 644 q 305 626 341 644 q 243 573 269 608 q 203 487 218 538 q 189 370 189 436 l 189 341 q 204 243 189 289 q 247 163 218 197 q 315 109 275 128 q 407 89 355 89 q 519 116 473 89 q 600 189 566 143 l 676 128 q 616 60 652 92 q 526 7 579 27 q 400 -14 473 -14 m 280 1041 l 382 926 l 485 1041 l 593 1041 l 593 1034 l 421 848 l 344 848 l 174 1034 l 174 1041 l 280 1041 z "},"Ĝ":{"ha":946,"x_min":83,"x_max":844,"o":"m 844 492 l 844 130 q 786 70 826 103 q 676 11 746 36 q 495 -14 606 -14 q 329 18 405 -14 q 198 110 254 50 q 113 258 143 171 q 83 456 83 345 l 83 532 q 109 730 83 643 q 186 877 135 817 q 311 969 237 938 q 480 1001 385 1001 q 670 962 593 1001 q 789 854 746 923 q 844 699 832 786 l 713 699 q 679 796 705 752 q 604 867 652 840 q 480 894 556 894 q 361 869 412 894 q 279 797 311 844 q 230 684 246 750 q 214 534 214 617 l 214 456 q 234 303 214 370 q 292 189 254 236 q 381 117 329 142 q 496 93 433 93 q 609 105 566 93 q 677 133 652 117 q 714 165 701 150 l 714 386 l 486 386 l 486 492 l 844 492 m 494 1274 l 662 1089 l 662 1082 l 557 1082 l 456 1197 l 355 1082 l 252 1082 l 252 1090 l 418 1274 l 494 1274 z "},"ĝ":{"ha":780,"x_min":66,"x_max":685,"o":"m 571 734 l 685 734 l 685 16 q 646 -150 685 -81 q 536 -254 606 -218 q 374 -290 466 -290 q 285 -278 336 -290 q 185 -238 234 -266 q 102 -162 136 -210 l 168 -87 q 265 -165 214 -143 q 365 -186 315 -186 q 468 -164 425 -186 q 535 -98 511 -142 q 559 9 559 -54 l 559 572 l 571 734 m 66 359 l 66 373 q 86 526 66 457 q 143 644 106 595 q 235 721 181 694 q 355 747 288 747 q 476 723 425 747 q 565 653 528 699 q 622 543 601 608 q 651 397 643 479 l 651 335 q 622 190 644 254 q 565 80 601 125 q 476 11 528 35 q 354 -14 424 -14 q 235 14 288 -14 q 144 92 182 42 q 86 211 106 142 q 66 359 66 279 m 191 373 l 191 359 q 202 256 191 304 q 237 171 214 208 q 297 114 260 134 q 385 93 334 93 q 488 119 447 93 q 552 189 528 146 q 590 283 576 233 l 590 447 q 567 519 583 484 q 528 582 552 554 q 469 625 504 609 q 386 642 433 642 q 297 620 334 642 q 237 562 260 599 q 202 476 214 525 q 191 373 191 428 m 415 1042 l 583 857 l 583 850 l 479 850 l 377 964 l 276 850 l 173 850 l 173 857 l 339 1042 l 415 1042 z "},"Ğ":{"ha":946,"x_min":83,"x_max":844,"o":"m 844 492 l 844 130 q 786 70 826 103 q 676 11 746 36 q 495 -14 606 -14 q 329 18 405 -14 q 198 110 254 50 q 113 258 143 171 q 83 456 83 345 l 83 532 q 109 730 83 643 q 186 877 135 817 q 311 969 237 938 q 480 1001 385 1001 q 670 962 593 1001 q 789 854 746 923 q 844 699 832 786 l 713 699 q 679 796 705 752 q 604 867 652 840 q 480 894 556 894 q 361 869 412 894 q 279 797 311 844 q 230 684 246 750 q 214 534 214 617 l 214 456 q 234 303 214 370 q 292 189 254 236 q 381 117 329 142 q 496 93 433 93 q 609 105 566 93 q 677 133 652 117 q 714 165 701 150 l 714 386 l 486 386 l 486 492 l 844 492 m 557 1246 l 659 1246 q 634 1153 659 1194 q 564 1088 610 1112 q 456 1065 519 1065 q 308 1116 362 1065 q 253 1246 253 1166 l 355 1246 q 378 1176 355 1206 q 456 1145 401 1145 q 534 1176 511 1145 q 557 1246 557 1206 z "},"ğ":{"ha":780,"x_min":66,"x_max":685,"o":"m 571 734 l 685 734 l 685 16 q 646 -150 685 -81 q 536 -254 606 -218 q 374 -290 466 -290 q 285 -278 336 -290 q 185 -238 234 -266 q 102 -162 136 -210 l 168 -87 q 265 -165 214 -143 q 365 -186 315 -186 q 468 -164 425 -186 q 535 -98 511 -142 q 559 9 559 -54 l 559 572 l 571 734 m 66 359 l 66 373 q 86 526 66 457 q 143 644 106 595 q 235 721 181 694 q 355 747 288 747 q 476 723 425 747 q 565 653 528 699 q 622 543 601 608 q 651 397 643 479 l 651 335 q 622 190 644 254 q 565 80 601 125 q 476 11 528 35 q 354 -14 424 -14 q 235 14 288 -14 q 144 92 182 42 q 86 211 106 142 q 66 359 66 279 m 191 373 l 191 359 q 202 256 191 304 q 237 171 214 208 q 297 114 260 134 q 385 93 334 93 q 488 119 447 93 q 552 189 528 146 q 590 283 576 233 l 590 447 q 567 519 583 484 q 528 582 552 554 q 469 625 504 609 q 386 642 433 642 q 297 620 334 642 q 237 562 260 599 q 202 476 214 525 q 191 373 191 428 m 478 1014 l 580 1014 q 555 920 580 961 q 486 856 531 879 q 378 833 440 833 q 229 883 283 833 q 174 1014 174 934 l 276 1014 q 299 943 276 974 q 378 913 322 913 q 455 943 432 913 q 478 1014 478 974 z "},"Ġ":{"ha":946,"x_min":83,"x_max":844,"o":"m 844 492 l 844 130 q 786 70 826 103 q 676 11 746 36 q 495 -14 606 -14 q 329 18 405 -14 q 198 110 254 50 q 113 258 143 171 q 83 456 83 345 l 83 532 q 109 730 83 643 q 186 877 135 817 q 311 969 237 938 q 480 1001 385 1001 q 670 962 593 1001 q 789 854 746 923 q 844 699 832 786 l 713 699 q 679 796 705 752 q 604 867 652 840 q 480 894 556 894 q 361 869 412 894 q 279 797 311 844 q 230 684 246 750 q 214 534 214 617 l 214 456 q 234 303 214 370 q 292 189 254 236 q 381 117 329 142 q 496 93 433 93 q 609 105 566 93 q 677 133 652 117 q 714 165 701 150 l 714 386 l 486 386 l 486 492 l 844 492 m 382 1160 q 400 1211 382 1190 q 456 1232 419 1232 q 511 1211 492 1232 q 530 1160 530 1190 q 511 1110 530 1131 q 456 1089 492 1089 q 400 1110 419 1089 q 382 1160 382 1131 z "},"ġ":{"ha":780,"x_min":66,"x_max":685,"o":"m 571 734 l 685 734 l 685 16 q 646 -150 685 -81 q 536 -254 606 -218 q 374 -290 466 -290 q 285 -278 336 -290 q 185 -238 234 -266 q 102 -162 136 -210 l 168 -87 q 265 -165 214 -143 q 365 -186 315 -186 q 468 -164 425 -186 q 535 -98 511 -142 q 559 9 559 -54 l 559 572 l 571 734 m 66 359 l 66 373 q 86 526 66 457 q 143 644 106 595 q 235 721 181 694 q 355 747 288 747 q 476 723 425 747 q 565 653 528 699 q 622 543 601 608 q 651 397 643 479 l 651 335 q 622 190 644 254 q 565 80 601 125 q 476 11 528 35 q 354 -14 424 -14 q 235 14 288 -14 q 144 92 182 42 q 86 211 106 142 q 66 359 66 279 m 191 373 l 191 359 q 202 256 191 304 q 237 171 214 208 q 297 114 260 134 q 385 93 334 93 q 488 119 447 93 q 552 189 528 146 q 590 283 576 233 l 590 447 q 567 519 583 484 q 528 582 552 554 q 469 625 504 609 q 386 642 433 642 q 297 620 334 642 q 237 562 260 599 q 202 476 214 525 q 191 373 191 428 m 303 928 q 322 979 303 958 q 377 1000 340 1000 q 432 979 413 1000 q 452 928 452 958 q 432 877 452 898 q 377 857 413 857 q 322 877 340 857 q 303 928 303 898 z "},"Ģ":{"ha":946,"x_min":83,"x_max":844,"o":"m 844 492 l 844 130 q 786 70 826 103 q 676 11 746 36 q 495 -14 606 -14 q 329 18 405 -14 q 198 110 254 50 q 113 258 143 171 q 83 456 83 345 l 83 532 q 109 730 83 643 q 186 877 135 817 q 311 969 237 938 q 480 1001 385 1001 q 670 962 593 1001 q 789 854 746 923 q 844 699 832 786 l 713 699 q 679 796 705 752 q 604 867 652 840 q 480 894 556 894 q 361 869 412 894 q 279 797 311 844 q 230 684 246 750 q 214 534 214 617 l 214 456 q 234 303 214 370 q 292 189 254 236 q 381 117 329 142 q 496 93 433 93 q 609 105 566 93 q 677 133 652 117 q 714 165 701 150 l 714 386 l 486 386 l 486 492 l 844 492 m 554 -84 l 554 -138 q 530 -253 554 -191 q 456 -356 506 -315 l 385 -307 q 422 -227 410 -268 q 435 -139 435 -186 l 435 -84 l 554 -84 z "},"ģ":{"ha":780,"x_min":66,"x_max":685,"o":"m 571 734 l 685 734 l 685 16 q 646 -150 685 -81 q 536 -254 606 -218 q 374 -290 466 -290 q 285 -278 336 -290 q 185 -238 234 -266 q 102 -162 136 -210 l 168 -87 q 265 -165 214 -143 q 365 -186 315 -186 q 468 -164 425 -186 q 535 -98 511 -142 q 559 9 559 -54 l 559 572 l 571 734 m 66 359 l 66 373 q 86 526 66 457 q 143 644 106 595 q 235 721 181 694 q 355 747 288 747 q 476 723 425 747 q 565 653 528 699 q 622 543 601 608 q 651 397 643 479 l 651 335 q 622 190 644 254 q 565 80 601 125 q 476 11 528 35 q 354 -14 424 -14 q 235 14 288 -14 q 144 92 182 42 q 86 211 106 142 q 66 359 66 279 m 191 373 l 191 359 q 202 256 191 304 q 237 171 214 208 q 297 114 260 134 q 385 93 334 93 q 488 119 447 93 q 552 189 528 146 q 590 283 576 233 l 590 447 q 567 519 583 484 q 528 582 552 554 q 469 625 504 609 q 386 642 433 642 q 297 620 334 642 q 237 562 260 599 q 202 476 214 525 q 191 373 191 428 m 311 850 l 311 938 q 326 1018 311 978 q 362 1090 340 1057 q 406 1141 385 1122 l 478 1085 q 446 1009 455 1044 q 437 932 437 974 l 437 850 l 311 850 z "},"Ĥ":{"ha":991,"x_min":115,"x_max":873,"o":"m 760 563 l 760 456 l 225 456 l 225 563 l 760 563 m 245 987 l 245 0 l 115 0 l 115 987 l 245 987 m 873 987 l 873 0 l 743 0 l 743 987 l 873 987 m 521 1260 l 689 1075 l 689 1068 l 585 1068 l 483 1183 l 382 1068 l 279 1068 l 279 1076 l 445 1260 l 521 1260 z "},"ĥ":{"ha":765,"x_min":96,"x_max":673,"o":"m 221 1042 l 221 0 l 96 0 l 96 1042 l 221 1042 m 191 395 l 139 397 q 161 536 140 472 q 222 648 183 600 q 316 721 262 695 q 437 747 371 747 q 535 733 492 747 q 609 686 578 718 q 656 604 640 654 q 673 481 673 553 l 673 0 l 547 0 l 547 482 q 530 575 547 540 q 480 626 513 610 q 400 642 448 642 q 315 622 353 642 q 249 568 277 602 q 207 489 222 533 q 191 395 191 444 m 378 1259 l 546 1074 l 546 1067 l 441 1067 l 340 1182 l 239 1067 l 136 1067 l 136 1075 l 302 1259 l 378 1259 z "},"Ĩ":{"ha":378,"x_min":-50,"x_max":430,"o":"m 255 987 l 255 0 l 124 0 l 124 987 l 255 987 m 345 1246 l 430 1239 q 410 1152 430 1190 q 358 1095 391 1115 q 283 1074 325 1074 q 227 1084 249 1074 q 186 1106 204 1094 q 150 1129 169 1119 q 102 1139 130 1139 q 54 1117 73 1139 q 35 1063 35 1095 l -50 1067 q -31 1155 -50 1117 q 22 1214 -12 1192 q 96 1235 55 1235 q 147 1225 125 1235 q 189 1203 169 1215 q 229 1180 208 1190 q 277 1171 250 1171 q 326 1193 306 1171 q 345 1246 345 1215 z "},"ĩ":{"ha":344,"x_min":-68,"x_max":412,"o":"m 231 734 l 231 0 l 106 0 l 106 734 l 231 734 m 327 1027 l 412 1019 q 392 932 412 970 q 339 875 372 895 q 265 854 307 854 q 208 864 231 854 q 168 887 186 874 q 131 909 151 899 q 83 919 112 919 q 36 897 55 919 q 16 844 16 876 l -68 848 q -49 935 -68 897 q 3 994 -30 972 q 77 1015 37 1015 q 129 1005 106 1015 q 170 983 151 996 q 211 961 190 970 q 259 951 232 951 q 307 973 288 951 q 327 1027 327 995 z "},"Ī":{"ha":378,"x_min":-35,"x_max":420,"o":"m 255 987 l 255 0 l 124 0 l 124 987 l 255 987 m 420 1204 l 420 1107 l -35 1107 l -35 1204 l 420 1204 z "},"ī":{"ha":344,"x_min":-53,"x_max":402,"o":"m 231 734 l 231 0 l 106 0 l 106 734 l 231 734 m 402 984 l 402 888 l -53 888 l -53 984 l 402 984 z "},"Ĭ":{"ha":378,"x_min":-14,"x_max":392,"o":"m 255 987 l 255 0 l 124 0 l 124 987 l 255 987 m 290 1232 l 392 1232 q 368 1138 392 1179 q 298 1074 343 1097 q 190 1051 252 1051 q 41 1102 96 1051 q -14 1232 -14 1152 l 88 1232 q 111 1162 88 1192 q 190 1131 134 1131 q 267 1162 244 1131 q 290 1232 290 1192 z "},"ĭ":{"ha":344,"x_min":-32,"x_max":374,"o":"m 231 734 l 231 0 l 106 0 l 106 734 l 231 734 m 272 1013 l 374 1013 q 349 919 374 960 q 279 854 325 878 q 172 831 234 831 q 23 882 77 831 q -32 1013 -32 932 l 70 1013 q 93 942 70 972 q 172 911 116 911 q 249 942 226 911 q 272 1013 272 972 z "},"Į":{"ha":378,"x_min":16,"x_max":255,"o":"m 255 987 l 255 0 l 124 0 l 124 987 l 255 987 m 191 45 l 241 6 q 185 -39 212 -16 q 142 -89 159 -62 q 125 -144 125 -115 q 137 -180 125 -167 q 178 -194 149 -194 q 218 -188 200 -194 q 245 -176 235 -181 l 255 -258 q 212 -278 238 -269 q 146 -288 186 -288 q 53 -255 91 -288 q 16 -159 16 -222 q 34 -86 16 -122 q 90 -17 52 -50 q 191 45 129 16 z "},"į":{"ha":338,"x_min":-4,"x_max":245,"o":"m 232 734 l 232 0 l 106 0 l 106 734 l 232 734 m 96 928 q 115 980 96 959 q 170 1001 134 1001 q 225 980 206 1001 q 245 928 245 959 q 225 879 245 899 q 170 858 206 858 q 115 879 134 858 q 96 928 96 899 m 171 39 l 221 0 q 165 -45 192 -22 q 122 -95 139 -68 q 105 -151 105 -121 q 117 -186 105 -173 q 158 -200 129 -200 q 198 -194 180 -200 q 226 -182 216 -187 l 235 -264 q 192 -284 218 -275 q 126 -294 166 -294 q 34 -261 71 -294 q -4 -165 -4 -229 q 14 -92 -4 -128 q 71 -23 32 -56 q 171 39 109 10 z "},"İ":{"ha":378,"x_min":115,"x_max":264,"o":"m 255 987 l 255 0 l 124 0 l 124 987 l 255 987 m 115 1146 q 134 1197 115 1176 q 189 1218 153 1218 q 244 1197 225 1218 q 264 1146 264 1176 q 244 1096 264 1116 q 189 1075 225 1075 q 134 1096 153 1075 q 115 1146 115 1116 z "},"IJ":{"ha":1144,"x_min":124,"x_max":1037,"o":"m 255 987 l 255 0 l 124 0 l 124 987 l 255 987 m 907 288 l 907 987 l 1037 987 l 1037 288 q 997 123 1037 191 q 887 21 957 56 q 726 -14 817 -14 q 564 18 635 -14 q 454 113 494 49 q 414 273 414 176 l 545 273 q 568 171 545 211 q 632 112 591 131 q 726 93 673 93 q 818 115 777 93 q 883 181 859 137 q 907 288 907 224 z "},"ij":{"ha":670,"x_min":96,"x_max":572,"o":"m 232 734 l 232 0 l 106 0 l 106 734 l 232 734 m 96 928 q 115 980 96 959 q 170 1001 134 1001 q 225 980 206 1001 q 245 928 245 959 q 225 879 245 899 q 170 858 206 858 q 115 879 134 858 q 96 928 96 899 m 437 734 l 563 734 l 563 -87 q 542 -201 563 -155 q 478 -272 520 -248 q 371 -296 435 -296 q 331 -293 354 -296 q 293 -285 309 -290 l 294 -184 q 323 -188 307 -186 q 351 -190 339 -190 q 398 -180 379 -190 q 427 -147 417 -170 q 437 -87 437 -125 l 437 734 m 424 928 q 443 980 424 959 q 498 1001 462 1001 q 553 980 534 1001 q 572 928 572 959 q 553 879 572 899 q 498 858 534 858 q 443 879 462 858 q 424 928 424 899 z "},"Ĵ":{"ha":766,"x_min":36,"x_max":784,"o":"m 529 288 l 529 987 l 659 987 l 659 288 q 619 123 659 191 q 509 21 579 56 q 348 -14 439 -14 q 186 18 257 -14 q 76 113 116 49 q 36 273 36 176 l 167 273 q 190 171 167 211 q 254 112 213 131 q 348 93 295 93 q 440 115 399 93 q 505 181 481 137 q 529 288 529 224 m 616 1251 l 784 1066 l 784 1059 l 680 1059 l 578 1174 l 477 1059 l 374 1059 l 374 1067 l 540 1251 l 616 1251 z "},"ĵ":{"ha":350,"x_min":-52,"x_max":387,"o":"m 117 734 l 243 734 l 243 -60 q 217 -189 243 -136 q 142 -269 191 -242 q 24 -296 93 -296 q -14 -294 3 -296 q -52 -285 -32 -292 l -42 -184 q -8 -191 -32 -189 q 24 -193 15 -193 q 74 -177 54 -193 q 106 -132 95 -161 q 117 -60 117 -102 l 117 734 m 218 1014 l 387 829 l 387 822 l 282 822 l 180 937 l 79 822 l -24 822 l -24 829 l 142 1014 l 218 1014 z "},"Ķ":{"ha":871,"x_min":115,"x_max":871,"o":"m 245 987 l 245 0 l 115 0 l 115 987 l 245 987 m 842 987 l 431 527 l 201 288 l 179 427 l 353 618 l 684 987 l 842 987 m 715 0 l 350 481 l 428 585 l 871 0 l 715 0 m 507 -17 l 507 -71 q 483 -186 507 -124 q 408 -289 458 -248 l 337 -239 q 375 -160 362 -201 q 387 -72 387 -119 l 387 -17 l 507 -17 z "},"ķ":{"ha":704,"x_min":96,"x_max":703,"o":"m 222 1042 l 222 0 l 96 0 l 96 1042 l 222 1042 m 670 734 l 350 391 l 171 205 l 161 339 l 289 492 l 517 734 l 670 734 m 555 0 l 294 350 l 359 462 l 703 0 l 555 0 m 418 -30 l 418 -83 q 394 -199 418 -137 q 319 -302 370 -260 l 248 -252 q 286 -173 273 -214 q 298 -85 298 -132 l 298 -30 l 418 -30 z "},"Ĺ":{"ha":748,"x_min":110,"x_max":713,"o":"m 713 106 l 713 0 l 220 0 l 220 106 l 713 106 m 245 987 l 245 0 l 115 0 l 115 987 l 245 987 m 110 1050 l 241 1249 l 393 1249 l 211 1050 l 110 1050 z "},"ĺ":{"ha":338,"x_min":100,"x_max":382,"o":"m 232 1042 l 232 0 l 106 0 l 106 1042 l 232 1042 m 100 1118 l 231 1318 l 382 1318 l 201 1118 l 100 1118 z "},"Ļ":{"ha":748,"x_min":115,"x_max":713,"o":"m 713 106 l 713 0 l 220 0 l 220 106 l 713 106 m 245 987 l 245 0 l 115 0 l 115 987 l 245 987 m 479 -71 l 479 -125 q 455 -240 479 -178 q 381 -343 431 -302 l 310 -294 q 348 -214 335 -255 q 360 -126 360 -174 l 360 -71 l 479 -71 z "},"ļ":{"ha":338,"x_min":58,"x_max":232,"o":"m 232 1042 l 232 0 l 106 0 l 106 1042 l 232 1042 m 228 -71 l 228 -125 q 204 -240 228 -178 q 130 -343 180 -302 l 58 -294 q 96 -214 83 -255 q 109 -126 109 -174 l 109 -71 l 228 -71 z "},"Ľ":{"ha":748,"x_min":115,"x_max":713,"o":"m 713 106 l 713 0 l 220 0 l 220 106 l 713 106 m 245 987 l 245 0 l 115 0 l 115 987 l 245 987 m 551 988 l 551 935 q 527 819 551 881 q 453 716 503 758 l 382 766 q 419 845 407 804 q 432 933 432 886 l 432 988 l 551 988 z "},"ľ":{"ha":439,"x_min":106,"x_max":465,"o":"m 232 1042 l 232 0 l 106 0 l 106 1042 l 232 1042 m 465 1043 l 465 989 q 440 874 465 936 q 366 771 416 812 l 295 821 q 333 900 320 859 q 345 988 345 941 l 345 1043 l 465 1043 z "},"Ŀ":{"ha":748,"x_min":115,"x_max":713,"o":"m 713 106 l 713 0 l 220 0 l 220 106 l 713 106 m 245 987 l 245 0 l 115 0 l 115 987 l 245 987 m 397 540 q 416 591 397 570 q 471 612 435 612 q 527 591 507 612 q 546 540 546 570 q 527 489 546 510 q 471 469 507 469 q 416 489 435 469 q 397 540 397 510 z "},"ŀ":{"ha":487,"x_min":106,"x_max":457,"o":"m 232 1042 l 232 0 l 106 0 l 106 1042 l 232 1042 m 309 530 q 327 581 309 559 q 382 602 346 602 q 438 581 418 602 q 457 530 457 559 q 438 479 457 500 q 382 458 418 458 q 327 479 346 458 q 309 530 309 500 z "},"Ń":{"ha":991,"x_min":115,"x_max":874,"o":"m 874 987 l 874 0 l 743 0 l 245 762 l 245 0 l 115 0 l 115 987 l 245 987 l 745 224 l 745 987 l 874 987 m 423 1053 l 555 1253 l 706 1253 l 524 1053 l 423 1053 z "},"ń":{"ha":767,"x_min":96,"x_max":673,"o":"m 221 577 l 221 0 l 96 0 l 96 734 l 214 734 l 221 577 m 191 395 l 139 397 q 161 536 140 472 q 222 648 183 600 q 316 721 262 695 q 437 747 371 747 q 535 733 492 747 q 609 686 578 718 q 656 604 640 654 q 673 481 673 553 l 673 0 l 547 0 l 547 482 q 530 575 547 540 q 480 626 513 610 q 400 642 448 642 q 315 622 353 642 q 249 568 277 602 q 207 489 222 533 q 191 395 191 444 m 319 842 l 451 1042 l 602 1042 l 420 842 l 319 842 z "},"Ņ":{"ha":991,"x_min":115,"x_max":874,"o":"m 874 987 l 874 0 l 743 0 l 245 762 l 245 0 l 115 0 l 115 987 l 245 987 l 745 224 l 745 987 l 874 987 m 547 -71 l 547 -125 q 523 -240 547 -178 q 449 -343 499 -302 l 378 -294 q 415 -214 403 -255 q 428 -126 428 -174 l 428 -71 l 547 -71 z "},"ņ":{"ha":767,"x_min":96,"x_max":673,"o":"m 221 577 l 221 0 l 96 0 l 96 734 l 214 734 l 221 577 m 191 395 l 139 397 q 161 536 140 472 q 222 648 183 600 q 316 721 262 695 q 437 747 371 747 q 535 733 492 747 q 609 686 578 718 q 656 604 640 654 q 673 481 673 553 l 673 0 l 547 0 l 547 482 q 530 575 547 540 q 480 626 513 610 q 400 642 448 642 q 315 622 353 642 q 249 568 277 602 q 207 489 222 533 q 191 395 191 444 m 441 -71 l 441 -125 q 417 -240 441 -178 q 342 -343 393 -302 l 271 -294 q 309 -214 296 -255 q 321 -126 321 -174 l 321 -71 l 441 -71 z "},"Ň":{"ha":991,"x_min":115,"x_max":874,"o":"m 874 987 l 874 0 l 743 0 l 245 762 l 245 0 l 115 0 l 115 987 l 245 987 l 745 224 l 745 987 l 874 987 m 389 1252 l 492 1137 l 594 1252 l 703 1252 l 703 1245 l 530 1059 l 453 1059 l 283 1245 l 283 1252 l 389 1252 z "},"ň":{"ha":767,"x_min":96,"x_max":673,"o":"m 221 577 l 221 0 l 96 0 l 96 734 l 214 734 l 221 577 m 191 395 l 139 397 q 161 536 140 472 q 222 648 183 600 q 316 721 262 695 q 437 747 371 747 q 535 733 492 747 q 609 686 578 718 q 656 604 640 654 q 673 481 673 553 l 673 0 l 547 0 l 547 482 q 530 575 547 540 q 480 626 513 610 q 400 642 448 642 q 315 622 353 642 q 249 568 277 602 q 207 489 222 533 q 191 395 191 444 m 286 1041 l 388 926 l 490 1041 l 599 1041 l 599 1034 l 427 848 l 349 848 l 180 1034 l 180 1041 l 286 1041 z "},"ʼn":{"ha":767,"x_min":-47,"x_max":673,"o":"m 221 577 l 221 0 l 96 0 l 96 734 l 214 734 l 221 577 m 191 395 l 139 397 q 161 536 140 472 q 222 648 183 600 q 316 721 262 695 q 437 747 371 747 q 535 733 492 747 q 609 686 578 718 q 656 604 640 654 q 673 481 673 553 l 673 0 l 547 0 l 547 482 q 530 575 547 540 q 480 626 513 610 q 400 642 448 642 q 315 622 353 642 q 249 568 277 602 q 207 489 222 533 q 191 395 191 444 m 123 1045 l 123 991 q 99 876 123 938 q 24 773 75 814 l -47 823 q -9 902 -22 861 q 3 990 3 943 l 3 1045 l 123 1045 z "},"Ō":{"ha":956,"x_min":81,"x_max":875,"o":"m 875 525 l 875 463 q 847 263 875 351 q 767 113 819 175 q 642 19 715 52 q 479 -14 569 -14 q 318 19 391 -14 q 192 113 245 52 q 110 263 139 175 q 81 463 81 351 l 81 525 q 110 724 81 636 q 191 874 138 812 q 317 968 244 936 q 477 1001 390 1001 q 641 968 568 1001 q 766 874 713 936 q 847 724 819 812 q 875 525 875 636 m 745 463 l 745 526 q 727 682 745 614 q 675 796 709 750 q 590 866 640 842 q 477 890 541 890 q 367 866 416 890 q 283 796 318 842 q 229 682 248 750 q 210 526 210 614 l 210 463 q 229 306 210 374 q 284 191 248 237 q 369 121 319 144 q 479 97 418 97 q 592 121 543 97 q 676 191 642 144 q 728 306 710 237 q 745 463 745 374 m 711 1198 l 711 1101 l 256 1101 l 256 1198 l 711 1198 z "},"ō":{"ha":792,"x_min":62,"x_max":730,"o":"m 62 359 l 62 374 q 85 522 62 454 q 152 641 109 590 q 257 719 195 691 q 395 747 319 747 q 535 719 473 747 q 641 641 597 691 q 707 522 684 590 q 730 374 730 454 l 730 359 q 707 212 730 279 q 641 93 684 144 q 535 15 597 43 q 397 -14 474 -14 q 258 15 319 -14 q 152 93 196 43 q 85 212 109 144 q 62 359 62 279 m 188 374 l 188 359 q 201 255 188 304 q 240 170 214 207 q 305 111 266 132 q 397 90 345 90 q 487 111 448 90 q 552 170 526 132 q 591 255 578 207 q 604 359 604 304 l 604 374 q 591 477 604 429 q 552 563 578 526 q 487 623 526 601 q 395 644 448 644 q 305 623 344 644 q 240 563 266 601 q 201 477 214 526 q 188 374 188 429 m 621 985 l 621 889 l 166 889 l 166 985 l 621 985 z "},"Ŏ":{"ha":956,"x_min":81,"x_max":875,"o":"m 875 525 l 875 463 q 847 263 875 351 q 767 113 819 175 q 642 19 715 52 q 479 -14 569 -14 q 318 19 391 -14 q 192 113 245 52 q 110 263 139 175 q 81 463 81 351 l 81 525 q 110 724 81 636 q 191 874 138 812 q 317 968 244 936 q 477 1001 390 1001 q 641 968 568 1001 q 766 874 713 936 q 847 724 819 812 q 875 525 875 636 m 745 463 l 745 526 q 727 682 745 614 q 675 796 709 750 q 590 866 640 842 q 477 890 541 890 q 367 866 416 890 q 283 796 318 842 q 229 682 248 750 q 210 526 210 614 l 210 463 q 229 306 210 374 q 284 191 248 237 q 369 121 319 144 q 479 97 418 97 q 592 121 543 97 q 676 191 642 144 q 728 306 710 237 q 745 463 745 374 m 581 1226 l 682 1226 q 658 1132 682 1173 q 588 1068 633 1091 q 480 1045 543 1045 q 331 1096 386 1045 q 277 1226 277 1146 l 378 1226 q 401 1156 378 1186 q 480 1125 425 1125 q 557 1156 534 1125 q 581 1226 581 1186 z "},"ŏ":{"ha":792,"x_min":62,"x_max":730,"o":"m 62 359 l 62 374 q 85 522 62 454 q 152 641 109 590 q 257 719 195 691 q 395 747 319 747 q 535 719 473 747 q 641 641 597 691 q 707 522 684 590 q 730 374 730 454 l 730 359 q 707 212 730 279 q 641 93 684 144 q 535 15 597 43 q 397 -14 474 -14 q 258 15 319 -14 q 152 93 196 43 q 85 212 109 144 q 62 359 62 279 m 188 374 l 188 359 q 201 255 188 304 q 240 170 214 207 q 305 111 266 132 q 397 90 345 90 q 487 111 448 90 q 552 170 526 132 q 591 255 578 207 q 604 359 604 304 l 604 374 q 591 477 604 429 q 552 563 578 526 q 487 623 526 601 q 395 644 448 644 q 305 623 344 644 q 240 563 266 601 q 201 477 214 526 q 188 374 188 429 m 491 1014 l 593 1014 q 568 920 593 961 q 498 856 544 879 q 391 833 453 833 q 242 883 296 833 q 187 1014 187 934 l 289 1014 q 312 943 289 974 q 391 913 335 913 q 468 943 445 913 q 491 1014 491 974 z "},"Ő":{"ha":956,"x_min":81,"x_max":875,"o":"m 875 525 l 875 463 q 847 263 875 351 q 767 113 819 175 q 642 19 715 52 q 479 -14 569 -14 q 318 19 391 -14 q 192 113 245 52 q 110 263 139 175 q 81 463 81 351 l 81 525 q 110 724 81 636 q 191 874 138 812 q 317 968 244 936 q 477 1001 390 1001 q 641 968 568 1001 q 766 874 713 936 q 847 724 819 812 q 875 525 875 636 m 745 463 l 745 526 q 727 682 745 614 q 675 796 709 750 q 590 866 640 842 q 477 890 541 890 q 367 866 416 890 q 283 796 318 842 q 229 682 248 750 q 210 526 210 614 l 210 463 q 229 306 210 374 q 284 191 248 237 q 369 121 319 144 q 479 97 418 97 q 592 121 543 97 q 676 191 642 144 q 728 306 710 237 q 745 463 745 374 m 500 1048 l 656 1253 l 797 1253 l 615 1048 l 500 1048 m 311 1048 l 426 1253 l 560 1253 l 412 1048 l 311 1048 z "},"ő":{"ha":792,"x_min":62,"x_max":730,"o":"m 62 359 l 62 374 q 85 522 62 454 q 152 641 109 590 q 257 719 195 691 q 395 747 319 747 q 535 719 473 747 q 641 641 597 691 q 707 522 684 590 q 730 374 730 454 l 730 359 q 707 212 730 279 q 641 93 684 144 q 535 15 597 43 q 397 -14 474 -14 q 258 15 319 -14 q 152 93 196 43 q 85 212 109 144 q 62 359 62 279 m 188 374 l 188 359 q 201 255 188 304 q 240 170 214 207 q 305 111 266 132 q 397 90 345 90 q 487 111 448 90 q 552 170 526 132 q 591 255 578 207 q 604 359 604 304 l 604 374 q 591 477 604 429 q 552 563 578 526 q 487 623 526 601 q 395 644 448 644 q 305 623 344 644 q 240 563 266 601 q 201 477 214 526 q 188 374 188 429 m 411 836 l 567 1041 l 707 1041 l 526 836 l 411 836 m 221 836 l 336 1041 l 471 1041 l 323 836 l 221 836 z "},"Ŕ":{"ha":856,"x_min":115,"x_max":831,"o":"m 115 987 l 441 987 q 630 954 553 987 q 747 853 707 920 q 787 691 787 787 q 760 567 787 623 q 681 472 732 511 q 559 414 630 433 l 522 400 l 215 400 l 214 507 l 446 507 q 563 531 516 507 q 633 598 610 556 q 657 691 657 640 q 635 791 657 748 q 565 857 612 833 q 441 880 517 880 l 245 880 l 245 0 l 115 0 l 115 987 m 692 0 l 452 448 l 588 448 l 831 8 l 831 0 l 692 0 m 345 1053 l 476 1253 l 627 1253 l 446 1053 l 345 1053 z "},"ŕ":{"ha":471,"x_min":96,"x_max":490,"o":"m 221 618 l 221 0 l 96 0 l 96 734 l 218 734 l 221 618 m 450 738 l 450 621 q 420 626 434 625 q 389 627 406 627 q 312 613 345 627 q 256 575 279 600 q 219 517 233 551 q 202 444 206 484 l 167 423 q 180 548 167 490 q 221 651 193 606 q 292 722 249 696 q 395 747 335 747 q 426 744 408 747 q 450 738 444 741 m 208 842 l 339 1042 l 490 1042 l 309 842 l 208 842 z "},"Ŗ":{"ha":856,"x_min":115,"x_max":831,"o":"m 115 987 l 441 987 q 630 954 553 987 q 747 853 707 920 q 787 691 787 787 q 760 567 787 623 q 681 472 732 511 q 559 414 630 433 l 522 400 l 215 400 l 214 507 l 446 507 q 563 531 516 507 q 633 598 610 556 q 657 691 657 640 q 635 791 657 748 q 565 857 612 833 q 441 880 517 880 l 245 880 l 245 0 l 115 0 l 115 987 m 692 0 l 452 448 l 588 448 l 831 8 l 831 0 l 692 0 m 473 -71 l 473 -125 q 449 -240 473 -178 q 375 -343 425 -302 l 304 -294 q 341 -214 329 -255 q 354 -126 354 -174 l 354 -71 l 473 -71 z "},"ŗ":{"ha":471,"x_min":56,"x_max":450,"o":"m 221 618 l 221 0 l 96 0 l 96 734 l 218 734 l 221 618 m 450 738 l 450 621 q 420 626 434 625 q 389 627 406 627 q 312 613 345 627 q 256 575 279 600 q 219 517 233 551 q 202 444 206 484 l 167 423 q 180 548 167 490 q 221 651 193 606 q 292 722 249 696 q 395 747 335 747 q 426 744 408 747 q 450 738 444 741 m 226 -71 l 226 -124 q 202 -239 226 -178 q 127 -342 178 -301 l 56 -293 q 94 -214 81 -254 q 106 -125 106 -173 l 106 -71 l 226 -71 z "},"Ř":{"ha":856,"x_min":115,"x_max":831,"o":"m 115 987 l 441 987 q 630 954 553 987 q 747 853 707 920 q 787 691 787 787 q 760 567 787 623 q 681 472 732 511 q 559 414 630 433 l 522 400 l 215 400 l 214 507 l 446 507 q 563 531 516 507 q 633 598 610 556 q 657 691 657 640 q 635 791 657 748 q 565 857 612 833 q 441 880 517 880 l 245 880 l 245 0 l 115 0 l 115 987 m 692 0 l 452 448 l 588 448 l 831 8 l 831 0 l 692 0 m 311 1252 l 413 1137 l 515 1252 l 624 1252 l 624 1245 l 452 1059 l 374 1059 l 205 1245 l 205 1252 l 311 1252 z "},"ř":{"ha":471,"x_min":68,"x_max":487,"o":"m 221 618 l 221 0 l 96 0 l 96 734 l 218 734 l 221 618 m 450 738 l 450 621 q 420 626 434 625 q 389 627 406 627 q 312 613 345 627 q 256 575 279 600 q 219 517 233 551 q 202 444 206 484 l 167 423 q 180 548 167 490 q 221 651 193 606 q 292 722 249 696 q 395 747 335 747 q 426 744 408 747 q 450 738 444 741 m 174 1041 l 276 926 l 378 1041 l 487 1041 l 487 1034 l 315 848 l 237 848 l 68 1034 l 68 1041 l 174 1041 z "},"Ś":{"ha":825,"x_min":55,"x_max":772,"o":"m 641 250 q 630 311 641 284 q 594 359 620 338 q 522 401 568 381 q 406 441 476 420 q 274 489 333 463 q 173 551 215 516 q 109 630 131 585 q 86 732 86 675 q 110 839 86 790 q 178 924 134 888 q 284 981 222 960 q 422 1001 346 1001 q 611 959 533 1001 q 729 848 688 916 q 770 703 770 780 l 640 703 q 616 801 640 758 q 544 869 592 844 q 422 894 496 894 q 307 873 352 894 q 239 816 261 852 q 217 734 217 780 q 230 677 217 703 q 272 630 243 652 q 343 590 300 608 q 448 555 387 572 q 593 502 532 531 q 694 436 654 473 q 753 354 734 400 q 772 251 772 309 q 748 142 772 191 q 678 58 724 93 q 569 5 633 24 q 428 -14 506 -14 q 293 5 359 -14 q 173 62 227 24 q 87 156 119 100 q 55 286 55 212 l 185 286 q 205 199 185 235 q 259 139 224 163 q 337 104 293 115 q 428 93 380 93 q 544 112 496 93 q 616 166 591 131 q 641 250 641 201 m 353 1055 l 484 1254 l 635 1254 l 454 1055 l 353 1055 z "},"ś":{"ha":717,"x_min":64,"x_max":648,"o":"m 523 195 q 511 245 523 222 q 463 288 499 269 q 354 321 427 307 q 244 352 293 334 q 160 395 195 370 q 108 454 126 420 q 90 533 90 488 q 109 615 90 576 q 164 684 128 654 q 250 730 199 713 q 361 747 300 747 q 512 716 450 747 q 608 633 574 685 q 641 518 641 581 l 515 518 q 497 577 515 549 q 445 625 479 606 q 361 644 411 644 q 277 628 309 644 q 230 588 245 612 q 216 536 216 564 q 223 500 216 516 q 248 471 230 484 q 300 446 267 458 q 385 423 333 435 q 533 374 475 403 q 620 304 591 346 q 648 204 648 263 q 628 116 648 156 q 571 47 608 76 q 481 2 533 18 q 365 -14 429 -14 q 201 21 268 -14 q 99 111 134 56 q 64 227 64 165 l 191 227 q 220 145 193 175 q 287 102 248 115 q 365 90 326 90 q 451 103 416 90 q 505 140 486 117 q 523 195 523 164 m 312 842 l 444 1042 l 595 1042 l 413 842 l 312 842 z "},"Ŝ":{"ha":825,"x_min":55,"x_max":772,"o":"m 641 250 q 630 311 641 284 q 594 359 620 338 q 522 401 568 381 q 406 441 476 420 q 274 489 333 463 q 173 551 215 516 q 109 630 131 585 q 86 732 86 675 q 110 839 86 790 q 178 924 134 888 q 284 981 222 960 q 422 1001 346 1001 q 611 959 533 1001 q 729 848 688 916 q 770 703 770 780 l 640 703 q 616 801 640 758 q 544 869 592 844 q 422 894 496 894 q 307 873 352 894 q 239 816 261 852 q 217 734 217 780 q 230 677 217 703 q 272 630 243 652 q 343 590 300 608 q 448 555 387 572 q 593 502 532 531 q 694 436 654 473 q 753 354 734 400 q 772 251 772 309 q 748 142 772 191 q 678 58 724 93 q 569 5 633 24 q 428 -14 506 -14 q 293 5 359 -14 q 173 62 227 24 q 87 156 119 100 q 55 286 55 212 l 185 286 q 205 199 185 235 q 259 139 224 163 q 337 104 293 115 q 428 93 380 93 q 544 112 496 93 q 616 166 591 131 q 641 250 641 201 m 460 1254 l 628 1069 l 628 1062 l 524 1062 l 422 1177 l 321 1062 l 218 1062 l 218 1069 l 384 1254 l 460 1254 z "},"ŝ":{"ha":717,"x_min":64,"x_max":648,"o":"m 523 195 q 511 245 523 222 q 463 288 499 269 q 354 321 427 307 q 244 352 293 334 q 160 395 195 370 q 108 454 126 420 q 90 533 90 488 q 109 615 90 576 q 164 684 128 654 q 250 730 199 713 q 361 747 300 747 q 512 716 450 747 q 608 633 574 685 q 641 518 641 581 l 515 518 q 497 577 515 549 q 445 625 479 606 q 361 644 411 644 q 277 628 309 644 q 230 588 245 612 q 216 536 216 564 q 223 500 216 516 q 248 471 230 484 q 300 446 267 458 q 385 423 333 435 q 533 374 475 403 q 620 304 591 346 q 648 204 648 263 q 628 116 648 156 q 571 47 608 76 q 481 2 533 18 q 365 -14 429 -14 q 201 21 268 -14 q 99 111 134 56 q 64 227 64 165 l 191 227 q 220 145 193 175 q 287 102 248 115 q 365 90 326 90 q 451 103 416 90 q 505 140 486 117 q 523 195 523 164 m 419 1042 l 587 857 l 587 850 l 483 850 l 381 964 l 280 850 l 177 850 l 177 857 l 343 1042 l 419 1042 z "},"Ş":{"ha":825,"x_min":55,"x_max":772,"o":"m 641 250 q 630 311 641 284 q 594 359 620 338 q 522 401 568 381 q 406 441 476 420 q 274 489 333 463 q 173 551 215 516 q 109 630 131 585 q 86 732 86 675 q 110 839 86 790 q 178 924 134 888 q 284 981 222 960 q 422 1001 346 1001 q 611 959 533 1001 q 729 848 688 916 q 770 703 770 780 l 640 703 q 616 801 640 758 q 544 869 592 844 q 422 894 496 894 q 307 873 352 894 q 239 816 261 852 q 217 734 217 780 q 230 677 217 703 q 272 630 243 652 q 343 590 300 608 q 448 555 387 572 q 593 502 532 531 q 694 436 654 473 q 753 354 734 400 q 772 251 772 309 q 748 142 772 191 q 678 58 724 93 q 569 5 633 24 q 428 -14 506 -14 q 293 5 359 -14 q 173 62 227 24 q 87 156 119 100 q 55 286 55 212 l 185 286 q 205 199 185 235 q 259 139 224 163 q 337 104 293 115 q 428 93 380 93 q 544 112 496 93 q 616 166 591 131 q 641 250 641 201 m 385 -1 l 475 -1 l 467 -37 q 538 -69 506 -43 q 570 -154 570 -95 q 557 -212 570 -186 q 518 -257 544 -238 q 454 -286 492 -275 q 365 -296 416 -296 l 360 -223 q 417 -216 391 -223 q 457 -195 442 -210 q 473 -156 473 -180 q 461 -121 473 -134 q 426 -101 450 -108 q 363 -92 401 -95 l 385 -1 z "},"ş":{"ha":717,"x_min":64,"x_max":648,"o":"m 523 195 q 511 245 523 222 q 463 288 499 269 q 354 321 427 307 q 244 352 293 334 q 160 395 195 370 q 108 454 126 420 q 90 533 90 488 q 109 615 90 576 q 164 684 128 654 q 250 730 199 713 q 361 747 300 747 q 512 716 450 747 q 608 633 574 685 q 641 518 641 581 l 515 518 q 497 577 515 549 q 445 625 479 606 q 361 644 411 644 q 277 628 309 644 q 230 588 245 612 q 216 536 216 564 q 223 500 216 516 q 248 471 230 484 q 300 446 267 458 q 385 423 333 435 q 533 374 475 403 q 620 304 591 346 q 648 204 648 263 q 628 116 648 156 q 571 47 608 76 q 481 2 533 18 q 365 -14 429 -14 q 201 21 268 -14 q 99 111 134 56 q 64 227 64 165 l 191 227 q 220 145 193 175 q 287 102 248 115 q 365 90 326 90 q 451 103 416 90 q 505 140 486 117 q 523 195 523 164 m 340 -7 l 430 -7 l 422 -43 q 493 -75 461 -50 q 526 -160 526 -101 q 512 -218 526 -192 q 473 -263 499 -244 q 409 -292 448 -281 q 320 -302 371 -302 l 315 -229 q 372 -222 347 -229 q 413 -201 397 -216 q 428 -162 428 -186 q 416 -127 428 -140 q 381 -107 405 -114 q 319 -98 357 -101 l 340 -7 z "},"Ș":{"ha":825,"x_min":55,"x_max":772,"o":"m 641 250 q 630 311 641 284 q 594 359 620 338 q 522 401 568 381 q 406 441 476 420 q 274 489 333 463 q 173 551 215 516 q 109 630 131 585 q 86 732 86 675 q 110 839 86 790 q 178 924 134 888 q 284 981 222 960 q 422 1001 346 1001 q 611 959 533 1001 q 729 848 688 916 q 770 703 770 780 l 640 703 q 616 801 640 758 q 544 869 592 844 q 422 894 496 894 q 307 873 352 894 q 239 816 261 852 q 217 734 217 780 q 230 677 217 703 q 272 630 243 652 q 343 590 300 608 q 448 555 387 572 q 593 502 532 531 q 694 436 654 473 q 753 354 734 400 q 772 251 772 309 q 748 142 772 191 q 678 58 724 93 q 569 5 633 24 q 428 -14 506 -14 q 293 5 359 -14 q 173 62 227 24 q 87 156 119 100 q 55 286 55 212 l 185 286 q 205 199 185 235 q 259 139 224 163 q 337 104 293 115 q 428 93 380 93 q 544 112 496 93 q 616 166 591 131 q 641 250 641 201 m 485 -79 l 485 -132 q 461 -248 485 -186 q 387 -351 437 -309 l 315 -301 q 353 -222 340 -262 q 366 -134 366 -181 l 366 -79 l 485 -79 z "},"ș":{"ha":717,"x_min":64,"x_max":648,"o":"m 523 195 q 511 245 523 222 q 463 288 499 269 q 354 321 427 307 q 244 352 293 334 q 160 395 195 370 q 108 454 126 420 q 90 533 90 488 q 109 615 90 576 q 164 684 128 654 q 250 730 199 713 q 361 747 300 747 q 512 716 450 747 q 608 633 574 685 q 641 518 641 581 l 515 518 q 497 577 515 549 q 445 625 479 606 q 361 644 411 644 q 277 628 309 644 q 230 588 245 612 q 216 536 216 564 q 223 500 216 516 q 248 471 230 484 q 300 446 267 458 q 385 423 333 435 q 533 374 475 403 q 620 304 591 346 q 648 204 648 263 q 628 116 648 156 q 571 47 608 76 q 481 2 533 18 q 365 -14 429 -14 q 201 21 268 -14 q 99 111 134 56 q 64 227 64 165 l 191 227 q 220 145 193 175 q 287 102 248 115 q 365 90 326 90 q 451 103 416 90 q 505 140 486 117 q 523 195 523 164 m 440 -85 l 440 -138 q 416 -254 440 -192 q 342 -357 392 -315 l 271 -307 q 308 -228 296 -269 q 321 -140 321 -187 l 321 -85 l 440 -85 z "},"Š":{"ha":825,"x_min":55,"x_max":772,"o":"m 641 250 q 630 311 641 284 q 594 359 620 338 q 522 401 568 381 q 406 441 476 420 q 274 489 333 463 q 173 551 215 516 q 109 630 131 585 q 86 732 86 675 q 110 839 86 790 q 178 924 134 888 q 284 981 222 960 q 422 1001 346 1001 q 611 959 533 1001 q 729 848 688 916 q 770 703 770 780 l 640 703 q 616 801 640 758 q 544 869 592 844 q 422 894 496 894 q 307 873 352 894 q 239 816 261 852 q 217 734 217 780 q 230 677 217 703 q 272 630 243 652 q 343 590 300 608 q 448 555 387 572 q 593 502 532 531 q 694 436 654 473 q 753 354 734 400 q 772 251 772 309 q 748 142 772 191 q 678 58 724 93 q 569 5 633 24 q 428 -14 506 -14 q 293 5 359 -14 q 173 62 227 24 q 87 156 119 100 q 55 286 55 212 l 185 286 q 205 199 185 235 q 259 139 224 163 q 337 104 293 115 q 428 93 380 93 q 544 112 496 93 q 616 166 591 131 q 641 250 641 201 m 319 1253 l 421 1138 l 524 1253 l 632 1253 l 632 1246 l 460 1061 l 382 1061 l 213 1246 l 213 1253 l 319 1253 z "},"š":{"ha":717,"x_min":64,"x_max":648,"o":"m 523 195 q 511 245 523 222 q 463 288 499 269 q 354 321 427 307 q 244 352 293 334 q 160 395 195 370 q 108 454 126 420 q 90 533 90 488 q 109 615 90 576 q 164 684 128 654 q 250 730 199 713 q 361 747 300 747 q 512 716 450 747 q 608 633 574 685 q 641 518 641 581 l 515 518 q 497 577 515 549 q 445 625 479 606 q 361 644 411 644 q 277 628 309 644 q 230 588 245 612 q 216 536 216 564 q 223 500 216 516 q 248 471 230 484 q 300 446 267 458 q 385 423 333 435 q 533 374 475 403 q 620 304 591 346 q 648 204 648 263 q 628 116 648 156 q 571 47 608 76 q 481 2 533 18 q 365 -14 429 -14 q 201 21 268 -14 q 99 111 134 56 q 64 227 64 165 l 191 227 q 220 145 193 175 q 287 102 248 115 q 365 90 326 90 q 451 103 416 90 q 505 140 486 117 q 523 195 523 164 m 278 1041 l 380 926 l 483 1041 l 591 1041 l 591 1034 l 419 848 l 342 848 l 172 1034 l 172 1041 l 278 1041 z "},"Ț":{"ha":829,"x_min":34,"x_max":797,"o":"m 479 987 l 479 0 l 351 0 l 351 987 l 479 987 m 797 987 l 797 880 l 34 880 l 34 987 l 797 987 m 475 -78 l 475 -132 q 451 -247 475 -185 q 377 -350 427 -309 l 306 -300 q 343 -221 331 -262 q 356 -133 356 -180 l 356 -78 l 475 -78 z "},"ț":{"ha":454,"x_min":6,"x_max":406,"o":"m 403 734 l 403 637 l 6 637 l 6 734 l 403 734 m 140 912 l 266 912 l 266 182 q 277 125 266 144 q 307 100 289 106 q 347 94 326 94 q 379 97 362 94 q 406 102 397 100 l 406 0 q 367 -9 391 -5 q 309 -14 343 -14 q 224 5 263 -14 q 163 66 186 23 q 140 182 140 109 l 140 912 m 366 -78 l 366 -132 q 342 -247 366 -185 q 268 -350 318 -309 l 197 -300 q 234 -221 222 -262 q 247 -133 247 -180 l 247 -78 l 366 -78 z "},"Ţ":{"ha":829,"x_min":34,"x_max":797,"o":"m 479 987 l 479 0 l 351 0 l 351 987 l 479 987 m 797 987 l 797 880 l 34 880 l 34 987 l 797 987 m 375 0 l 465 0 l 457 -36 q 529 -68 496 -43 q 561 -153 561 -94 q 548 -211 561 -185 q 509 -256 534 -237 q 445 -285 483 -275 q 355 -295 406 -295 l 351 -222 q 407 -216 382 -222 q 448 -194 433 -209 q 463 -155 463 -179 q 452 -120 463 -133 q 416 -101 440 -107 q 354 -92 392 -94 l 375 0 z "},"ţ":{"ha":454,"x_min":6,"x_max":452,"o":"m 403 734 l 403 637 l 6 637 l 6 734 l 403 734 m 140 912 l 266 912 l 266 182 q 277 125 266 144 q 307 100 289 106 q 347 94 326 94 q 379 97 362 94 q 406 102 397 100 l 406 0 q 367 -9 391 -5 q 309 -14 343 -14 q 224 5 263 -14 q 163 66 186 23 q 140 182 140 109 l 140 912 m 266 0 l 356 0 l 348 -36 q 419 -68 387 -43 q 452 -153 452 -94 q 438 -211 452 -185 q 399 -256 425 -237 q 335 -285 374 -275 q 246 -295 297 -295 l 241 -222 q 298 -216 273 -222 q 339 -194 323 -209 q 354 -155 354 -179 q 342 -120 354 -133 q 307 -101 331 -107 q 245 -92 283 -94 l 266 0 z "},"Ť":{"ha":829,"x_min":34,"x_max":797,"o":"m 479 987 l 479 0 l 351 0 l 351 987 l 479 987 m 797 987 l 797 880 l 34 880 l 34 987 l 797 987 m 312 1251 l 414 1136 l 517 1251 l 625 1251 l 625 1244 l 453 1059 l 376 1059 l 206 1244 l 206 1251 l 312 1251 z "},"ť":{"ha":481,"x_min":6,"x_max":507,"o":"m 403 734 l 403 637 l 6 637 l 6 734 l 403 734 m 140 912 l 266 912 l 266 182 q 277 125 266 144 q 307 100 289 106 q 347 94 326 94 q 379 97 362 94 q 406 102 397 100 l 406 0 q 367 -9 391 -5 q 309 -14 343 -14 q 224 5 263 -14 q 163 66 186 23 q 140 182 140 109 l 140 912 m 507 1124 l 507 1071 q 483 956 507 1017 q 409 852 459 894 l 338 902 q 375 981 363 941 q 388 1069 388 1022 l 388 1124 l 507 1124 z "},"Ũ":{"ha":901,"x_min":95,"x_max":810,"o":"m 680 987 l 810 987 l 810 319 q 760 134 810 208 q 629 23 711 60 q 452 -14 547 -14 q 270 23 351 -14 q 142 134 189 60 q 95 319 95 208 l 95 987 l 224 987 l 224 319 q 253 192 224 242 q 333 117 281 142 q 452 93 384 93 q 571 117 520 93 q 651 192 623 142 q 680 319 680 242 l 680 987 m 608 1239 l 693 1232 q 673 1145 693 1182 q 621 1087 654 1107 q 547 1067 588 1067 q 490 1077 512 1067 q 450 1099 467 1086 q 413 1121 432 1112 q 365 1131 393 1131 q 317 1109 336 1131 q 298 1056 298 1088 l 213 1060 q 232 1147 213 1109 q 285 1206 252 1185 q 359 1227 318 1227 q 410 1218 388 1227 q 452 1195 432 1208 q 492 1173 471 1183 q 541 1163 513 1163 q 589 1185 569 1163 q 608 1239 608 1207 z "},"ũ":{"ha":766,"x_min":93,"x_max":671,"o":"m 545 170 l 545 734 l 671 734 l 671 0 l 551 0 l 545 170 m 568 324 l 621 326 q 605 190 621 252 q 556 83 590 128 q 467 12 522 37 q 334 -14 412 -14 q 236 2 280 -14 q 159 50 191 18 q 110 135 127 83 q 93 260 93 187 l 93 734 l 218 734 l 218 259 q 230 177 218 210 q 260 126 241 145 q 303 100 279 108 q 353 93 328 93 q 480 124 433 93 q 548 207 527 155 q 568 324 568 260 m 541 1028 l 625 1021 q 606 934 625 971 q 553 876 586 897 q 479 856 520 856 q 422 866 444 856 q 382 888 399 876 q 345 910 364 901 q 297 920 326 920 q 249 899 269 920 q 230 845 230 877 l 145 849 q 164 936 145 899 q 217 995 184 974 q 291 1017 250 1017 q 342 1007 320 1017 q 384 984 364 997 q 425 962 404 972 q 473 952 446 952 q 521 974 501 952 q 541 1028 541 996 z "},"Ū":{"ha":901,"x_min":95,"x_max":810,"o":"m 680 987 l 810 987 l 810 319 q 760 134 810 208 q 629 23 711 60 q 452 -14 547 -14 q 270 23 351 -14 q 142 134 189 60 q 95 319 95 208 l 95 987 l 224 987 l 224 319 q 253 192 224 242 q 333 117 281 142 q 452 93 384 93 q 571 117 520 93 q 651 192 623 142 q 680 319 680 242 l 680 987 m 684 1196 l 684 1100 l 229 1100 l 229 1196 l 684 1196 z "},"ū":{"ha":766,"x_min":93,"x_max":671,"o":"m 545 170 l 545 734 l 671 734 l 671 0 l 551 0 l 545 170 m 568 324 l 621 326 q 605 190 621 252 q 556 83 590 128 q 467 12 522 37 q 334 -14 412 -14 q 236 2 280 -14 q 159 50 191 18 q 110 135 127 83 q 93 260 93 187 l 93 734 l 218 734 l 218 259 q 230 177 218 210 q 260 126 241 145 q 303 100 279 108 q 353 93 328 93 q 480 124 433 93 q 548 207 527 155 q 568 324 568 260 m 616 985 l 616 889 l 161 889 l 161 985 l 616 985 z "},"Ŭ":{"ha":901,"x_min":95,"x_max":810,"o":"m 680 987 l 810 987 l 810 319 q 760 134 810 208 q 629 23 711 60 q 452 -14 547 -14 q 270 23 351 -14 q 142 134 189 60 q 95 319 95 208 l 95 987 l 224 987 l 224 319 q 253 192 224 242 q 333 117 281 142 q 452 93 384 93 q 571 117 520 93 q 651 192 623 142 q 680 319 680 242 l 680 987 m 553 1225 l 655 1225 q 631 1131 655 1172 q 561 1067 606 1090 q 453 1044 515 1044 q 304 1094 359 1044 q 250 1225 250 1145 l 351 1225 q 374 1154 351 1185 q 453 1124 397 1124 q 530 1154 507 1124 q 553 1225 553 1185 z "},"ŭ":{"ha":766,"x_min":93,"x_max":671,"o":"m 545 170 l 545 734 l 671 734 l 671 0 l 551 0 l 545 170 m 568 324 l 621 326 q 605 190 621 252 q 556 83 590 128 q 467 12 522 37 q 334 -14 412 -14 q 236 2 280 -14 q 159 50 191 18 q 110 135 127 83 q 93 260 93 187 l 93 734 l 218 734 l 218 259 q 230 177 218 210 q 260 126 241 145 q 303 100 279 108 q 353 93 328 93 q 480 124 433 93 q 548 207 527 155 q 568 324 568 260 m 486 1014 l 587 1014 q 563 920 587 961 q 493 856 538 879 q 385 833 448 833 q 236 883 291 833 q 182 1014 182 934 l 283 1014 q 307 943 283 974 q 385 913 330 913 q 463 943 439 913 q 486 1014 486 974 z "},"Ů":{"ha":901,"x_min":95,"x_max":810,"o":"m 680 987 l 810 987 l 810 319 q 760 134 810 208 q 629 23 711 60 q 452 -14 547 -14 q 270 23 351 -14 q 142 134 189 60 q 95 319 95 208 l 95 987 l 224 987 l 224 319 q 253 192 224 242 q 333 117 281 142 q 452 93 384 93 q 571 117 520 93 q 651 192 623 142 q 680 319 680 242 l 680 987 m 307 1174 q 326 1245 307 1213 q 378 1296 345 1277 q 452 1315 411 1315 q 556 1274 514 1315 q 598 1174 598 1232 q 579 1103 598 1135 q 527 1054 559 1072 q 452 1036 494 1036 q 349 1075 391 1036 q 307 1174 307 1114 m 374 1174 q 396 1120 374 1144 q 452 1096 418 1096 q 509 1119 487 1096 q 531 1174 531 1143 q 509 1230 531 1206 q 452 1254 487 1254 q 396 1230 418 1254 q 374 1174 374 1206 z "},"ů":{"ha":766,"x_min":93,"x_max":671,"o":"m 545 170 l 545 734 l 671 734 l 671 0 l 551 0 l 545 170 m 568 324 l 621 326 q 605 190 621 252 q 556 83 590 128 q 467 12 522 37 q 334 -14 412 -14 q 236 2 280 -14 q 159 50 191 18 q 110 135 127 83 q 93 260 93 187 l 93 734 l 218 734 l 218 259 q 230 177 218 210 q 260 126 241 145 q 303 100 279 108 q 353 93 328 93 q 480 124 433 93 q 548 207 527 155 q 568 324 568 260 m 239 963 q 258 1034 239 1002 q 310 1085 277 1066 q 385 1104 343 1104 q 488 1063 446 1104 q 530 963 530 1021 q 511 892 530 924 q 459 843 492 861 q 385 825 426 825 q 281 864 323 825 q 239 963 239 903 m 306 963 q 328 909 306 933 q 385 885 350 885 q 441 908 419 885 q 463 963 463 932 q 441 1019 463 995 q 385 1043 419 1043 q 328 1019 350 1043 q 306 963 306 995 z "},"Ű":{"ha":901,"x_min":95,"x_max":810,"o":"m 680 987 l 810 987 l 810 319 q 760 134 810 208 q 629 23 711 60 q 452 -14 547 -14 q 270 23 351 -14 q 142 134 189 60 q 95 319 95 208 l 95 987 l 224 987 l 224 319 q 253 192 224 242 q 333 117 281 142 q 452 93 384 93 q 571 117 520 93 q 651 192 623 142 q 680 319 680 242 l 680 987 m 473 1046 l 629 1252 l 770 1252 l 588 1046 l 473 1046 m 283 1046 l 399 1252 l 533 1252 l 385 1046 l 283 1046 z "},"ű":{"ha":766,"x_min":93,"x_max":702,"o":"m 545 170 l 545 734 l 671 734 l 671 0 l 551 0 l 545 170 m 568 324 l 621 326 q 605 190 621 252 q 556 83 590 128 q 467 12 522 37 q 334 -14 412 -14 q 236 2 280 -14 q 159 50 191 18 q 110 135 127 83 q 93 260 93 187 l 93 734 l 218 734 l 218 259 q 230 177 218 210 q 260 126 241 145 q 303 100 279 108 q 353 93 328 93 q 480 124 433 93 q 548 207 527 155 q 568 324 568 260 m 406 836 l 562 1041 l 702 1041 l 520 836 l 406 836 m 216 836 l 331 1041 l 465 1041 l 317 836 l 216 836 z "},"Ų":{"ha":901,"x_min":95,"x_max":810,"o":"m 680 987 l 810 987 l 810 319 q 760 134 810 208 q 629 23 711 60 q 452 -14 547 -14 q 270 23 351 -14 q 142 134 189 60 q 95 319 95 208 l 95 987 l 224 987 l 224 319 q 253 192 224 242 q 333 117 281 142 q 452 93 384 93 q 571 117 520 93 q 651 192 623 142 q 680 319 680 242 l 680 987 m 588 68 l 638 30 q 583 -15 609 8 q 539 -65 556 -39 q 522 -121 522 -91 q 534 -157 522 -143 q 575 -170 546 -170 q 615 -164 597 -170 q 643 -152 633 -157 l 652 -235 q 609 -255 635 -245 q 543 -264 583 -264 q 451 -232 488 -264 q 413 -135 413 -199 q 431 -62 413 -98 q 488 7 449 -26 q 588 68 526 40 z "},"ų":{"ha":766,"x_min":93,"x_max":678,"o":"m 545 170 l 545 734 l 671 734 l 671 0 l 551 0 l 545 170 m 568 324 l 621 326 q 605 190 621 252 q 556 83 590 128 q 467 12 522 37 q 334 -14 412 -14 q 236 2 280 -14 q 159 50 191 18 q 110 135 127 83 q 93 260 93 187 l 93 734 l 218 734 l 218 259 q 230 177 218 210 q 260 126 241 145 q 303 100 279 108 q 353 93 328 93 q 480 124 433 93 q 548 207 527 155 q 568 324 568 260 m 614 39 l 664 0 q 608 -45 635 -22 q 565 -95 582 -68 q 548 -151 548 -121 q 560 -186 548 -173 q 601 -200 572 -200 q 641 -194 623 -200 q 669 -182 659 -187 l 678 -264 q 635 -284 661 -275 q 569 -294 609 -294 q 476 -261 514 -294 q 439 -165 439 -229 q 457 -92 439 -128 q 513 -23 475 -56 q 614 39 552 10 z "},"Ŵ":{"ha":1232,"x_min":41,"x_max":1202,"o":"m 374 298 l 570 987 l 665 987 l 610 720 l 399 0 l 305 0 l 374 298 m 172 987 l 328 312 l 374 0 l 281 0 l 41 987 l 172 987 m 919 313 l 1072 987 l 1202 987 l 964 0 l 870 0 l 919 313 m 680 987 l 870 298 l 939 0 l 845 0 l 642 720 l 586 987 l 680 987 m 665 1253 l 833 1067 l 833 1061 l 728 1061 l 627 1175 l 526 1061 l 422 1061 l 422 1068 l 589 1253 l 665 1253 z "},"ŵ":{"ha":1044,"x_min":29,"x_max":1011,"o":"m 281 130 l 470 734 l 553 734 l 536 614 l 345 0 l 264 0 l 281 130 m 155 734 l 315 123 l 327 0 l 242 0 l 29 734 l 155 734 m 733 128 l 886 734 l 1011 734 l 798 0 l 714 0 l 733 128 m 571 734 l 755 140 l 777 0 l 696 0 l 499 615 l 483 734 l 571 734 m 555 1042 l 724 857 l 724 850 l 619 850 l 517 964 l 416 850 l 313 850 l 313 857 l 479 1042 l 555 1042 z "},"Ŷ":{"ha":834,"x_min":10,"x_max":822,"o":"m 160 987 l 416 492 l 673 987 l 822 987 l 481 369 l 481 0 l 351 0 l 351 369 l 10 987 l 160 987 m 457 1252 l 625 1067 l 625 1060 l 521 1060 l 419 1175 l 318 1060 l 215 1060 l 215 1067 l 381 1252 l 457 1252 z "},"ŷ":{"ha":657,"x_min":15,"x_max":640,"o":"m 302 76 l 506 734 l 640 734 l 346 -113 q 319 -172 336 -140 q 277 -232 302 -203 q 215 -278 251 -260 q 128 -296 178 -296 q 90 -292 113 -296 q 58 -286 67 -288 l 57 -184 q 74 -185 62 -184 q 91 -186 86 -186 q 163 -175 134 -186 q 214 -138 193 -164 q 250 -66 235 -112 l 302 76 m 152 734 l 342 164 l 375 32 l 285 -14 l 15 734 l 152 734 m 382 1042 l 551 857 l 551 850 l 446 850 l 345 964 l 243 850 l 140 850 l 140 857 l 307 1042 l 382 1042 z "},"Ÿ":{"ha":834,"x_min":10,"x_max":822,"o":"m 160 987 l 416 492 l 673 987 l 822 987 l 481 369 l 481 0 l 351 0 l 351 369 l 10 987 l 160 987 m 201 1140 q 220 1192 201 1171 q 275 1213 239 1213 q 330 1192 311 1213 q 349 1140 349 1171 q 330 1090 349 1111 q 275 1069 311 1069 q 220 1090 239 1069 q 201 1140 201 1111 m 493 1139 q 512 1190 493 1169 q 567 1211 530 1211 q 622 1190 603 1211 q 642 1139 642 1169 q 622 1089 642 1109 q 567 1068 603 1068 q 512 1089 530 1068 q 493 1139 493 1109 z "},"Ź":{"ha":832,"x_min":59,"x_max":777,"o":"m 777 106 l 777 0 l 109 0 l 109 106 l 777 106 m 755 892 l 140 0 l 59 0 l 59 98 l 674 987 l 755 987 l 755 892 m 700 987 l 700 880 l 68 880 l 68 987 l 700 987 m 349 1053 l 480 1253 l 631 1253 l 450 1053 l 349 1053 z "},"ź":{"ha":689,"x_min":60,"x_max":642,"o":"m 642 103 l 642 0 l 109 0 l 109 103 l 642 103 m 623 645 l 137 0 l 60 0 l 60 92 l 543 734 l 623 734 l 623 645 m 567 734 l 567 630 l 66 630 l 66 734 l 567 734 m 280 842 l 412 1042 l 563 1042 l 381 842 l 280 842 z "},"Ż":{"ha":832,"x_min":59,"x_max":777,"o":"m 777 106 l 777 0 l 109 0 l 109 106 l 777 106 m 755 892 l 140 0 l 59 0 l 59 98 l 674 987 l 755 987 l 755 892 m 700 987 l 700 880 l 68 880 l 68 987 l 700 987 m 344 1139 q 362 1190 344 1168 q 418 1211 381 1211 q 473 1190 454 1211 q 492 1139 492 1168 q 473 1088 492 1109 q 418 1067 454 1067 q 362 1088 381 1067 q 344 1139 344 1109 z "},"ż":{"ha":689,"x_min":60,"x_max":642,"o":"m 642 103 l 642 0 l 109 0 l 109 103 l 642 103 m 623 645 l 137 0 l 60 0 l 60 92 l 543 734 l 623 734 l 623 645 m 567 734 l 567 630 l 66 630 l 66 734 l 567 734 m 275 928 q 294 979 275 958 q 349 1000 313 1000 q 405 979 385 1000 q 424 928 424 958 q 405 877 424 898 q 349 857 385 857 q 294 877 313 857 q 275 928 275 898 z "},"Ž":{"ha":832,"x_min":59,"x_max":777,"o":"m 777 106 l 777 0 l 109 0 l 109 106 l 777 106 m 755 892 l 140 0 l 59 0 l 59 98 l 674 987 l 755 987 l 755 892 m 700 987 l 700 880 l 68 880 l 68 987 l 700 987 m 315 1252 l 417 1137 l 519 1252 l 628 1252 l 628 1245 l 456 1059 l 378 1059 l 209 1245 l 209 1252 l 315 1252 z "},"ž":{"ha":689,"x_min":60,"x_max":642,"o":"m 642 103 l 642 0 l 109 0 l 109 103 l 642 103 m 623 645 l 137 0 l 60 0 l 60 92 l 543 734 l 623 734 l 623 645 m 567 734 l 567 630 l 66 630 l 66 734 l 567 734 m 246 1041 l 349 926 l 451 1041 l 559 1041 l 559 1034 l 387 848 l 310 848 l 140 1034 l 140 1041 l 246 1041 z "},"Ǽ":{"ha":1298,"x_min":-10,"x_max":1275,"o":"m 658 886 l 144 0 l -10 0 l 587 987 l 668 987 l 658 886 m 756 358 l 756 239 l 252 239 l 252 358 l 756 358 m 1275 103 l 1275 0 l 778 0 l 778 103 l 1275 103 m 760 987 l 802 0 l 675 0 l 634 987 l 760 987 m 1178 566 l 1178 463 l 751 463 l 751 566 l 1178 566 m 1233 987 l 1233 884 l 736 884 l 736 987 l 1233 987 m 568 1061 l 699 1260 l 850 1260 l 669 1061 l 568 1061 z "},"ǽ":{"ha":1173,"x_min":54,"x_max":1126,"o":"m 508 124 l 508 488 q 491 572 508 537 q 442 626 475 607 q 363 644 410 644 q 275 627 313 644 q 218 580 238 609 q 197 515 197 551 l 73 528 q 94 615 73 575 q 153 685 115 655 q 244 731 191 715 q 363 747 298 747 q 503 718 443 747 q 596 631 563 689 q 630 487 630 574 l 630 148 l 508 124 m 536 431 l 536 336 l 359 336 q 260 318 300 336 q 199 269 220 299 q 179 203 179 239 q 194 145 179 171 q 240 103 210 119 q 319 88 271 88 q 394 102 355 88 q 464 138 432 116 q 516 184 496 160 q 537 230 536 209 l 602 132 q 544 65 584 99 q 443 8 505 31 q 294 -14 380 -14 q 163 13 217 -14 q 81 90 109 40 q 54 206 54 140 q 73 301 54 260 q 131 372 92 343 q 226 416 169 401 q 357 431 283 431 l 536 431 m 857 -14 q 709 13 773 -14 q 602 89 646 40 q 536 205 559 138 q 514 353 514 273 l 514 382 q 537 530 514 463 q 603 646 561 597 q 703 721 646 694 q 827 747 760 748 q 956 725 900 747 q 1050 659 1012 702 q 1107 555 1088 616 q 1126 418 1126 494 l 1126 338 l 581 338 l 581 434 l 1000 434 l 1000 455 q 983 549 1000 507 q 928 618 966 592 q 827 644 890 644 q 744 624 780 644 q 683 568 708 604 q 646 484 659 532 q 633 382 633 437 l 633 353 q 646 250 633 298 q 686 166 659 202 q 755 109 713 130 q 857 89 798 89 q 987 114 937 89 q 1070 161 1036 138 l 1114 69 q 1066 38 1099 58 q 981 2 1034 18 q 857 -14 929 -14 m 513 843 l 645 1042 l 796 1042 l 614 843 l 513 843 z "},"Ǿ":{"ha":956,"x_min":81,"x_max":888,"o":"m 888 1028 l 208 -63 l 111 -63 l 793 1028 l 888 1028 m 875 525 l 875 463 q 847 263 875 351 q 767 113 819 175 q 642 19 715 52 q 479 -14 569 -14 q 348 7 409 -14 q 238 69 287 28 q 153 167 189 109 q 99 299 118 225 q 81 463 81 374 l 81 525 q 110 724 81 636 q 191 874 138 812 q 317 968 244 936 q 477 1001 390 1001 q 611 980 549 1001 q 721 919 672 959 q 804 820 770 878 q 857 688 838 762 q 875 525 875 614 m 745 463 l 745 526 q 734 654 745 597 q 700 755 722 711 q 645 829 677 800 q 570 874 612 859 q 477 890 528 890 q 367 866 416 890 q 283 796 318 842 q 229 682 248 750 q 210 526 210 614 l 210 463 q 222 334 210 391 q 258 232 235 276 q 314 157 281 187 q 389 112 347 127 q 479 97 430 97 q 592 121 543 97 q 676 191 642 144 q 728 306 710 237 q 745 463 745 374 m 416 1103 l 547 1302 l 699 1302 l 517 1103 l 416 1103 z "},"ǿ":{"ha":787,"x_min":62,"x_max":730,"o":"m 667 820 l 217 -92 l 134 -92 l 583 820 l 667 820 m 62 359 l 62 374 q 85 522 62 454 q 152 641 109 590 q 257 719 195 691 q 395 747 319 747 q 535 719 473 747 q 640 641 597 691 q 707 522 684 590 q 730 374 730 454 l 730 359 q 707 212 730 279 q 640 93 684 144 q 535 15 597 43 q 397 -14 474 -14 q 258 15 319 -14 q 152 93 196 43 q 85 212 109 144 q 62 359 62 279 m 188 374 l 188 359 q 201 255 188 304 q 240 170 214 207 q 305 111 266 132 q 397 90 345 90 q 487 111 448 90 q 552 170 526 132 q 591 255 578 207 q 604 359 604 304 l 604 374 q 591 477 604 429 q 552 563 578 526 q 487 623 526 601 q 395 644 448 644 q 305 623 344 644 q 240 563 266 601 q 201 477 214 526 q 188 374 188 429 m 295 842 l 427 1041 l 578 1041 l 396 842 l 295 842 z "},"Ά":{"ha":906,"x_min":20,"x_max":888,"o":"m 480 900 l 153 0 l 20 0 l 396 987 l 482 987 l 480 900 m 754 0 l 427 900 l 425 987 l 511 987 l 888 0 l 754 0 m 737 366 l 737 258 l 182 258 l 182 366 l 737 366 m 127 856 l 163 1084 l 281 1084 l 203 856 l 127 856 z "},"Έ":{"ha":857,"x_min":-79,"x_max":810,"o":"m 810 106 l 810 0 l 287 0 l 287 106 l 810 106 m 313 987 l 313 0 l 182 0 l 182 987 l 313 987 m 741 563 l 741 456 l 287 456 l 287 563 l 741 563 m 803 987 l 803 880 l 287 880 l 287 987 l 803 987 m -79 857 l -42 1084 l 76 1084 l -3 857 l -79 857 z "},"Ή":{"ha":1059,"x_min":-69,"x_max":941,"o":"m 827 563 l 827 456 l 293 456 l 293 563 l 827 563 m 313 987 l 313 0 l 182 0 l 182 987 l 313 987 m 941 987 l 941 0 l 811 0 l 811 987 l 941 987 m -69 858 l -33 1086 l 85 1086 l 7 858 l -69 858 z "},"Ί":{"ha":446,"x_min":-65,"x_max":323,"o":"m 323 987 l 323 0 l 192 0 l 192 987 l 323 987 m -65 858 l -28 1086 l 90 1086 l 11 858 l -65 858 z "},"Ό":{"ha":969,"x_min":-4,"x_max":888,"o":"m 888 525 l 888 463 q 861 263 888 351 q 781 113 833 175 q 655 19 728 52 q 492 -14 583 -14 q 332 19 405 -14 q 206 113 259 52 q 123 263 153 175 q 94 463 94 351 l 94 525 q 123 724 94 636 q 205 874 152 812 q 331 968 258 936 q 491 1001 404 1001 q 654 968 581 1001 q 780 874 727 936 q 860 724 832 812 q 888 525 888 636 m 759 463 l 759 526 q 741 682 759 614 q 688 796 723 750 q 604 866 654 842 q 491 890 554 890 q 381 866 430 890 q 297 796 332 842 q 243 682 262 750 q 224 526 224 614 l 224 463 q 243 306 224 374 q 297 191 262 237 q 382 121 333 144 q 492 97 431 97 q 606 121 556 97 q 689 191 655 144 q 741 306 724 237 q 759 463 759 374 m -4 856 l 33 1084 l 151 1084 l 72 856 l -4 856 z "},"Ύ":{"ha":902,"x_min":-94,"x_max":890,"o":"m 228 987 l 484 492 l 741 987 l 890 987 l 549 369 l 549 0 l 418 0 l 418 369 l 78 987 l 228 987 m -94 856 l -57 1084 l 61 1084 l -18 856 l -94 856 z "},"Ώ":{"ha":937,"x_min":-3,"x_max":846,"o":"m 714 492 l 714 571 q 697 711 714 650 q 648 812 680 771 q 570 874 615 853 q 467 895 524 895 q 366 874 411 895 q 289 812 321 853 q 240 711 257 771 q 223 571 223 650 l 223 492 q 238 338 223 406 q 279 223 252 271 q 344 148 307 176 q 427 111 382 119 l 427 15 q 293 67 354 24 q 186 177 231 110 q 116 325 141 243 q 91 492 91 406 l 91 570 q 118 745 91 666 q 195 881 145 824 q 314 970 245 939 q 467 1001 383 1001 q 622 970 552 1001 q 741 881 691 939 q 819 745 791 824 q 846 570 846 666 l 846 492 q 822 326 846 407 q 752 177 797 244 q 647 67 707 111 q 514 15 586 24 l 514 111 q 596 148 559 120 q 659 224 633 176 q 700 339 686 272 q 714 492 714 406 m 514 0 l 514 106 l 842 106 l 842 0 l 514 0 m 94 0 l 94 106 l 427 106 l 427 0 l 94 0 m -3 856 l 34 1084 l 152 1084 l 73 856 l -3 856 z "},"ΐ":{"ha":450,"x_min":-68,"x_max":464,"o":"m 132 734 l 258 734 l 258 187 q 270 131 258 150 q 300 105 281 112 q 339 99 318 99 q 372 102 355 99 q 398 107 389 105 l 399 5 q 360 -4 384 1 q 302 -9 336 -9 q 217 10 256 -9 q 155 72 178 28 q 132 188 132 115 l 132 734 m 148 941 l 180 1120 l 308 1120 l 240 941 l 148 941 m -68 916 q -50 967 -68 946 q 5 988 -31 988 q 61 967 41 988 q 80 916 80 946 q 61 866 80 886 q 5 845 41 845 q -50 866 -31 845 q -68 916 -68 886 m 315 914 q 334 966 315 945 q 389 987 353 987 q 445 966 426 987 q 464 914 464 945 q 445 864 464 885 q 389 844 426 844 q 334 864 353 844 q 315 914 315 885 z "},"Α":{"ha":906,"x_min":20,"x_max":888,"o":"m 480 900 l 153 0 l 20 0 l 396 987 l 482 987 l 480 900 m 754 0 l 427 900 l 425 987 l 511 987 l 888 0 l 754 0 m 737 366 l 737 258 l 182 258 l 182 366 l 737 366 z "},"Β":{"ha":865,"x_min":115,"x_max":787,"o":"m 467 462 l 216 462 l 215 567 l 442 567 q 541 586 498 567 q 606 641 583 605 q 629 726 629 676 q 609 814 629 780 q 546 864 588 848 q 438 880 503 880 l 245 880 l 245 0 l 115 0 l 115 987 l 438 987 q 574 972 514 987 q 675 925 633 957 q 739 843 717 892 q 760 724 760 793 q 729 614 760 663 q 643 534 698 565 q 513 494 587 503 l 467 462 m 460 0 l 165 0 l 239 106 l 460 106 q 567 128 523 106 q 633 190 610 150 q 656 283 656 229 q 637 378 656 338 q 575 440 617 418 q 467 462 533 462 l 280 462 l 281 567 l 536 567 l 564 529 q 685 489 635 523 q 761 401 734 454 q 787 285 787 349 q 746 129 787 193 q 633 33 706 66 q 460 0 559 0 z "},"Ε":{"ha":789,"x_min":115,"x_max":742,"o":"m 742 106 l 742 0 l 219 0 l 219 106 l 742 106 m 245 987 l 245 0 l 115 0 l 115 987 l 245 987 m 673 563 l 673 456 l 219 456 l 219 563 l 673 563 m 735 987 l 735 880 l 219 880 l 219 987 l 735 987 z "},"Ζ":{"ha":832,"x_min":59,"x_max":777,"o":"m 777 106 l 777 0 l 109 0 l 109 106 l 777 106 m 755 892 l 140 0 l 59 0 l 59 98 l 674 987 l 755 987 l 755 892 m 700 987 l 700 880 l 68 880 l 68 987 l 700 987 z "},"Η":{"ha":991,"x_min":115,"x_max":873,"o":"m 760 563 l 760 456 l 225 456 l 225 563 l 760 563 m 245 987 l 245 0 l 115 0 l 115 987 l 245 987 m 873 987 l 873 0 l 743 0 l 743 987 l 873 987 z "},"Ι":{"ha":378,"x_min":124,"x_max":255,"o":"m 255 987 l 255 0 l 124 0 l 124 987 l 255 987 z "},"Κ":{"ha":871,"x_min":115,"x_max":871,"o":"m 245 987 l 245 0 l 115 0 l 115 987 l 245 987 m 842 987 l 431 527 l 201 288 l 179 427 l 353 618 l 684 987 l 842 987 m 715 0 l 350 481 l 428 585 l 871 0 l 715 0 z "},"Μ":{"ha":1213,"x_min":115,"x_max":1097,"o":"m 156 987 l 283 987 l 606 182 l 929 987 l 1057 987 l 655 0 l 556 0 l 156 987 m 115 987 l 227 987 l 245 385 l 245 0 l 115 0 l 115 987 m 985 987 l 1097 987 l 1097 0 l 967 0 l 967 385 l 985 987 z "},"Ν":{"ha":991,"x_min":115,"x_max":874,"o":"m 874 987 l 874 0 l 743 0 l 245 762 l 245 0 l 115 0 l 115 987 l 245 987 l 745 224 l 745 987 l 874 987 z "},"Ο":{"ha":956,"x_min":81,"x_max":875,"o":"m 875 525 l 875 463 q 847 263 875 351 q 767 113 819 175 q 642 19 715 52 q 479 -14 569 -14 q 318 19 391 -14 q 192 113 245 52 q 110 263 139 175 q 81 463 81 351 l 81 525 q 110 724 81 636 q 191 874 138 812 q 317 968 244 936 q 477 1001 390 1001 q 641 968 568 1001 q 766 874 713 936 q 847 724 819 812 q 875 525 875 636 m 745 463 l 745 526 q 727 682 745 614 q 675 796 709 750 q 590 866 640 842 q 477 890 541 890 q 367 866 416 890 q 283 796 318 842 q 229 682 248 750 q 210 526 210 614 l 210 463 q 229 306 210 374 q 284 191 248 237 q 369 121 319 144 q 479 97 418 97 q 592 121 543 97 q 676 191 642 144 q 728 306 710 237 q 745 463 745 374 z "},"Ρ":{"ha":876,"x_min":115,"x_max":825,"o":"m 479 387 l 215 387 l 215 494 l 479 494 q 603 518 555 494 q 672 586 650 543 q 694 685 694 629 q 672 781 694 736 q 603 853 650 825 q 479 880 555 880 l 245 880 l 245 0 l 115 0 l 115 987 l 479 987 q 668 949 591 987 q 785 842 745 910 q 825 686 825 774 q 785 524 825 591 q 668 422 745 457 q 479 387 591 387 z "},"Τ":{"ha":829,"x_min":34,"x_max":797,"o":"m 479 987 l 479 0 l 351 0 l 351 987 l 479 987 m 797 987 l 797 880 l 34 880 l 34 987 l 797 987 z "},"Υ":{"ha":834,"x_min":10,"x_max":822,"o":"m 160 987 l 416 492 l 673 987 l 822 987 l 481 369 l 481 0 l 351 0 l 351 369 l 10 987 l 160 987 z "},"Χ":{"ha":871,"x_min":39,"x_max":834,"o":"m 199 987 l 437 609 l 674 987 l 827 987 l 515 498 l 834 0 l 680 0 l 437 386 l 193 0 l 39 0 l 359 498 l 47 987 l 199 987 z "},"Ϊ":{"ha":378,"x_min":-29,"x_max":412,"o":"m 255 987 l 255 0 l 124 0 l 124 987 l 255 987 m -29 1148 q -10 1200 -29 1179 q 45 1221 9 1221 q 100 1200 81 1221 q 119 1148 119 1179 q 100 1098 119 1119 q 45 1078 81 1078 q -10 1098 9 1078 q -29 1148 -29 1119 m 263 1147 q 282 1198 263 1177 q 337 1219 300 1219 q 392 1198 373 1219 q 412 1147 412 1177 q 392 1097 412 1118 q 337 1076 373 1076 q 282 1097 300 1076 q 263 1147 263 1118 z "},"Ϋ":{"ha":834,"x_min":10,"x_max":822,"o":"m 160 987 l 416 492 l 673 987 l 822 987 l 481 369 l 481 0 l 351 0 l 351 369 l 10 987 l 160 987 m 201 1140 q 220 1192 201 1171 q 275 1213 239 1213 q 330 1192 311 1213 q 349 1140 349 1171 q 330 1090 349 1111 q 275 1069 311 1069 q 220 1090 239 1069 q 201 1140 201 1111 m 493 1139 q 512 1190 493 1169 q 567 1211 530 1211 q 622 1190 603 1211 q 642 1139 642 1169 q 622 1089 642 1109 q 567 1068 603 1068 q 512 1089 530 1068 q 493 1139 493 1109 z "},"ά":{"ha":785,"x_min":68,"x_max":776,"o":"m 68 340 l 68 354 q 87 513 68 441 q 142 637 106 585 q 232 719 178 690 q 355 747 286 747 q 450 732 408 747 q 525 686 492 716 q 581 613 557 656 q 618 515 604 570 q 638 394 632 460 l 638 338 q 610 192 631 256 q 555 81 590 127 q 471 10 521 35 q 353 -14 420 -14 q 232 12 286 -14 q 142 85 179 38 q 87 198 106 133 q 68 340 68 262 m 194 354 l 194 340 q 205 242 194 288 q 238 162 216 197 q 297 108 261 127 q 385 89 334 89 q 469 109 434 89 q 529 164 505 130 q 569 244 553 199 q 595 337 585 289 l 595 382 q 572 478 587 431 q 532 563 557 525 q 471 622 507 600 q 386 644 435 644 q 298 621 334 644 q 239 558 262 598 q 205 466 216 518 q 194 354 194 413 m 576 734 l 683 734 l 683 200 q 687 149 683 169 q 699 118 691 130 q 716 103 707 107 q 737 98 726 98 q 750 100 744 98 q 760 102 755 101 l 776 9 q 734 -10 755 -6 q 692 -14 714 -14 q 635 -2 661 -14 q 593 35 610 9 q 566 101 575 60 q 557 200 557 142 l 557 574 l 576 734 m 378 852 l 414 1080 l 532 1080 l 454 852 l 378 852 z "},"έ":{"ha":749,"x_min":68,"x_max":681,"o":"m 356 398 l 505 398 l 505 325 l 366 325 q 272 312 310 325 q 214 274 233 300 q 194 206 194 248 q 206 161 194 182 q 241 123 218 140 q 298 98 264 107 q 374 88 332 88 q 470 106 429 88 q 533 154 511 125 q 556 217 556 184 l 681 217 q 654 114 681 157 q 584 42 628 70 q 485 0 540 14 q 374 -14 431 -14 q 252 1 308 -14 q 155 45 196 16 q 91 114 113 73 q 68 207 68 155 q 87 289 68 253 q 143 349 106 324 q 234 386 180 373 q 356 398 288 398 m 505 351 l 356 351 q 243 365 294 351 q 156 405 192 379 q 100 463 119 430 q 81 534 81 496 q 101 626 81 586 q 161 692 122 665 q 254 733 199 719 q 374 747 308 747 q 488 732 435 747 q 582 688 541 717 q 646 620 623 660 q 669 530 669 580 l 544 530 q 521 588 544 562 q 460 630 498 614 q 374 645 422 645 q 279 629 317 645 q 224 588 242 613 q 206 534 206 562 q 215 490 206 510 q 243 455 224 470 q 293 433 262 441 q 366 425 323 425 l 505 425 l 505 351 m 328 851 l 364 1079 l 482 1079 l 404 851 l 328 851 z "},"ή":{"ha":787,"x_min":99,"x_max":684,"o":"m 224 577 l 224 0 l 99 0 l 99 734 l 212 734 l 224 577 m 199 391 l 146 389 q 165 533 146 467 q 223 646 185 598 q 314 721 260 694 q 436 747 368 747 q 539 734 493 747 q 617 688 585 720 q 667 603 650 656 q 684 471 684 550 l 684 -281 l 559 -281 l 559 469 q 548 553 559 519 q 517 607 538 587 q 467 635 496 627 q 399 644 437 644 q 307 624 345 644 q 245 569 269 604 q 210 488 221 534 q 199 391 199 442 m 346 852 l 382 1080 l 500 1080 l 422 852 l 346 852 z "},"ί":{"ha":450,"x_min":132,"x_max":399,"o":"m 132 734 l 258 734 l 258 187 q 270 131 258 150 q 300 105 281 112 q 339 99 318 99 q 372 102 355 99 q 398 107 389 105 l 399 5 q 360 -4 384 1 q 302 -9 336 -9 q 217 10 256 -9 q 155 72 178 28 q 132 188 132 115 l 132 734 m 153 838 l 190 1065 l 308 1065 l 229 838 l 153 838 z "},"ΰ":{"ha":758,"x_min":98,"x_max":688,"o":"m 98 734 l 223 734 l 223 289 q 233 196 223 235 q 262 134 243 158 q 306 100 281 111 q 360 89 331 89 q 448 114 410 89 q 511 182 486 140 q 549 277 536 225 q 562 381 562 329 q 537 562 561 473 q 479 734 513 650 l 611 734 q 649 639 631 692 q 677 522 667 586 q 688 382 688 458 q 669 232 688 304 q 610 105 650 161 q 509 18 570 50 q 366 -14 449 -14 q 255 4 304 -14 q 170 59 205 22 q 116 153 135 96 q 98 290 98 211 l 98 734 m 317 941 l 349 1120 l 477 1120 l 409 941 l 317 941 m 100 916 q 119 967 100 946 q 174 988 138 988 q 230 967 210 988 q 249 916 249 946 q 230 866 249 886 q 174 845 210 845 q 119 866 138 845 q 100 916 100 886 m 484 914 q 503 966 484 945 q 558 987 522 987 q 614 966 595 987 q 633 914 633 945 q 614 864 633 885 q 558 844 595 844 q 503 864 522 844 q 484 914 484 885 z "},"κ":{"ha":773,"x_min":105,"x_max":738,"o":"m 231 734 l 231 0 l 105 0 l 105 734 l 231 734 m 713 734 l 351 313 l 189 313 l 170 423 l 293 423 l 562 734 l 713 734 m 579 0 l 287 332 l 368 423 l 738 0 l 579 0 z "},"ο":{"ha":792,"x_min":62,"x_max":730,"o":"m 62 359 l 62 374 q 85 522 62 454 q 152 641 109 590 q 257 719 195 691 q 395 747 319 747 q 535 719 473 747 q 641 641 597 691 q 707 522 684 590 q 730 374 730 454 l 730 359 q 707 212 730 279 q 641 93 684 144 q 535 15 597 43 q 397 -14 474 -14 q 258 15 319 -14 q 152 93 196 43 q 85 212 109 144 q 62 359 62 279 m 188 374 l 188 359 q 201 255 188 304 q 240 170 214 207 q 305 111 266 132 q 397 90 345 90 q 487 111 448 90 q 552 170 526 132 q 591 255 578 207 q 604 359 604 304 l 604 374 q 591 477 604 429 q 552 563 578 526 q 487 623 526 601 q 395 644 448 644 q 305 623 344 644 q 240 563 266 601 q 201 477 214 526 q 188 374 188 429 z "},"μ":{"ha":787,"x_min":105,"x_max":682,"o":"m 557 734 l 682 734 l 682 0 l 569 0 l 557 170 l 557 734 m 579 341 l 626 342 q 612 200 626 265 q 569 87 598 135 q 494 12 540 39 q 385 -14 449 -14 q 293 -1 334 -14 q 224 41 253 12 q 176 116 195 70 l 151 312 l 230 312 q 241 198 230 242 q 274 130 253 154 q 321 98 294 106 q 380 89 349 89 q 479 107 440 89 q 540 160 518 126 q 570 240 562 194 q 579 341 579 286 m 105 734 l 230 734 l 230 -282 l 105 -282 l 105 734 z "},"ν":{"ha":673,"x_min":22,"x_max":648,"o":"m 319 113 l 519 734 l 648 734 l 384 0 l 300 0 l 319 113 m 151 734 l 358 110 l 372 0 l 288 0 l 22 734 l 151 734 z "},"χ":{"ha":770,"x_min":61,"x_max":774,"o":"m 710 734 l 215 -282 l 81 -282 l 583 734 l 710 734 m 132 744 q 214 726 181 744 q 270 680 248 708 q 307 621 292 652 q 333 563 321 589 l 614 -80 q 642 -132 627 -109 q 673 -169 656 -155 q 711 -182 690 -182 q 742 -181 722 -182 q 774 -178 763 -180 l 741 -286 q 722 -293 734 -291 q 700 -296 709 -296 q 632 -284 661 -296 q 581 -249 603 -272 q 541 -192 559 -226 q 503 -113 522 -157 l 230 513 q 200 573 217 545 q 161 619 184 602 q 108 637 139 637 q 85 635 100 637 q 62 633 71 634 l 61 734 q 94 741 73 738 q 132 744 115 744 z "},"ϊ":{"ha":450,"x_min":-19,"x_max":422,"o":"m 132 734 l 258 734 l 258 187 q 270 131 258 150 q 300 105 281 112 q 339 99 318 99 q 372 102 355 99 q 398 107 389 105 l 399 5 q 360 -4 384 1 q 302 -9 336 -9 q 217 10 256 -9 q 155 72 178 28 q 132 188 132 115 l 132 734 m -19 916 q 0 967 -19 946 q 55 988 19 988 q 111 967 92 988 q 130 916 130 946 q 111 866 130 886 q 55 845 92 845 q 0 866 19 845 q -19 916 -19 886 m 273 914 q 292 966 273 945 q 347 987 311 987 q 402 966 383 987 q 422 914 422 945 q 402 864 422 885 q 347 844 383 844 q 292 864 311 844 q 273 914 273 885 z "},"ϋ":{"ha":758,"x_min":98,"x_max":688,"o":"m 98 734 l 223 734 l 223 289 q 233 196 223 235 q 262 134 243 158 q 306 100 281 111 q 360 89 331 89 q 448 114 410 89 q 511 182 486 140 q 549 277 536 225 q 562 381 562 329 q 537 562 561 473 q 479 734 513 650 l 611 734 q 649 639 631 692 q 677 522 667 586 q 688 382 688 458 q 669 232 688 304 q 610 105 650 161 q 509 18 570 50 q 366 -14 449 -14 q 255 4 304 -14 q 170 59 205 22 q 116 153 135 96 q 98 290 98 211 l 98 734 m 150 916 q 169 967 150 946 q 224 988 188 988 q 279 967 260 988 q 298 916 298 946 q 279 866 298 886 q 224 845 260 845 q 169 866 188 845 q 150 916 150 886 m 442 914 q 461 966 442 945 q 516 987 479 987 q 571 966 552 987 q 591 914 591 945 q 571 864 591 885 q 516 844 552 844 q 461 864 479 844 q 442 914 442 885 z "},"ό":{"ha":792,"x_min":62,"x_max":730,"o":"m 62 359 l 62 374 q 85 522 62 454 q 152 641 109 590 q 257 719 195 691 q 395 747 319 747 q 535 719 473 747 q 641 641 597 691 q 707 522 684 590 q 730 374 730 454 l 730 359 q 707 212 730 279 q 641 93 684 144 q 535 15 597 43 q 397 -14 474 -14 q 258 15 319 -14 q 152 93 196 43 q 85 212 109 144 q 62 359 62 279 m 188 374 l 188 359 q 201 255 188 304 q 240 170 214 207 q 305 111 266 132 q 397 90 345 90 q 487 111 448 90 q 552 170 526 132 q 591 255 578 207 q 604 359 604 304 l 604 374 q 591 477 604 429 q 552 563 578 526 q 487 623 526 601 q 395 644 448 644 q 305 623 344 644 q 240 563 266 601 q 201 477 214 526 q 188 374 188 429 m 344 852 l 380 1080 l 498 1080 l 420 852 l 344 852 z "},"ύ":{"ha":758,"x_min":98,"x_max":688,"o":"m 98 734 l 223 734 l 223 289 q 233 196 223 235 q 262 134 243 158 q 306 100 281 111 q 360 89 331 89 q 448 114 410 89 q 511 182 486 140 q 549 277 536 225 q 562 381 562 329 q 537 562 561 473 q 479 734 513 650 l 611 734 q 649 639 631 692 q 677 522 667 586 q 688 382 688 458 q 669 232 688 304 q 610 105 650 161 q 509 18 570 50 q 366 -14 449 -14 q 255 4 304 -14 q 170 59 205 22 q 116 153 135 96 q 98 290 98 211 l 98 734 m 322 838 l 359 1065 l 477 1065 l 398 838 l 322 838 z "},"ώ":{"ha":1144,"x_min":83,"x_max":1059,"o":"m 836 734 l 967 734 q 1013 638 991 691 q 1046 521 1034 585 q 1059 380 1059 457 q 1045 231 1059 302 q 999 105 1030 160 q 916 18 967 50 q 791 -14 864 -14 q 687 8 732 -14 q 610 73 642 30 q 562 178 578 115 q 546 321 546 240 l 546 522 l 634 522 l 634 319 q 645 213 634 256 q 677 141 656 169 q 725 101 697 114 q 784 89 752 89 q 853 112 825 89 q 899 175 882 135 q 925 268 917 216 q 933 380 933 321 q 904 561 931 473 q 836 734 876 650 m 175 734 l 307 734 q 238 561 266 650 q 209 380 211 473 q 214 290 209 333 q 230 210 219 246 q 258 146 241 174 q 300 104 275 119 q 357 89 325 89 q 417 101 390 89 q 465 141 445 114 q 497 213 486 169 q 508 319 508 256 l 508 522 l 596 522 l 596 321 q 580 178 596 240 q 532 73 564 115 q 455 8 500 30 q 351 -14 410 -14 q 248 6 292 -14 q 172 64 203 27 q 121 152 140 102 q 92 260 101 201 q 83 380 83 318 q 96 521 83 457 q 130 638 109 585 q 175 734 151 691 m 529 836 l 566 1063 l 684 1063 l 605 836 l 529 836 z "},"Ё":{"ha":789,"x_min":115,"x_max":742,"o":"m 742 106 l 742 0 l 219 0 l 219 106 l 742 106 m 245 987 l 245 0 l 115 0 l 115 987 l 245 987 m 673 563 l 673 456 l 219 456 l 219 563 l 673 563 m 735 987 l 735 880 l 219 880 l 219 987 l 735 987 m 201 1148 q 220 1200 201 1179 q 275 1221 239 1221 q 331 1200 312 1221 q 350 1148 350 1179 q 331 1098 350 1119 q 275 1078 312 1078 q 220 1098 239 1078 q 201 1148 201 1119 m 494 1147 q 512 1198 494 1177 q 568 1219 531 1219 q 623 1198 604 1219 q 642 1147 642 1177 q 623 1097 642 1118 q 568 1076 604 1076 q 512 1097 531 1076 q 494 1147 494 1118 z "},"Ѓ":{"ha":772,"x_min":121,"x_max":727,"o":"m 727 987 l 727 880 l 251 880 l 251 0 l 121 0 l 121 987 l 727 987 m 355 1061 l 486 1260 l 637 1260 l 456 1061 l 355 1061 z "},"Ѕ":{"ha":825,"x_min":55,"x_max":772,"o":"m 641 250 q 630 311 641 284 q 594 359 620 338 q 522 401 568 381 q 406 441 476 420 q 274 489 333 463 q 173 551 215 516 q 109 630 131 585 q 86 732 86 675 q 110 839 86 790 q 178 924 134 888 q 284 981 222 960 q 422 1001 346 1001 q 611 959 533 1001 q 729 848 688 916 q 770 703 770 780 l 640 703 q 616 801 640 758 q 544 869 592 844 q 422 894 496 894 q 307 873 352 894 q 239 816 261 852 q 217 734 217 780 q 230 677 217 703 q 272 630 243 652 q 343 590 300 608 q 448 555 387 572 q 593 502 532 531 q 694 436 654 473 q 753 354 734 400 q 772 251 772 309 q 748 142 772 191 q 678 58 724 93 q 569 5 633 24 q 428 -14 506 -14 q 293 5 359 -14 q 173 62 227 24 q 87 156 119 100 q 55 286 55 212 l 185 286 q 205 199 185 235 q 259 139 224 163 q 337 104 293 115 q 428 93 380 93 q 544 112 496 93 q 616 166 591 131 q 641 250 641 201 z "},"І":{"ha":378,"x_min":124,"x_max":255,"o":"m 255 987 l 255 0 l 124 0 l 124 987 l 255 987 z "},"Ї":{"ha":378,"x_min":-29,"x_max":412,"o":"m 255 987 l 255 0 l 124 0 l 124 987 l 255 987 m -29 1148 q -10 1200 -29 1179 q 45 1221 9 1221 q 100 1200 81 1221 q 119 1148 119 1179 q 100 1098 119 1119 q 45 1078 81 1078 q -10 1098 9 1078 q -29 1148 -29 1119 m 263 1147 q 282 1198 263 1177 q 337 1219 300 1219 q 392 1198 373 1219 q 412 1147 412 1177 q 392 1097 412 1118 q 337 1076 373 1076 q 282 1097 300 1076 q 263 1147 263 1118 z "},"Ј":{"ha":766,"x_min":36,"x_max":659,"o":"m 529 288 l 529 987 l 659 987 l 659 288 q 619 123 659 191 q 509 21 579 56 q 348 -14 439 -14 q 186 18 257 -14 q 76 113 116 49 q 36 273 36 176 l 167 273 q 190 171 167 211 q 254 112 213 131 q 348 93 295 93 q 440 115 399 93 q 505 181 481 137 q 529 288 529 224 z "},"К":{"ha":892,"x_min":121,"x_max":888,"o":"m 252 987 l 252 0 l 121 0 l 121 987 l 252 987 m 860 987 l 431 444 l 199 444 l 179 553 l 353 553 l 698 987 l 860 987 m 728 0 l 357 461 l 431 576 l 888 0 l 728 0 z "},"Ќ":{"ha":871,"x_min":115,"x_max":871,"o":"m 245 987 l 245 0 l 115 0 l 115 987 l 245 987 m 842 987 l 431 527 l 201 288 l 179 427 l 353 618 l 684 987 l 842 987 m 715 0 l 350 481 l 428 585 l 871 0 l 715 0 m 341 1049 l 473 1249 l 624 1249 l 442 1049 l 341 1049 z "},"Ў":{"ha":873,"x_min":52,"x_max":832,"o":"m 420 328 l 682 987 l 832 987 l 483 165 q 450 98 468 130 q 405 41 431 66 q 339 1 378 16 q 243 -14 300 -14 q 204 -13 227 -14 q 175 -9 182 -11 l 179 96 q 208 93 186 94 q 240 92 230 92 q 301 108 279 92 q 337 148 323 123 q 363 197 351 172 l 420 328 m 199 987 l 473 372 l 506 251 l 396 243 l 52 987 l 199 987 m 539 1232 l 641 1232 q 616 1138 641 1179 q 547 1074 592 1097 q 439 1051 501 1051 q 290 1102 345 1051 q 235 1232 235 1152 l 337 1232 q 360 1162 337 1192 q 439 1131 383 1131 q 516 1162 493 1131 q 539 1232 539 1192 z "},"А":{"ha":906,"x_min":20,"x_max":888,"o":"m 480 900 l 153 0 l 20 0 l 396 987 l 482 987 l 480 900 m 754 0 l 427 900 l 425 987 l 511 987 l 888 0 l 754 0 m 737 366 l 737 258 l 182 258 l 182 366 l 737 366 z "},"В":{"ha":865,"x_min":115,"x_max":787,"o":"m 467 462 l 216 462 l 215 567 l 442 567 q 541 586 498 567 q 606 641 583 605 q 629 726 629 676 q 609 814 629 780 q 546 864 588 848 q 438 880 503 880 l 245 880 l 245 0 l 115 0 l 115 987 l 438 987 q 574 972 514 987 q 675 925 633 957 q 739 843 717 892 q 760 724 760 793 q 729 614 760 663 q 643 534 698 565 q 513 494 587 503 l 467 462 m 460 0 l 165 0 l 239 106 l 460 106 q 567 128 523 106 q 633 190 610 150 q 656 283 656 229 q 637 378 656 338 q 575 440 617 418 q 467 462 533 462 l 280 462 l 281 567 l 536 567 l 564 529 q 685 489 635 523 q 761 401 734 454 q 787 285 787 349 q 746 129 787 193 q 633 33 706 66 q 460 0 559 0 z "},"Г":{"ha":772,"x_min":121,"x_max":727,"o":"m 727 987 l 727 880 l 251 880 l 251 0 l 121 0 l 121 987 l 727 987 z "},"Е":{"ha":789,"x_min":115,"x_max":742,"o":"m 742 106 l 742 0 l 219 0 l 219 106 l 742 106 m 245 987 l 245 0 l 115 0 l 115 987 l 245 987 m 673 563 l 673 456 l 219 456 l 219 563 l 673 563 m 735 987 l 735 880 l 219 880 l 219 987 l 735 987 z "},"Й":{"ha":991,"x_min":121,"x_max":868,"o":"m 251 227 l 737 987 l 868 987 l 868 0 l 737 0 l 737 762 l 251 0 l 121 0 l 121 987 l 251 987 l 251 227 m 598 1232 l 700 1232 q 675 1138 700 1179 q 606 1074 651 1097 q 498 1051 560 1051 q 349 1102 404 1051 q 294 1232 294 1152 l 396 1232 q 419 1162 396 1192 q 498 1131 442 1131 q 575 1162 552 1131 q 598 1232 598 1192 z "},"М":{"ha":1213,"x_min":115,"x_max":1097,"o":"m 156 987 l 283 987 l 606 182 l 929 987 l 1057 987 l 655 0 l 556 0 l 156 987 m 115 987 l 227 987 l 245 385 l 245 0 l 115 0 l 115 987 m 985 987 l 1097 987 l 1097 0 l 967 0 l 967 385 l 985 987 z "},"Н":{"ha":991,"x_min":115,"x_max":873,"o":"m 760 563 l 760 456 l 225 456 l 225 563 l 760 563 m 245 987 l 245 0 l 115 0 l 115 987 l 245 987 m 873 987 l 873 0 l 743 0 l 743 987 l 873 987 z "},"О":{"ha":956,"x_min":81,"x_max":875,"o":"m 875 525 l 875 463 q 847 263 875 351 q 767 113 819 175 q 642 19 715 52 q 479 -14 569 -14 q 318 19 391 -14 q 192 113 245 52 q 110 263 139 175 q 81 463 81 351 l 81 525 q 110 724 81 636 q 191 874 138 812 q 317 968 244 936 q 477 1001 390 1001 q 641 968 568 1001 q 766 874 713 936 q 847 724 819 812 q 875 525 875 636 m 745 463 l 745 526 q 727 682 745 614 q 675 796 709 750 q 590 866 640 842 q 477 890 541 890 q 367 866 416 890 q 283 796 318 842 q 229 682 248 750 q 210 526 210 614 l 210 463 q 229 306 210 374 q 284 191 248 237 q 369 121 319 144 q 479 97 418 97 q 592 121 543 97 q 676 191 642 144 q 728 306 710 237 q 745 463 745 374 z "},"П":{"ha":991,"x_min":121,"x_max":869,"o":"m 869 987 l 869 0 l 739 0 l 739 880 l 252 880 l 252 0 l 121 0 l 121 987 l 869 987 z "},"Р":{"ha":876,"x_min":115,"x_max":825,"o":"m 479 387 l 215 387 l 215 494 l 479 494 q 603 518 555 494 q 672 586 650 543 q 694 685 694 629 q 672 781 694 736 q 603 853 650 825 q 479 880 555 880 l 245 880 l 245 0 l 115 0 l 115 987 l 479 987 q 668 949 591 987 q 785 842 745 910 q 825 686 825 774 q 785 524 825 591 q 668 422 745 457 q 479 387 591 387 z "},"С":{"ha":904,"x_min":81,"x_max":841,"o":"m 711 314 l 841 314 q 787 146 831 220 q 665 30 744 73 q 467 -14 585 -14 q 309 19 380 -14 q 187 112 238 52 q 109 256 136 172 q 81 444 81 340 l 81 543 q 109 731 81 646 q 188 876 136 815 q 313 968 240 936 q 478 1001 387 1001 q 667 959 590 1001 q 788 843 745 917 q 841 671 831 768 l 711 671 q 675 790 701 740 q 602 867 650 840 q 478 894 555 894 q 362 869 412 894 q 279 798 313 844 q 229 687 245 751 q 212 544 212 623 l 212 444 q 227 308 212 372 q 273 196 242 244 q 353 120 304 148 q 467 93 401 93 q 600 119 550 93 q 674 195 649 146 q 711 314 700 245 z "},"Т":{"ha":829,"x_min":34,"x_max":797,"o":"m 479 987 l 479 0 l 351 0 l 351 987 l 479 987 m 797 987 l 797 880 l 34 880 l 34 987 l 797 987 z "},"Х":{"ha":871,"x_min":39,"x_max":834,"o":"m 199 987 l 437 609 l 674 987 l 827 987 l 515 498 l 834 0 l 680 0 l 437 386 l 193 0 l 39 0 l 359 498 l 47 987 l 199 987 z "},"а":{"ha":755,"x_min":74,"x_max":680,"o":"m 528 125 l 528 503 q 511 579 528 547 q 459 629 494 611 q 374 646 425 646 q 291 630 326 646 q 235 587 255 614 q 215 530 215 561 l 90 530 q 110 608 90 570 q 169 679 130 647 q 261 729 207 710 q 381 747 315 747 q 523 720 461 747 q 619 638 584 693 q 654 502 654 584 l 654 160 q 660 82 654 123 q 680 11 667 41 l 680 0 l 549 0 q 534 58 539 22 q 528 125 528 94 m 550 445 l 551 357 l 425 357 q 329 348 371 357 q 258 323 287 340 q 215 280 230 306 q 200 221 200 255 q 216 158 200 186 q 263 113 231 130 q 340 96 294 96 q 442 121 398 96 q 512 180 486 145 q 541 249 538 216 l 594 189 q 568 125 589 160 q 512 59 547 91 q 430 7 477 28 q 322 -14 382 -14 q 192 16 248 -14 q 105 94 136 45 q 74 204 74 143 q 97 308 74 263 q 163 384 120 353 q 268 429 207 414 q 404 445 329 445 l 550 445 z "},"е":{"ha":736,"x_min":63,"x_max":686,"o":"m 400 -14 q 261 13 323 -14 q 155 86 199 39 q 87 199 111 134 q 63 341 63 264 l 63 370 q 90 529 63 459 q 161 648 116 600 q 264 722 207 697 q 384 747 322 747 q 520 720 463 747 q 614 645 577 693 q 668 531 650 596 q 686 388 686 465 l 686 332 l 138 332 l 138 434 l 560 434 l 560 444 q 540 538 557 492 q 486 614 523 585 q 384 644 448 644 q 305 626 341 644 q 243 573 269 608 q 203 487 218 538 q 189 370 189 436 l 189 341 q 204 243 189 289 q 247 163 218 197 q 315 109 275 128 q 407 89 355 89 q 519 116 473 89 q 600 189 566 143 l 676 128 q 616 60 652 92 q 526 7 579 27 q 400 -14 473 -14 z "},"й":{"ha":802,"x_min":106,"x_max":696,"o":"m 231 199 l 570 734 l 696 734 l 696 0 l 570 0 l 570 535 l 231 0 l 106 0 l 106 734 l 231 734 l 231 199 m 501 1000 l 603 1000 q 578 906 603 947 q 509 842 554 865 q 401 819 463 819 q 252 869 307 819 q 197 1000 197 920 l 299 1000 q 322 929 299 960 q 401 899 345 899 q 478 929 455 899 q 501 1000 501 960 z "},"о":{"ha":792,"x_min":62,"x_max":730,"o":"m 62 359 l 62 374 q 85 522 62 454 q 152 641 109 590 q 257 719 195 691 q 395 747 319 747 q 535 719 473 747 q 641 641 597 691 q 707 522 684 590 q 730 374 730 454 l 730 359 q 707 212 730 279 q 641 93 684 144 q 535 15 597 43 q 397 -14 474 -14 q 258 15 319 -14 q 152 93 196 43 q 85 212 109 144 q 62 359 62 279 m 188 374 l 188 359 q 201 255 188 304 q 240 170 214 207 q 305 111 266 132 q 397 90 345 90 q 487 111 448 90 q 552 170 526 132 q 591 255 578 207 q 604 359 604 304 l 604 374 q 591 477 604 429 q 552 563 578 526 q 487 623 526 601 q 395 644 448 644 q 305 623 344 644 q 240 563 266 601 q 201 477 214 526 q 188 374 188 429 z "},"р":{"ha":780,"x_min":95,"x_max":715,"o":"m 221 593 l 221 -282 l 95 -282 l 95 734 l 210 734 l 221 593 m 715 373 l 715 359 q 696 211 715 279 q 641 92 677 142 q 552 14 605 42 q 431 -14 499 -14 q 307 9 361 -14 q 216 77 254 33 q 157 182 179 121 q 127 321 135 244 l 127 397 q 157 543 135 479 q 217 653 180 608 q 307 723 254 699 q 429 747 359 747 q 551 721 498 747 q 642 644 605 694 q 697 526 678 595 q 715 373 715 457 m 589 359 l 589 373 q 578 476 589 428 q 542 562 566 525 q 481 620 518 599 q 392 642 444 642 q 310 625 345 642 q 250 582 275 609 q 211 519 226 554 q 188 447 195 484 l 188 271 q 226 182 201 224 q 291 115 250 140 q 393 90 332 90 q 481 111 444 90 q 542 170 518 132 q 578 255 566 207 q 589 359 589 304 z "},"с":{"ha":727,"x_min":63,"x_max":682,"o":"m 389 90 q 472 108 434 90 q 534 158 510 126 q 562 232 559 191 l 682 232 q 638 111 678 167 q 532 21 597 55 q 389 -14 467 -14 q 245 16 307 -14 q 143 96 184 45 q 83 213 103 146 q 63 353 63 279 l 63 381 q 83 521 63 455 q 143 638 103 587 q 245 718 184 689 q 389 747 307 747 q 540 712 475 747 q 641 617 604 677 q 682 481 678 557 l 562 481 q 537 564 559 527 q 477 622 515 600 q 389 644 439 644 q 293 622 332 644 q 231 561 254 599 q 198 476 208 522 q 189 381 189 429 l 189 353 q 198 258 189 304 q 230 173 208 211 q 292 112 253 135 q 389 90 331 90 z "},"у":{"ha":657,"x_min":15,"x_max":640,"o":"m 302 76 l 506 734 l 640 734 l 346 -113 q 319 -172 336 -140 q 277 -232 302 -203 q 215 -278 251 -260 q 128 -296 178 -296 q 90 -292 113 -296 q 58 -286 67 -288 l 57 -184 q 74 -185 62 -184 q 91 -186 86 -186 q 163 -175 134 -186 q 214 -138 193 -164 q 250 -66 235 -112 l 302 76 m 152 734 l 342 164 l 375 32 l 285 -14 l 15 734 l 152 734 z "},"х":{"ha":689,"x_min":28,"x_max":659,"o":"m 180 734 l 341 467 l 504 734 l 651 734 l 411 372 l 659 0 l 513 0 l 344 275 l 174 0 l 28 0 l 275 372 l 36 734 l 180 734 z "},"ё":{"ha":736,"x_min":63,"x_max":686,"o":"m 400 -14 q 261 13 323 -14 q 155 86 199 39 q 87 199 111 134 q 63 341 63 264 l 63 370 q 90 529 63 459 q 161 648 116 600 q 264 722 207 697 q 384 747 322 747 q 520 720 463 747 q 614 645 577 693 q 668 531 650 596 q 686 388 686 465 l 686 332 l 138 332 l 138 434 l 560 434 l 560 444 q 540 538 557 492 q 486 614 523 585 q 384 644 448 644 q 305 626 341 644 q 243 573 269 608 q 203 487 218 538 q 189 370 189 436 l 189 341 q 204 243 189 289 q 247 163 218 197 q 315 109 275 128 q 407 89 355 89 q 519 116 473 89 q 600 189 566 143 l 676 128 q 616 60 652 92 q 526 7 579 27 q 400 -14 473 -14 m 165 930 q 184 981 165 960 q 239 1002 203 1002 q 294 981 275 1002 q 313 930 313 960 q 294 880 313 901 q 239 859 275 859 q 184 880 203 859 q 165 930 165 901 m 457 928 q 476 980 457 959 q 531 1001 494 1001 q 586 980 567 1001 q 606 928 606 959 q 586 879 606 899 q 531 858 567 858 q 476 879 494 858 q 457 928 457 899 z "},"ѓ":{"ha":583,"x_min":105,"x_max":570,"o":"m 570 734 l 570 630 l 231 630 l 231 0 l 105 0 l 105 734 l 570 734 m 223 828 l 355 1027 l 506 1027 l 324 828 l 223 828 z "},"ѕ":{"ha":717,"x_min":64,"x_max":648,"o":"m 523 195 q 511 245 523 222 q 463 288 499 269 q 354 321 427 307 q 244 352 293 334 q 160 395 195 370 q 108 454 126 420 q 90 533 90 488 q 109 615 90 576 q 164 684 128 654 q 250 730 199 713 q 361 747 300 747 q 512 716 450 747 q 608 633 574 685 q 641 518 641 581 l 515 518 q 497 577 515 549 q 445 625 479 606 q 361 644 411 644 q 277 628 309 644 q 230 588 245 612 q 216 536 216 564 q 223 500 216 516 q 248 471 230 484 q 300 446 267 458 q 385 423 333 435 q 533 374 475 403 q 620 304 591 346 q 648 204 648 263 q 628 116 648 156 q 571 47 608 76 q 481 2 533 18 q 365 -14 429 -14 q 201 21 268 -14 q 99 111 134 56 q 64 227 64 165 l 191 227 q 220 145 193 175 q 287 102 248 115 q 365 90 326 90 q 451 103 416 90 q 505 140 486 117 q 523 195 523 164 z "},"і":{"ha":338,"x_min":96,"x_max":245,"o":"m 232 734 l 232 0 l 106 0 l 106 734 l 232 734 m 96 928 q 115 980 96 959 q 170 1001 134 1001 q 225 980 206 1001 q 245 928 245 959 q 225 879 245 899 q 170 858 206 858 q 115 879 134 858 q 96 928 96 899 z "},"ї":{"ha":344,"x_min":-47,"x_max":393,"o":"m 231 734 l 231 0 l 106 0 l 106 734 l 231 734 m -47 928 q -28 980 -47 959 q 26 1001 -9 1001 q 82 980 63 1001 q 101 928 101 959 q 82 879 101 899 q 26 858 63 858 q -28 879 -9 858 q -47 928 -47 899 m 245 927 q 263 979 245 958 q 319 1000 282 1000 q 374 979 355 1000 q 393 927 393 958 q 374 877 393 898 q 319 857 355 857 q 263 877 282 857 q 245 927 245 898 z "},"ј":{"ha":332,"x_min":-45,"x_max":235,"o":"m 99 734 l 225 734 l 225 -87 q 204 -201 225 -155 q 140 -272 182 -248 q 33 -296 98 -296 q -6 -293 16 -296 q -45 -285 -29 -290 l -44 -184 q -15 -188 -31 -186 q 14 -190 1 -190 q 60 -180 41 -190 q 89 -147 79 -170 q 99 -87 99 -125 l 99 734 m 86 928 q 105 980 86 959 q 160 1001 124 1001 q 216 980 197 1001 q 235 928 235 959 q 216 879 235 899 q 160 858 197 858 q 105 879 124 858 q 86 928 86 899 z "},"ќ":{"ha":751,"x_min":106,"x_max":738,"o":"m 232 734 l 232 0 l 106 0 l 106 734 l 232 734 m 713 734 l 366 313 l 190 313 l 171 423 l 315 423 l 561 734 l 713 734 m 578 0 l 309 332 l 389 423 l 738 0 l 578 0 m 298 827 l 429 1027 l 581 1027 l 399 827 l 298 827 z "},"ў":{"ha":657,"x_min":15,"x_max":640,"o":"m 302 76 l 506 734 l 640 734 l 346 -113 q 319 -172 336 -140 q 277 -232 302 -203 q 215 -278 251 -260 q 128 -296 178 -296 q 90 -292 113 -296 q 58 -286 67 -288 l 57 -184 q 74 -185 62 -184 q 91 -186 86 -186 q 163 -175 134 -186 q 214 -138 193 -164 q 250 -66 235 -112 l 302 76 m 152 734 l 342 164 l 375 32 l 285 -14 l 15 734 l 152 734 m 446 1014 l 547 1014 q 523 920 547 961 q 453 856 498 879 q 345 833 408 833 q 196 883 251 833 q 142 1014 142 934 l 243 1014 q 267 943 243 974 q 345 913 290 913 q 422 943 399 913 q 446 1014 446 974 z "},"Ẁ":{"ha":1232,"x_min":41,"x_max":1202,"o":"m 374 298 l 570 987 l 665 987 l 610 720 l 399 0 l 305 0 l 374 298 m 172 987 l 328 312 l 374 0 l 281 0 l 41 987 l 172 987 m 919 313 l 1072 987 l 1202 987 l 964 0 l 870 0 l 919 313 m 680 987 l 870 298 l 939 0 l 845 0 l 642 720 l 586 987 l 680 987 m 567 1253 l 698 1053 l 590 1053 l 415 1253 l 567 1253 z "},"ẁ":{"ha":1044,"x_min":29,"x_max":1011,"o":"m 281 130 l 470 734 l 553 734 l 536 614 l 345 0 l 264 0 l 281 130 m 155 734 l 315 123 l 327 0 l 242 0 l 29 734 l 155 734 m 733 128 l 886 734 l 1011 734 l 798 0 l 714 0 l 733 128 m 571 734 l 755 140 l 777 0 l 696 0 l 499 615 l 483 734 l 571 734 m 458 1042 l 589 842 l 481 842 l 306 1042 l 458 1042 z "},"Ẃ":{"ha":1232,"x_min":41,"x_max":1202,"o":"m 374 298 l 570 987 l 665 987 l 610 720 l 399 0 l 305 0 l 374 298 m 172 987 l 328 312 l 374 0 l 281 0 l 41 987 l 172 987 m 919 313 l 1072 987 l 1202 987 l 964 0 l 870 0 l 919 313 m 680 987 l 870 298 l 939 0 l 845 0 l 642 720 l 586 987 l 680 987 m 557 1053 l 689 1253 l 840 1253 l 659 1053 l 557 1053 z "},"ẃ":{"ha":1044,"x_min":29,"x_max":1011,"o":"m 281 130 l 470 734 l 553 734 l 536 614 l 345 0 l 264 0 l 281 130 m 155 734 l 315 123 l 327 0 l 242 0 l 29 734 l 155 734 m 733 128 l 886 734 l 1011 734 l 798 0 l 714 0 l 733 128 m 571 734 l 755 140 l 777 0 l 696 0 l 499 615 l 483 734 l 571 734 m 448 842 l 580 1042 l 731 1042 l 549 842 l 448 842 z "},"Ẅ":{"ha":1232,"x_min":41,"x_max":1202,"o":"m 374 298 l 570 987 l 665 987 l 610 720 l 399 0 l 305 0 l 374 298 m 172 987 l 328 312 l 374 0 l 281 0 l 41 987 l 172 987 m 919 313 l 1072 987 l 1202 987 l 964 0 l 870 0 l 919 313 m 680 987 l 870 298 l 939 0 l 845 0 l 642 720 l 586 987 l 680 987 m 408 1141 q 427 1192 408 1171 q 482 1213 446 1213 q 538 1192 519 1213 q 557 1141 557 1171 q 538 1091 557 1112 q 482 1070 519 1070 q 427 1091 446 1070 q 408 1141 408 1112 m 701 1139 q 719 1191 701 1170 q 774 1212 738 1212 q 830 1191 810 1212 q 849 1139 849 1170 q 830 1089 849 1110 q 774 1069 810 1069 q 719 1089 738 1069 q 701 1139 701 1110 z "},"ẅ":{"ha":1044,"x_min":29,"x_max":1011,"o":"m 281 130 l 470 734 l 553 734 l 536 614 l 345 0 l 264 0 l 281 130 m 155 734 l 315 123 l 327 0 l 242 0 l 29 734 l 155 734 m 733 128 l 886 734 l 1011 734 l 798 0 l 714 0 l 733 128 m 571 734 l 755 140 l 777 0 l 696 0 l 499 615 l 483 734 l 571 734 m 299 930 q 318 981 299 960 q 373 1002 337 1002 q 429 981 410 1002 q 448 930 448 960 q 429 880 448 901 q 373 859 410 859 q 318 880 337 859 q 299 930 299 901 m 591 928 q 610 980 591 959 q 665 1001 629 1001 q 721 980 701 1001 q 740 928 740 959 q 721 879 740 899 q 665 858 701 858 q 610 879 629 858 q 591 928 591 899 z "},"Ỳ":{"ha":834,"x_min":10,"x_max":822,"o":"m 160 987 l 416 492 l 673 987 l 822 987 l 481 369 l 481 0 l 351 0 l 351 369 l 10 987 l 160 987 m 359 1252 l 490 1053 l 382 1053 l 208 1252 l 359 1252 z "},"ỳ":{"ha":657,"x_min":15,"x_max":640,"o":"m 302 76 l 506 734 l 640 734 l 346 -113 q 319 -172 336 -140 q 277 -232 302 -203 q 215 -278 251 -260 q 128 -296 178 -296 q 90 -292 113 -296 q 58 -286 67 -288 l 57 -184 q 74 -185 62 -184 q 91 -186 86 -186 q 163 -175 134 -186 q 214 -138 193 -164 q 250 -66 235 -112 l 302 76 m 152 734 l 342 164 l 375 32 l 285 -14 l 15 734 l 152 734 m 285 1042 l 416 842 l 308 842 l 133 1042 l 285 1042 z "},"′":{"ha":243,"x_min":71,"x_max":172,"o":"m 172 1042 l 172 967 l 158 718 l 71 718 l 71 956 l 71 1042 l 172 1042 z "},"″":{"ha":445,"x_min":93,"x_max":372,"o":"m 189 1042 l 189 949 l 168 707 l 93 707 l 93 943 l 93 1042 l 189 1042 m 372 1042 l 372 949 l 351 707 l 276 707 l 276 948 l 276 1042 l 372 1042 z "},"‼":{"ha":716,"x_min":109,"x_max":616,"o":"m 245 987 l 236 279 l 123 279 l 113 987 l 245 987 m 109 63 q 128 115 109 94 q 183 136 146 136 q 238 115 219 136 q 258 63 258 94 q 238 13 258 34 q 183 -8 219 -8 q 128 13 146 -8 q 109 63 109 34 m 603 987 l 594 279 l 481 279 l 471 987 l 603 987 m 467 63 q 486 115 467 94 q 541 136 505 136 q 596 115 577 136 q 616 63 616 94 q 596 13 616 34 q 541 -8 577 -8 q 486 13 505 -8 q 467 63 467 34 z "},"ǰ":{"ha":350,"x_min":-52,"x_max":391,"o":"m 117 734 l 243 734 l 243 -60 q 217 -189 243 -136 q 142 -269 191 -242 q 24 -296 93 -296 q -14 -294 3 -296 q -52 -285 -32 -292 l -42 -184 q -8 -191 -32 -189 q 24 -193 15 -193 q 74 -177 54 -193 q 106 -132 95 -161 q 117 -60 117 -102 l 117 734 m 77 1013 l 180 898 l 282 1013 l 391 1013 l 391 1006 l 218 821 l 141 821 l -28 1006 l -28 1013 l 77 1013 z "},"ʼ":{"ha":278,"x_min":33,"x_max":222,"o":"m 222 1042 l 222 955 q 209 869 222 914 q 168 782 195 824 q 104 709 142 741 l 33 759 q 81 851 64 804 q 98 953 98 898 l 98 1042 l 222 1042 z "},"Ḿ":{"ha":1213,"x_min":115,"x_max":1097,"o":"m 156 987 l 283 987 l 606 182 l 929 987 l 1057 987 l 655 0 l 556 0 l 156 987 m 115 987 l 227 987 l 245 385 l 245 0 l 115 0 l 115 987 m 985 987 l 1097 987 l 1097 0 l 967 0 l 967 385 l 985 987 m 534 1053 l 666 1253 l 817 1253 l 635 1053 l 534 1053 z "},"ḿ":{"ha":1218,"x_min":94,"x_max":1124,"o":"m 220 588 l 220 0 l 94 0 l 94 734 l 214 734 l 220 588 m 195 395 l 136 397 q 156 536 137 472 q 212 648 175 600 q 305 721 250 695 q 434 747 361 747 q 529 733 486 747 q 604 687 572 718 q 654 607 636 656 q 671 489 671 558 l 671 0 l 546 0 l 546 483 q 527 575 546 541 q 472 626 507 610 q 389 642 437 642 q 296 622 334 642 q 237 568 259 602 q 204 489 214 533 q 195 395 195 444 m 670 464 l 586 438 q 606 554 587 498 q 662 653 625 610 q 753 722 699 696 q 878 747 808 747 q 982 732 937 747 q 1060 684 1028 716 q 1107 602 1091 652 q 1124 482 1124 551 l 1124 0 l 998 0 l 998 484 q 978 579 998 545 q 924 628 959 614 q 841 642 889 642 q 768 627 800 642 q 714 588 736 613 q 681 532 692 564 q 670 464 670 500 m 549 842 l 680 1042 l 831 1042 l 650 842 l 549 842 z "},"Ḁ":{"ha":906,"x_min":20,"x_max":888,"o":"m 480 900 l 153 0 l 20 0 l 396 987 l 482 987 l 480 900 m 754 0 l 427 900 l 425 987 l 511 987 l 888 0 l 754 0 m 737 366 l 737 258 l 182 258 l 182 366 l 737 366 m 347 -164 q 381 -83 347 -115 q 465 -51 416 -51 q 545 -83 511 -51 q 579 -164 579 -115 q 545 -244 579 -214 q 465 -275 511 -275 q 381 -244 416 -275 q 347 -164 347 -214 m 406 -164 q 423 -204 406 -187 q 465 -220 440 -220 q 504 -204 488 -220 q 521 -164 521 -188 q 504 -122 521 -139 q 465 -105 488 -105 q 423 -122 440 -105 q 406 -164 406 -139 z "},"ḁ":{"ha":755,"x_min":74,"x_max":680,"o":"m 528 125 l 528 503 q 511 579 528 547 q 459 629 494 611 q 374 646 425 646 q 291 630 326 646 q 235 587 255 614 q 215 530 215 561 l 90 530 q 110 608 90 570 q 169 679 130 647 q 261 729 207 710 q 381 747 315 747 q 523 720 461 747 q 619 638 584 693 q 654 502 654 584 l 654 160 q 660 82 654 123 q 680 11 667 41 l 680 0 l 549 0 q 534 58 539 22 q 528 125 528 94 m 550 445 l 551 357 l 425 357 q 329 348 371 357 q 258 323 287 340 q 215 280 230 306 q 200 221 200 255 q 216 158 200 186 q 263 113 231 130 q 340 96 294 96 q 442 121 398 96 q 512 180 486 145 q 541 249 538 216 l 594 189 q 568 125 589 160 q 512 59 547 91 q 430 7 477 28 q 322 -14 382 -14 q 192 16 248 -14 q 105 94 136 45 q 74 204 74 143 q 97 308 74 263 q 163 384 120 353 q 268 429 207 414 q 404 445 329 445 l 550 445 m 222 -164 q 257 -83 222 -115 q 340 -51 292 -51 q 420 -83 387 -51 q 454 -164 454 -115 q 420 -244 454 -214 q 340 -275 387 -275 q 257 -244 292 -275 q 222 -164 222 -214 m 281 -164 q 298 -204 281 -187 q 340 -220 315 -220 q 379 -204 363 -220 q 396 -164 396 -188 q 379 -122 396 -139 q 340 -105 363 -105 q 298 -122 315 -105 q 281 -164 281 -139 z "},"Ѐ":{"ha":789,"x_min":115,"x_max":742,"o":"m 742 106 l 742 0 l 219 0 l 219 106 l 742 106 m 245 987 l 245 0 l 115 0 l 115 987 l 245 987 m 673 563 l 673 456 l 219 456 l 219 563 l 673 563 m 735 987 l 735 880 l 219 880 l 219 987 l 735 987 m 360 1260 l 491 1061 l 383 1061 l 208 1260 l 360 1260 z "},"Ѝ":{"ha":991,"x_min":121,"x_max":868,"o":"m 251 227 l 737 987 l 868 987 l 868 0 l 737 0 l 737 762 l 251 0 l 121 0 l 121 987 l 251 987 l 251 227 m 437 1260 l 568 1061 l 460 1061 l 286 1260 l 437 1260 z "},"ѐ":{"ha":736,"x_min":63,"x_max":686,"o":"m 400 -14 q 261 13 323 -14 q 155 86 199 39 q 87 199 111 134 q 63 341 63 264 l 63 370 q 90 529 63 459 q 161 648 116 600 q 264 722 207 697 q 384 747 322 747 q 520 720 463 747 q 614 645 577 693 q 668 531 650 596 q 686 388 686 465 l 686 332 l 138 332 l 138 434 l 560 434 l 560 444 q 540 538 557 492 q 486 614 523 585 q 384 644 448 644 q 305 626 341 644 q 243 573 269 608 q 203 487 218 538 q 189 370 189 436 l 189 341 q 204 243 189 289 q 247 163 218 197 q 315 109 275 128 q 407 89 355 89 q 519 116 473 89 q 600 189 566 143 l 676 128 q 616 60 652 92 q 526 7 579 27 q 400 -14 473 -14 m 323 1042 l 454 842 l 347 842 l 172 1042 l 323 1042 z "},"ѝ":{"ha":802,"x_min":106,"x_max":696,"o":"m 231 199 l 570 734 l 696 734 l 696 0 l 570 0 l 570 535 l 231 0 l 106 0 l 106 734 l 231 734 l 231 199 m 340 1027 l 471 828 l 363 828 l 189 1027 l 340 1027 z "},"Ѱ":{"ha":961,"x_min":61,"x_max":891,"o":"m 760 987 l 891 987 l 891 631 q 838 420 891 507 q 692 289 785 334 q 480 243 599 243 l 460 243 q 301 269 374 243 q 174 344 228 294 q 91 466 121 393 q 61 631 61 538 l 61 987 l 191 987 l 191 631 q 211 511 191 564 q 267 423 231 459 q 353 369 303 387 q 461 351 402 351 l 481 351 q 627 383 564 351 q 725 478 690 416 q 760 631 760 541 l 760 987 m 536 987 l 536 0 l 406 0 l 406 987 l 536 987 z "},"ѱ":{"ha":972,"x_min":65,"x_max":913,"o":"m 65 734 l 191 734 l 191 403 q 212 257 191 317 q 273 160 234 197 q 364 106 312 123 q 477 89 416 89 q 624 115 564 89 q 720 184 684 140 q 772 280 755 227 q 788 385 788 332 q 762 564 786 476 q 702 734 738 651 l 834 734 q 873 640 855 692 q 902 524 891 587 q 913 385 913 460 q 891 234 913 306 q 818 106 868 162 q 685 18 768 50 q 484 -14 603 -14 q 311 10 388 -14 q 178 85 233 35 q 94 216 123 136 q 65 404 65 295 l 65 734 m 415 734 l 541 734 l 541 -321 l 415 -321 l 415 734 z "},"Ѷ":{"ha":876,"x_min":15,"x_max":844,"o":"m 439 254 l 614 802 q 663 917 636 873 q 727 980 690 960 q 813 1000 763 1000 l 844 1000 l 844 884 l 836 884 q 795 875 812 884 q 764 845 778 866 q 736 787 750 824 l 473 0 l 372 0 l 439 254 m 157 987 l 393 254 l 459 0 l 358 0 l 15 987 l 157 987 m 387 1018 l 273 1018 l 66 1198 l 218 1198 l 387 1018 m 564 1018 l 463 1018 l 296 1198 l 436 1198 l 564 1018 z "},"ѷ":{"ha":697,"x_min":-3,"x_max":703,"o":"m 355 214 l 462 583 q 507 678 481 642 q 565 731 533 714 q 630 747 596 747 q 668 745 650 747 q 703 730 686 742 l 688 630 q 677 634 685 632 q 659 635 669 635 q 632 628 646 635 q 606 607 618 621 q 587 573 595 593 l 385 0 l 302 0 l 355 214 m 160 734 l 323 214 l 373 0 l 290 0 l 32 734 l 160 734 m 318 817 l 203 817 l -3 998 l 149 998 l 318 817 m 495 817 l 393 817 l 227 998 l 367 998 l 495 817 z "},"ѹ":{"ha":1449,"x_min":62,"x_max":1432,"o":"m 62 359 l 62 374 q 85 522 62 454 q 152 641 109 590 q 257 719 195 691 q 395 747 319 747 q 535 719 473 747 q 641 641 597 691 q 707 522 684 590 q 730 374 730 454 l 730 359 q 707 212 730 279 q 641 93 684 144 q 535 15 597 43 q 397 -14 474 -14 q 258 15 319 -14 q 152 93 196 43 q 85 212 109 144 q 62 359 62 279 m 188 374 l 188 359 q 201 255 188 304 q 240 170 214 207 q 305 111 266 132 q 397 90 345 90 q 487 111 448 90 q 552 170 526 132 q 591 255 578 207 q 604 359 604 304 l 604 374 q 591 477 604 429 q 552 563 578 526 q 487 623 526 601 q 395 644 448 644 q 305 623 344 644 q 240 563 266 601 q 201 477 214 526 q 188 374 188 429 m 1094 76 l 1298 734 l 1432 734 l 1138 -113 q 1111 -172 1128 -140 q 1069 -232 1095 -203 q 1007 -278 1043 -260 q 920 -296 970 -296 q 882 -292 905 -296 q 850 -286 859 -288 l 849 -184 q 866 -185 854 -184 q 883 -186 878 -186 q 956 -175 926 -186 q 1006 -138 985 -164 q 1042 -66 1027 -112 l 1094 76 m 944 734 l 1135 164 l 1167 32 l 1077 -14 l 807 734 l 944 734 z "},"Ѹ":{"ha":1613,"x_min":81,"x_max":1596,"o":"m 875 525 l 875 463 q 847 263 875 351 q 767 113 819 175 q 642 19 715 52 q 479 -14 569 -14 q 318 19 391 -14 q 192 113 245 52 q 110 263 139 175 q 81 463 81 351 l 81 525 q 110 724 81 636 q 191 874 138 812 q 317 968 244 936 q 477 1001 390 1001 q 641 968 568 1001 q 766 874 713 936 q 847 724 819 812 q 875 525 875 636 m 745 463 l 745 526 q 727 682 745 614 q 675 796 709 750 q 590 866 640 842 q 477 890 541 890 q 367 866 416 890 q 283 796 318 842 q 229 682 248 750 q 210 526 210 614 l 210 463 q 229 306 210 374 q 284 191 248 237 q 369 121 319 144 q 479 97 418 97 q 592 121 543 97 q 676 191 642 144 q 728 306 710 237 q 745 463 745 374 m 1257 76 l 1461 734 l 1596 734 l 1301 -113 q 1275 -172 1291 -140 q 1232 -232 1258 -203 q 1170 -278 1206 -260 q 1084 -296 1134 -296 q 1046 -292 1069 -296 q 1013 -286 1023 -288 l 1013 -184 q 1030 -185 1018 -184 q 1046 -186 1042 -186 q 1119 -175 1089 -186 q 1170 -138 1149 -164 q 1205 -66 1190 -112 l 1257 76 m 1107 734 l 1298 164 l 1331 32 l 1240 -14 l 970 734 l 1107 734 z "},"Ҙ":{"ha":825,"x_min":54,"x_max":767,"o":"m 417 474 l 300 474 l 300 557 l 412 557 q 533 578 487 557 q 600 637 579 600 q 621 723 621 674 q 598 809 621 770 q 527 871 575 848 q 403 895 479 895 q 300 873 346 895 q 227 814 254 852 q 199 728 199 777 l 68 728 q 95 841 68 791 q 168 927 121 892 q 274 982 214 963 q 403 1001 335 1001 q 547 983 482 1001 q 657 930 611 965 q 728 842 703 895 q 752 721 752 790 q 728 625 752 670 q 661 547 705 581 q 555 493 616 513 q 417 474 493 474 m 300 532 l 417 532 q 566 515 500 532 q 675 465 631 498 q 744 385 720 433 q 767 275 767 337 q 740 153 767 206 q 665 62 713 99 q 549 5 616 24 q 403 -14 482 -14 q 277 3 339 -14 q 165 55 215 20 q 84 144 115 90 q 54 274 54 198 l 185 274 q 213 183 185 224 q 289 117 240 142 q 403 92 338 92 q 529 116 477 92 q 609 180 581 139 q 636 273 636 221 q 622 352 636 318 q 579 407 607 385 q 509 439 551 429 q 412 450 467 450 l 300 450 l 300 532 m 475 54 l 475 -294 l 349 -294 l 349 54 l 475 54 z "},"ҙ":{"ha":705,"x_min":60,"x_max":638,"o":"m 370 351 l 235 351 l 235 428 l 359 428 q 442 441 412 428 q 486 478 473 454 q 498 534 498 502 q 484 588 498 562 q 437 629 469 613 q 352 645 406 645 q 273 630 309 645 q 217 588 238 614 q 197 530 197 562 l 71 530 q 110 645 71 597 q 212 720 148 694 q 352 747 276 747 q 466 733 416 747 q 552 692 517 719 q 606 626 587 665 q 625 534 625 586 q 607 463 625 496 q 556 405 589 430 q 476 365 523 379 q 370 351 429 351 m 235 398 l 370 398 q 486 386 435 398 q 570 349 536 373 q 621 289 604 324 q 638 207 638 253 q 617 114 638 155 q 559 45 597 73 q 468 1 521 16 q 352 -14 416 -14 q 214 11 281 -14 q 103 86 146 35 q 60 217 60 138 l 185 217 q 206 154 185 184 q 265 106 227 124 q 352 87 302 87 q 440 104 405 87 q 493 147 475 120 q 511 206 511 174 q 495 273 511 248 q 445 310 479 298 q 359 321 412 321 l 235 321 l 235 398 m 415 55 l 415 -293 l 290 -293 l 290 55 l 415 55 z "},"Ҫ":{"ha":904,"x_min":81,"x_max":841,"o":"m 711 314 l 841 314 q 787 146 831 220 q 665 30 744 73 q 467 -14 585 -14 q 309 19 380 -14 q 187 112 238 52 q 109 256 136 172 q 81 444 81 340 l 81 543 q 109 731 81 646 q 188 876 136 815 q 313 968 240 936 q 478 1001 387 1001 q 667 959 590 1001 q 788 843 745 917 q 841 671 831 768 l 711 671 q 675 790 701 740 q 602 867 650 840 q 478 894 555 894 q 362 869 412 894 q 279 798 313 844 q 229 687 245 751 q 212 544 212 623 l 212 444 q 227 308 212 372 q 273 196 242 244 q 353 120 304 148 q 467 93 401 93 q 600 119 550 93 q 674 195 649 146 q 711 314 700 245 m 525 54 l 525 -294 l 399 -294 l 399 54 l 525 54 z "},"ҫ":{"ha":727,"x_min":63,"x_max":682,"o":"m 389 90 q 472 108 434 90 q 534 158 510 126 q 562 232 559 191 l 682 232 q 638 111 678 167 q 532 21 597 55 q 389 -14 467 -14 q 245 16 307 -14 q 143 96 184 45 q 83 213 103 146 q 63 353 63 279 l 63 381 q 83 521 63 455 q 143 638 103 587 q 245 718 184 689 q 389 747 307 747 q 540 712 475 747 q 641 617 604 677 q 682 481 678 557 l 562 481 q 537 564 559 527 q 477 622 515 600 q 389 644 439 644 q 293 622 332 644 q 231 561 254 599 q 198 476 208 522 q 189 381 189 429 l 189 353 q 198 258 189 304 q 230 173 208 211 q 292 112 253 135 q 389 90 331 90 m 425 54 l 425 -294 l 300 -294 l 300 54 l 425 54 z "},"Ү":{"ha":834,"x_min":10,"x_max":822,"o":"m 160 987 l 416 492 l 673 987 l 822 987 l 481 369 l 481 0 l 351 0 l 351 369 l 10 987 l 160 987 z "},"ү":{"ha":696,"x_min":32,"x_max":673,"o":"m 415 90 l 415 -283 l 290 -283 l 290 90 l 415 90 m 349 170 l 544 734 l 673 734 l 401 0 l 317 0 l 349 170 m 160 734 l 361 170 l 389 0 l 305 0 l 32 734 l 160 734 z "},"Ӏ":{"ha":378,"x_min":124,"x_max":255,"o":"m 255 987 l 255 0 l 124 0 l 124 987 l 255 987 z "},"Ӂ":{"ha":1261,"x_min":18,"x_max":1252,"o":"m 397 451 l 45 987 l 198 987 l 460 559 l 646 559 l 625 451 l 397 451 m 468 461 l 181 0 l 18 0 l 385 574 l 468 461 m 703 987 l 703 0 l 573 0 l 573 987 l 703 987 m 1226 987 l 872 451 l 651 451 l 631 559 l 810 559 l 1072 987 l 1226 987 m 1089 0 l 803 461 l 886 574 l 1252 0 l 1089 0 m 734 1232 l 836 1232 q 811 1138 836 1179 q 741 1074 787 1097 q 633 1051 696 1051 q 485 1102 539 1051 q 430 1232 430 1152 l 532 1232 q 555 1162 532 1192 q 633 1131 578 1131 q 711 1162 688 1131 q 734 1232 734 1192 z "},"ӂ":{"ha":1064,"x_min":15,"x_max":1044,"o":"m 318 319 l 40 734 l 191 734 l 381 430 l 528 430 l 509 319 l 318 319 m 387 332 l 174 0 l 15 0 l 307 423 l 387 332 m 592 734 l 592 0 l 467 0 l 467 734 l 592 734 m 1020 734 l 742 319 l 551 319 l 531 430 l 678 430 l 868 734 l 1020 734 m 886 0 l 672 332 l 753 423 l 1044 0 l 886 0 m 630 1000 l 732 1000 q 707 906 732 947 q 637 842 683 865 q 530 819 592 819 q 381 869 435 819 q 326 1000 326 920 l 428 1000 q 451 929 428 960 q 530 899 474 899 q 607 929 584 899 q 630 1000 630 960 z "},"ӏ":{"ha":378,"x_min":124,"x_max":255,"o":"m 255 987 l 255 0 l 124 0 l 124 987 l 255 987 z "},"Ӑ":{"ha":906,"x_min":20,"x_max":888,"o":"m 480 900 l 153 0 l 20 0 l 396 987 l 482 987 l 480 900 m 754 0 l 427 900 l 425 987 l 511 987 l 888 0 l 754 0 m 737 366 l 737 258 l 182 258 l 182 366 l 737 366 m 557 1225 l 659 1225 q 634 1131 659 1172 q 564 1067 610 1090 q 456 1044 519 1044 q 308 1094 362 1044 q 253 1225 253 1145 l 355 1225 q 378 1154 355 1185 q 456 1124 401 1124 q 534 1154 511 1124 q 557 1225 557 1185 z "},"ӑ":{"ha":755,"x_min":74,"x_max":680,"o":"m 528 125 l 528 503 q 511 579 528 547 q 459 629 494 611 q 374 646 425 646 q 291 630 326 646 q 235 587 255 614 q 215 530 215 561 l 90 530 q 110 608 90 570 q 169 679 130 647 q 261 729 207 710 q 381 747 315 747 q 523 720 461 747 q 619 638 584 693 q 654 502 654 584 l 654 160 q 660 82 654 123 q 680 11 667 41 l 680 0 l 549 0 q 534 58 539 22 q 528 125 528 94 m 550 445 l 551 357 l 425 357 q 329 348 371 357 q 258 323 287 340 q 215 280 230 306 q 200 221 200 255 q 216 158 200 186 q 263 113 231 130 q 340 96 294 96 q 442 121 398 96 q 512 180 486 145 q 541 249 538 216 l 594 189 q 568 125 589 160 q 512 59 547 91 q 430 7 477 28 q 322 -14 382 -14 q 192 16 248 -14 q 105 94 136 45 q 74 204 74 143 q 97 308 74 263 q 163 384 120 353 q 268 429 207 414 q 404 445 329 445 l 550 445 m 496 1014 l 597 1014 q 573 920 597 961 q 503 856 549 879 q 395 833 458 833 q 247 883 301 833 q 192 1014 192 934 l 294 1014 q 317 943 294 974 q 395 913 340 913 q 473 943 450 913 q 496 1014 496 974 z "},"Ӓ":{"ha":906,"x_min":20,"x_max":888,"o":"m 480 900 l 153 0 l 20 0 l 396 987 l 482 987 l 480 900 m 754 0 l 427 900 l 425 987 l 511 987 l 888 0 l 754 0 m 737 366 l 737 258 l 182 258 l 182 366 l 737 366 m 237 1141 q 256 1192 237 1171 q 311 1213 275 1213 q 367 1192 348 1213 q 386 1141 386 1171 q 367 1091 386 1112 q 311 1070 348 1070 q 256 1091 275 1070 q 237 1141 237 1112 m 530 1139 q 548 1191 530 1170 q 604 1212 567 1212 q 659 1191 640 1212 q 678 1139 678 1170 q 659 1089 678 1110 q 604 1069 640 1069 q 548 1089 567 1069 q 530 1139 530 1110 z "},"ӓ":{"ha":755,"x_min":74,"x_max":680,"o":"m 528 125 l 528 503 q 511 579 528 547 q 459 629 494 611 q 374 646 425 646 q 291 630 326 646 q 235 587 255 614 q 215 530 215 561 l 90 530 q 110 608 90 570 q 169 679 130 647 q 261 729 207 710 q 381 747 315 747 q 523 720 461 747 q 619 638 584 693 q 654 502 654 584 l 654 160 q 660 82 654 123 q 680 11 667 41 l 680 0 l 549 0 q 534 58 539 22 q 528 125 528 94 m 550 445 l 551 357 l 425 357 q 329 348 371 357 q 258 323 287 340 q 215 280 230 306 q 200 221 200 255 q 216 158 200 186 q 263 113 231 130 q 340 96 294 96 q 442 121 398 96 q 512 180 486 145 q 541 249 538 216 l 594 189 q 568 125 589 160 q 512 59 547 91 q 430 7 477 28 q 322 -14 382 -14 q 192 16 248 -14 q 105 94 136 45 q 74 204 74 143 q 97 308 74 263 q 163 384 120 353 q 268 429 207 414 q 404 445 329 445 l 550 445 m 176 930 q 195 981 176 960 q 250 1002 214 1002 q 306 981 287 1002 q 325 930 325 960 q 306 880 325 901 q 250 859 287 859 q 195 880 214 859 q 176 930 176 901 m 469 928 q 487 980 469 959 q 543 1001 506 1001 q 598 980 578 1001 q 617 928 617 959 q 598 879 617 899 q 543 858 578 858 q 487 879 506 858 q 469 928 469 899 z "},"Ӕ":{"ha":1298,"x_min":-10,"x_max":1275,"o":"m 658 886 l 144 0 l -10 0 l 587 987 l 668 987 l 658 886 m 756 358 l 756 239 l 252 239 l 252 358 l 756 358 m 1275 103 l 1275 0 l 778 0 l 778 103 l 1275 103 m 760 987 l 802 0 l 675 0 l 634 987 l 760 987 m 1178 566 l 1178 463 l 751 463 l 751 566 l 1178 566 m 1233 987 l 1233 884 l 736 884 l 736 987 l 1233 987 z "},"ӕ":{"ha":1173,"x_min":54,"x_max":1126,"o":"m 508 124 l 508 488 q 491 572 508 537 q 442 626 475 607 q 363 644 410 644 q 275 627 313 644 q 218 580 238 609 q 197 515 197 551 l 73 528 q 94 615 73 575 q 153 685 115 655 q 244 731 191 715 q 363 747 298 747 q 503 718 443 747 q 596 631 563 689 q 630 487 630 574 l 630 148 l 508 124 m 536 431 l 536 336 l 359 336 q 260 318 300 336 q 199 269 220 299 q 179 203 179 239 q 194 145 179 171 q 240 103 210 119 q 319 88 271 88 q 394 102 355 88 q 464 138 432 116 q 516 184 496 160 q 537 230 536 209 l 602 132 q 544 65 584 99 q 443 8 505 31 q 294 -14 380 -14 q 163 13 217 -14 q 81 90 109 40 q 54 206 54 140 q 73 301 54 260 q 131 372 92 343 q 226 416 169 401 q 357 431 283 431 l 536 431 m 857 -14 q 709 13 773 -14 q 602 89 646 40 q 536 205 559 138 q 514 353 514 273 l 514 382 q 537 530 514 463 q 603 646 561 597 q 703 721 646 694 q 827 747 760 748 q 956 725 900 747 q 1050 659 1012 702 q 1107 555 1088 616 q 1126 418 1126 494 l 1126 338 l 581 338 l 581 434 l 1000 434 l 1000 455 q 983 549 1000 507 q 928 618 966 592 q 827 644 890 644 q 744 624 780 644 q 683 568 708 604 q 646 484 659 532 q 633 382 633 437 l 633 353 q 646 250 633 298 q 686 166 659 202 q 755 109 713 130 q 857 89 798 89 q 987 114 937 89 q 1070 161 1036 138 l 1114 69 q 1066 38 1099 58 q 981 2 1034 18 q 857 -14 929 -14 z "},"Ӗ":{"ha":789,"x_min":115,"x_max":742,"o":"m 742 106 l 742 0 l 219 0 l 219 106 l 742 106 m 245 987 l 245 0 l 115 0 l 115 987 l 245 987 m 673 563 l 673 456 l 219 456 l 219 563 l 673 563 m 735 987 l 735 880 l 219 880 l 219 987 l 735 987 m 521 1232 l 623 1232 q 598 1138 623 1179 q 528 1074 574 1097 q 420 1051 483 1051 q 272 1102 326 1051 q 217 1232 217 1152 l 319 1232 q 342 1162 319 1192 q 420 1131 365 1131 q 498 1162 475 1131 q 521 1232 521 1192 z "},"ӗ":{"ha":736,"x_min":63,"x_max":686,"o":"m 400 -14 q 261 13 323 -14 q 155 86 199 39 q 87 199 111 134 q 63 341 63 264 l 63 370 q 90 529 63 459 q 161 648 116 600 q 264 722 207 697 q 384 747 322 747 q 520 720 463 747 q 614 645 577 693 q 668 531 650 596 q 686 388 686 465 l 686 332 l 138 332 l 138 434 l 560 434 l 560 444 q 540 538 557 492 q 486 614 523 585 q 384 644 448 644 q 305 626 341 644 q 243 573 269 608 q 203 487 218 538 q 189 370 189 436 l 189 341 q 204 243 189 289 q 247 163 218 197 q 315 109 275 128 q 407 89 355 89 q 519 116 473 89 q 600 189 566 143 l 676 128 q 616 60 652 92 q 526 7 579 27 q 400 -14 473 -14 m 484 1014 l 586 1014 q 562 920 586 961 q 492 856 537 879 q 384 833 446 833 q 235 883 290 833 q 180 1014 180 934 l 282 1014 q 305 943 282 974 q 384 913 328 913 q 461 943 438 913 q 484 1014 484 974 z "},"Ӛ":{"ha":960,"x_min":64,"x_max":880,"o":"m 435 1001 q 626 966 543 1001 q 765 868 709 931 q 851 717 822 804 q 880 525 880 630 l 880 461 q 849 269 880 356 q 761 118 817 181 q 631 20 705 55 q 473 -14 557 -14 q 296 18 372 -14 q 168 108 219 49 q 90 250 116 167 q 64 436 64 333 l 64 520 l 800 520 l 800 419 l 195 419 l 195 396 q 209 278 195 333 q 256 182 224 223 q 342 118 289 141 q 473 94 395 94 q 591 123 539 94 q 678 202 642 151 q 732 319 713 252 q 750 461 750 385 l 750 525 q 732 668 750 602 q 676 785 714 734 q 578 864 638 836 q 435 892 519 892 q 287 873 347 892 q 187 836 227 854 l 155 932 q 208 960 172 943 q 300 988 243 976 q 435 1001 357 1001 m 212 1117 q 231 1168 212 1147 q 286 1190 250 1190 q 342 1168 323 1190 q 361 1117 361 1147 q 342 1067 361 1088 q 286 1046 323 1046 q 231 1067 250 1046 q 212 1117 212 1088 m 505 1116 q 523 1167 505 1146 q 578 1188 542 1188 q 634 1167 614 1188 q 653 1116 653 1146 q 634 1066 653 1086 q 578 1045 614 1045 q 523 1066 542 1045 q 505 1116 505 1086 z "},"ә":{"ha":732,"x_min":67,"x_max":680,"o":"m 347 749 q 485 722 423 749 q 589 645 546 694 q 656 529 633 596 q 680 382 680 462 l 680 352 q 654 205 680 272 q 585 89 629 138 q 484 13 541 40 q 366 -13 428 -14 q 234 11 290 -13 q 141 79 178 35 q 85 182 104 123 q 67 314 67 242 l 67 397 l 605 397 l 605 294 l 193 294 l 193 277 q 211 185 193 228 q 268 116 229 142 q 366 90 307 90 q 441 110 407 90 q 500 166 475 130 q 539 250 526 202 q 553 352 553 298 l 553 382 q 540 484 553 436 q 501 568 527 532 q 437 625 475 604 q 347 646 398 646 q 222 624 273 646 q 138 572 172 603 l 88 658 q 185 720 122 690 q 347 749 248 749 z "},"ӛ":{"ha":732,"x_min":67,"x_max":680,"o":"m 347 749 q 485 722 423 749 q 589 645 546 694 q 656 529 633 596 q 680 382 680 462 l 680 352 q 654 205 680 272 q 585 89 629 138 q 484 13 541 40 q 366 -13 428 -14 q 234 11 290 -13 q 141 79 178 35 q 85 182 104 123 q 67 314 67 242 l 67 397 l 605 397 l 605 294 l 193 294 l 193 277 q 211 185 193 228 q 268 116 229 142 q 366 90 307 90 q 441 110 407 90 q 500 166 475 130 q 539 250 526 202 q 553 352 553 298 l 553 382 q 540 484 553 436 q 501 568 527 532 q 437 625 475 604 q 347 646 398 646 q 222 624 273 646 q 138 572 172 603 l 88 658 q 185 720 122 690 q 347 749 248 749 m 161 930 q 180 982 161 961 q 235 1003 199 1003 q 290 982 271 1003 q 309 930 309 961 q 290 881 309 901 q 235 860 271 860 q 180 881 199 860 q 161 930 161 901 m 453 929 q 472 981 453 960 q 527 1002 490 1002 q 582 981 563 1002 q 602 929 602 960 q 582 879 602 900 q 527 859 563 859 q 472 879 490 859 q 453 929 453 900 z "},"Ӝ":{"ha":1261,"x_min":18,"x_max":1252,"o":"m 397 451 l 45 987 l 198 987 l 460 559 l 646 559 l 625 451 l 397 451 m 468 461 l 181 0 l 18 0 l 385 574 l 468 461 m 703 987 l 703 0 l 573 0 l 573 987 l 703 987 m 1226 987 l 872 451 l 651 451 l 631 559 l 810 559 l 1072 987 l 1226 987 m 1089 0 l 803 461 l 886 574 l 1252 0 l 1089 0 m 414 1148 q 433 1200 414 1179 q 488 1221 452 1221 q 544 1200 525 1221 q 563 1148 563 1179 q 544 1098 563 1119 q 488 1078 525 1078 q 433 1098 452 1078 q 414 1148 414 1119 m 707 1147 q 725 1198 707 1177 q 781 1219 744 1219 q 836 1198 817 1219 q 855 1147 855 1177 q 836 1097 855 1118 q 781 1076 817 1076 q 725 1097 744 1076 q 707 1147 707 1118 z "},"ӝ":{"ha":1064,"x_min":15,"x_max":1044,"o":"m 318 319 l 40 734 l 191 734 l 381 430 l 528 430 l 509 319 l 318 319 m 387 332 l 174 0 l 15 0 l 307 423 l 387 332 m 592 734 l 592 0 l 467 0 l 467 734 l 592 734 m 1020 734 l 742 319 l 551 319 l 531 430 l 678 430 l 868 734 l 1020 734 m 886 0 l 672 332 l 753 423 l 1044 0 l 886 0 m 311 916 q 330 967 311 946 q 385 988 349 988 q 440 967 421 988 q 459 916 459 946 q 440 866 459 886 q 385 845 421 845 q 330 866 349 845 q 311 916 311 886 m 603 914 q 622 966 603 945 q 677 987 640 987 q 732 966 713 987 q 751 914 751 945 q 732 864 751 885 q 677 844 713 844 q 622 864 640 844 q 603 914 603 885 z "},"Ӟ":{"ha":825,"x_min":54,"x_max":767,"o":"m 417 474 l 300 474 l 300 557 l 412 557 q 533 578 487 557 q 600 637 579 600 q 621 723 621 674 q 598 809 621 770 q 527 871 575 848 q 403 895 479 895 q 300 873 346 895 q 227 814 254 852 q 199 728 199 777 l 68 728 q 95 841 68 791 q 168 927 121 892 q 274 982 214 963 q 403 1001 335 1001 q 547 983 482 1001 q 657 930 611 965 q 728 842 703 895 q 752 721 752 790 q 728 625 752 670 q 661 547 705 581 q 555 493 616 513 q 417 474 493 474 m 300 532 l 417 532 q 566 515 500 532 q 675 465 631 498 q 744 385 720 433 q 767 275 767 337 q 740 153 767 206 q 665 62 713 99 q 549 5 616 24 q 403 -14 482 -14 q 277 3 339 -14 q 165 55 215 20 q 84 144 115 90 q 54 274 54 198 l 185 274 q 213 183 185 224 q 289 117 240 142 q 403 92 338 92 q 529 116 477 92 q 609 180 581 139 q 636 273 636 221 q 622 352 636 318 q 579 407 607 385 q 509 439 551 429 q 412 450 467 450 l 300 450 l 300 532 m 193 1162 q 212 1214 193 1193 q 267 1235 231 1235 q 322 1214 303 1235 q 341 1162 341 1193 q 322 1113 341 1133 q 267 1092 303 1092 q 212 1113 231 1092 q 193 1162 193 1133 m 485 1161 q 504 1213 485 1192 q 559 1234 522 1234 q 614 1213 595 1234 q 633 1161 633 1192 q 614 1111 633 1132 q 559 1090 595 1090 q 504 1111 522 1090 q 485 1161 485 1132 z "},"ӟ":{"ha":705,"x_min":60,"x_max":638,"o":"m 370 351 l 235 351 l 235 428 l 359 428 q 442 441 412 428 q 486 478 473 454 q 498 534 498 502 q 484 588 498 562 q 437 629 469 613 q 352 645 406 645 q 273 630 309 645 q 217 588 238 614 q 197 530 197 562 l 71 530 q 110 645 71 597 q 212 720 148 694 q 352 747 276 747 q 466 733 416 747 q 552 692 517 719 q 606 626 587 665 q 625 534 625 586 q 607 463 625 496 q 556 405 589 430 q 476 365 523 379 q 370 351 429 351 m 235 398 l 370 398 q 486 386 435 398 q 570 349 536 373 q 621 289 604 324 q 638 207 638 253 q 617 114 638 155 q 559 45 597 73 q 468 1 521 16 q 352 -14 416 -14 q 214 11 281 -14 q 103 86 146 35 q 60 217 60 138 l 185 217 q 206 154 185 184 q 265 106 227 124 q 352 87 302 87 q 440 104 405 87 q 493 147 475 120 q 511 206 511 174 q 495 273 511 248 q 445 310 479 298 q 359 321 412 321 l 235 321 l 235 398 m 133 929 q 152 981 133 960 q 207 1002 171 1002 q 262 981 243 1002 q 281 929 281 960 q 262 879 281 900 q 207 859 243 859 q 152 879 171 859 q 133 929 133 900 m 425 928 q 444 979 425 958 q 499 1000 463 1000 q 554 979 535 1000 q 574 928 574 958 q 554 878 574 899 q 499 857 535 857 q 444 878 463 857 q 425 928 425 899 z "},"Ӣ":{"ha":991,"x_min":121,"x_max":868,"o":"m 251 227 l 737 987 l 868 987 l 868 0 l 737 0 l 737 762 l 251 0 l 121 0 l 121 987 l 251 987 l 251 227 m 728 1204 l 728 1107 l 273 1107 l 273 1204 l 728 1204 z "},"ӣ":{"ha":802,"x_min":106,"x_max":696,"o":"m 231 199 l 570 734 l 696 734 l 696 0 l 570 0 l 570 535 l 231 0 l 106 0 l 106 734 l 231 734 l 231 199 m 631 971 l 631 875 l 176 875 l 176 971 l 631 971 z "},"Ӥ":{"ha":991,"x_min":121,"x_max":868,"o":"m 251 227 l 737 987 l 868 987 l 868 0 l 737 0 l 737 762 l 251 0 l 121 0 l 121 987 l 251 987 l 251 227 m 279 1148 q 298 1200 279 1179 q 353 1221 317 1221 q 408 1200 389 1221 q 427 1148 427 1179 q 408 1098 427 1119 q 353 1078 389 1078 q 298 1098 317 1078 q 279 1148 279 1119 m 571 1147 q 590 1198 571 1177 q 645 1219 608 1219 q 700 1198 681 1219 q 720 1147 720 1177 q 700 1097 720 1118 q 645 1076 681 1076 q 590 1097 608 1076 q 571 1147 571 1118 z "},"ӥ":{"ha":802,"x_min":106,"x_max":696,"o":"m 231 199 l 570 734 l 696 734 l 696 0 l 570 0 l 570 535 l 231 0 l 106 0 l 106 734 l 231 734 l 231 199 m 182 916 q 201 967 182 946 q 256 988 220 988 q 311 967 292 988 q 330 916 330 946 q 311 866 330 886 q 256 845 292 845 q 201 866 220 845 q 182 916 182 886 m 474 914 q 493 966 474 945 q 548 987 511 987 q 603 966 584 987 q 623 914 623 945 q 603 864 623 885 q 548 844 584 844 q 493 864 511 844 q 474 914 474 885 z "},"Ӧ":{"ha":956,"x_min":81,"x_max":875,"o":"m 875 525 l 875 463 q 847 263 875 351 q 767 113 819 175 q 642 19 715 52 q 479 -14 569 -14 q 318 19 391 -14 q 192 113 245 52 q 110 263 139 175 q 81 463 81 351 l 81 525 q 110 724 81 636 q 191 874 138 812 q 317 968 244 936 q 477 1001 390 1001 q 641 968 568 1001 q 766 874 713 936 q 847 724 819 812 q 875 525 875 636 m 745 463 l 745 526 q 727 682 745 614 q 675 796 709 750 q 590 866 640 842 q 477 890 541 890 q 367 866 416 890 q 283 796 318 842 q 229 682 248 750 q 210 526 210 614 l 210 463 q 229 306 210 374 q 284 191 248 237 q 369 121 319 144 q 479 97 418 97 q 592 121 543 97 q 676 191 642 144 q 728 306 710 237 q 745 463 745 374 m 261 1142 q 280 1194 261 1173 q 335 1215 299 1215 q 391 1194 372 1215 q 410 1142 410 1173 q 391 1092 410 1113 q 335 1072 372 1072 q 280 1092 299 1072 q 261 1142 261 1113 m 553 1141 q 572 1192 553 1171 q 627 1213 591 1213 q 683 1192 663 1213 q 702 1141 702 1171 q 683 1091 702 1112 q 627 1070 663 1070 q 572 1091 591 1070 q 553 1141 553 1112 z "},"ӧ":{"ha":792,"x_min":62,"x_max":730,"o":"m 62 359 l 62 374 q 85 522 62 454 q 152 641 109 590 q 257 719 195 691 q 395 747 319 747 q 535 719 473 747 q 641 641 597 691 q 707 522 684 590 q 730 374 730 454 l 730 359 q 707 212 730 279 q 641 93 684 144 q 535 15 597 43 q 397 -14 474 -14 q 258 15 319 -14 q 152 93 196 43 q 85 212 109 144 q 62 359 62 279 m 188 374 l 188 359 q 201 255 188 304 q 240 170 214 207 q 305 111 266 132 q 397 90 345 90 q 487 111 448 90 q 552 170 526 132 q 591 255 578 207 q 604 359 604 304 l 604 374 q 591 477 604 429 q 552 563 578 526 q 487 623 526 601 q 395 644 448 644 q 305 623 344 644 q 240 563 266 601 q 201 477 214 526 q 188 374 188 429 m 172 930 q 191 981 172 960 q 245 1002 210 1002 q 301 981 282 1002 q 320 930 320 960 q 301 880 320 901 q 245 859 282 859 q 191 880 210 859 q 172 930 172 901 m 464 928 q 483 980 464 959 q 538 1001 501 1001 q 593 980 574 1001 q 612 928 612 959 q 593 879 612 899 q 538 858 574 858 q 483 879 501 858 q 464 928 464 899 z "},"Ө":{"ha":945,"x_min":70,"x_max":864,"o":"m 467 1001 q 600 980 538 1001 q 710 919 662 959 q 793 820 759 878 q 846 688 828 762 q 864 525 864 614 l 864 463 q 836 263 864 351 q 756 113 808 175 q 631 19 704 52 q 468 -14 558 -14 q 337 7 398 -14 q 227 69 276 28 q 142 167 178 109 q 89 299 107 225 q 70 463 70 374 l 70 525 q 99 724 70 636 q 180 874 127 812 q 306 968 233 936 q 467 1001 379 1001 m 467 890 q 366 870 412 890 q 285 812 319 850 q 229 716 251 773 q 201 586 208 660 q 200 563 201 575 q 199 539 199 551 l 734 539 q 734 562 734 551 q 732 585 734 574 q 706 716 726 659 q 651 811 686 772 q 571 870 617 850 q 467 890 524 890 m 468 97 q 573 117 526 97 q 653 176 620 137 q 707 274 687 216 q 732 407 727 332 q 733 421 733 414 q 734 436 734 429 l 200 436 q 201 415 201 425 q 203 395 202 405 q 231 267 210 323 q 288 174 253 212 q 368 116 322 136 q 468 97 414 97 z "},"ө":{"ha":789,"x_min":62,"x_max":730,"o":"m 395 747 q 535 719 473 747 q 640 641 597 691 q 707 522 684 590 q 730 374 730 454 l 730 359 q 707 212 730 279 q 640 93 684 144 q 535 15 597 43 q 397 -14 474 -14 q 258 15 319 -14 q 152 93 196 43 q 85 212 109 144 q 62 359 62 279 l 62 374 q 85 522 62 454 q 152 641 109 590 q 257 719 195 691 q 395 747 319 747 m 395 644 q 313 627 349 644 q 252 579 277 610 q 211 508 227 549 q 191 422 196 468 l 602 422 q 581 508 597 468 q 540 579 566 549 q 478 627 514 610 q 395 644 441 644 m 397 90 q 480 107 444 90 q 542 156 516 125 q 583 230 568 188 q 602 319 598 271 l 190 319 q 209 230 194 271 q 250 156 224 188 q 313 107 276 125 q 397 90 349 90 z "},"Ӫ":{"ha":945,"x_min":70,"x_max":864,"o":"m 467 1001 q 600 980 538 1001 q 710 919 662 959 q 793 820 759 878 q 846 688 828 762 q 864 525 864 614 l 864 463 q 836 263 864 351 q 756 113 808 175 q 631 19 704 52 q 468 -14 558 -14 q 337 7 398 -14 q 227 69 276 28 q 142 167 178 109 q 89 299 107 225 q 70 463 70 374 l 70 525 q 99 724 70 636 q 180 874 127 812 q 306 968 233 936 q 467 1001 379 1001 m 467 890 q 366 870 412 890 q 285 812 319 850 q 229 716 251 773 q 201 586 208 660 q 200 563 201 575 q 199 539 199 551 l 734 539 q 734 562 734 551 q 732 585 734 574 q 706 716 726 659 q 651 811 686 772 q 571 870 617 850 q 467 890 524 890 m 468 97 q 573 117 526 97 q 653 176 620 137 q 707 274 687 216 q 732 407 727 332 q 733 421 733 414 q 734 436 734 429 l 200 436 q 201 415 201 425 q 203 395 202 405 q 231 267 210 323 q 288 174 253 212 q 368 116 322 136 q 468 97 414 97 m 269 1145 q 288 1196 269 1175 q 343 1217 307 1217 q 399 1196 380 1217 q 418 1145 418 1175 q 399 1095 418 1116 q 343 1074 380 1074 q 288 1095 307 1074 q 269 1145 269 1116 m 562 1143 q 580 1195 562 1174 q 635 1216 599 1216 q 691 1195 671 1216 q 710 1143 710 1174 q 691 1094 710 1114 q 635 1073 671 1073 q 580 1094 599 1073 q 562 1143 562 1114 z "},"ӫ":{"ha":789,"x_min":62,"x_max":730,"o":"m 395 747 q 535 719 473 747 q 640 641 597 691 q 707 522 684 590 q 730 374 730 454 l 730 359 q 707 212 730 279 q 640 93 684 144 q 535 15 597 43 q 397 -14 474 -14 q 258 15 319 -14 q 152 93 196 43 q 85 212 109 144 q 62 359 62 279 l 62 374 q 85 522 62 454 q 152 641 109 590 q 257 719 195 691 q 395 747 319 747 m 395 644 q 313 627 349 644 q 252 579 277 610 q 211 508 227 549 q 191 422 196 468 l 602 422 q 581 508 597 468 q 540 579 566 549 q 478 627 514 610 q 395 644 441 644 m 397 90 q 480 107 444 90 q 542 156 516 125 q 583 230 568 188 q 602 319 598 271 l 190 319 q 209 230 194 271 q 250 156 224 188 q 313 107 276 125 q 397 90 349 90 m 161 931 q 180 983 161 962 q 235 1004 199 1004 q 290 983 271 1004 q 309 931 309 962 q 290 881 309 902 q 235 861 271 861 q 180 881 199 861 q 161 931 161 902 m 453 930 q 472 981 453 960 q 527 1002 490 1002 q 582 981 563 1002 q 602 930 602 960 q 582 880 602 901 q 527 859 563 859 q 472 880 490 859 q 453 930 453 901 z "},"Ӭ":{"ha":937,"x_min":100,"x_max":860,"o":"m 746 546 l 746 439 l 341 439 l 341 546 l 746 546 m 100 314 l 231 314 q 267 195 241 244 q 342 119 292 145 q 475 93 391 93 q 589 120 541 93 q 668 196 637 148 q 714 308 699 244 q 730 444 730 372 l 730 543 q 719 660 730 606 q 686 757 708 714 q 632 831 665 800 q 558 878 600 861 q 463 894 515 894 q 339 867 387 894 q 266 790 292 840 q 231 671 241 740 l 100 671 q 154 843 111 768 q 274 959 197 917 q 463 1001 351 1001 q 628 968 555 1001 q 753 876 701 936 q 832 730 805 815 q 860 542 860 646 l 860 444 q 832 256 860 340 q 754 112 805 172 q 632 19 703 52 q 475 -14 562 -14 q 277 30 356 -14 q 154 146 197 73 q 100 314 111 220 m 251 1163 q 270 1215 251 1194 q 325 1236 289 1236 q 380 1215 361 1236 q 399 1163 399 1194 q 380 1113 399 1134 q 325 1093 361 1093 q 270 1113 289 1093 q 251 1163 251 1134 m 543 1162 q 562 1213 543 1192 q 617 1234 581 1234 q 672 1213 653 1234 q 692 1162 692 1192 q 672 1112 692 1133 q 617 1091 653 1091 q 562 1112 581 1091 q 543 1162 543 1133 z "},"ӭ":{"ha":747,"x_min":68,"x_max":673,"o":"m 353 644 q 274 626 311 644 q 212 575 236 608 q 188 501 188 543 l 68 501 q 109 623 68 567 q 214 713 149 679 q 353 747 279 747 q 490 718 430 747 q 590 638 549 689 q 652 521 631 587 q 673 381 673 455 l 673 353 q 652 213 673 279 q 590 95 631 146 q 489 15 549 44 q 353 -14 430 -14 q 207 21 271 -14 q 105 116 142 56 q 68 252 68 176 l 188 252 q 210 169 188 206 q 269 111 232 132 q 353 89 307 89 q 441 112 404 89 q 502 173 478 135 q 537 258 526 211 q 548 353 548 305 l 548 381 q 537 476 548 429 q 502 561 526 523 q 442 622 479 599 q 353 644 405 644 m 609 425 l 609 323 l 271 323 l 271 425 l 609 425 m 153 930 q 172 981 153 960 q 227 1002 191 1002 q 282 981 263 1002 q 301 930 301 960 q 282 880 301 901 q 227 859 263 859 q 172 880 191 859 q 153 930 153 901 m 445 928 q 464 980 445 959 q 519 1001 482 1001 q 574 980 555 1001 q 593 928 593 959 q 574 879 593 899 q 519 858 555 858 q 464 879 482 858 q 445 928 445 899 z "},"Ӯ":{"ha":873,"x_min":52,"x_max":832,"o":"m 420 328 l 682 987 l 832 987 l 483 165 q 450 98 468 130 q 405 41 431 66 q 339 1 378 16 q 243 -14 300 -14 q 204 -13 227 -14 q 175 -9 182 -11 l 179 96 q 208 93 186 94 q 240 92 230 92 q 301 108 279 92 q 337 148 323 123 q 363 197 351 172 l 420 328 m 199 987 l 473 372 l 506 251 l 396 243 l 52 987 l 199 987 m 669 1204 l 669 1107 l 214 1107 l 214 1204 l 669 1204 z "},"ӯ":{"ha":657,"x_min":15,"x_max":640,"o":"m 302 76 l 506 734 l 640 734 l 346 -113 q 319 -172 336 -140 q 277 -232 302 -203 q 215 -278 251 -260 q 128 -296 178 -296 q 90 -292 113 -296 q 58 -286 67 -288 l 57 -184 q 74 -185 62 -184 q 91 -186 86 -186 q 163 -175 134 -186 q 214 -138 193 -164 q 250 -66 235 -112 l 302 76 m 152 734 l 342 164 l 375 32 l 285 -14 l 15 734 l 152 734 m 576 985 l 576 889 l 121 889 l 121 985 l 576 985 z "},"Ӱ":{"ha":873,"x_min":52,"x_max":832,"o":"m 420 328 l 682 987 l 832 987 l 483 165 q 450 98 468 130 q 405 41 431 66 q 339 1 378 16 q 243 -14 300 -14 q 204 -13 227 -14 q 175 -9 182 -11 l 179 96 q 208 93 186 94 q 240 92 230 92 q 301 108 279 92 q 337 148 323 123 q 363 197 351 172 l 420 328 m 199 987 l 473 372 l 506 251 l 396 243 l 52 987 l 199 987 m 220 1148 q 239 1200 220 1179 q 294 1221 258 1221 q 349 1200 330 1221 q 368 1148 368 1179 q 349 1098 368 1119 q 294 1078 330 1078 q 239 1098 258 1078 q 220 1148 220 1119 m 512 1147 q 531 1198 512 1177 q 586 1219 549 1219 q 641 1198 622 1219 q 661 1147 661 1177 q 641 1097 661 1118 q 586 1076 622 1076 q 531 1097 549 1076 q 512 1147 512 1118 z "},"ӱ":{"ha":657,"x_min":15,"x_max":640,"o":"m 302 76 l 506 734 l 640 734 l 346 -113 q 319 -172 336 -140 q 277 -232 302 -203 q 215 -278 251 -260 q 128 -296 178 -296 q 90 -292 113 -296 q 58 -286 67 -288 l 57 -184 q 74 -185 62 -184 q 91 -186 86 -186 q 163 -175 134 -186 q 214 -138 193 -164 q 250 -66 235 -112 l 302 76 m 152 734 l 342 164 l 375 32 l 285 -14 l 15 734 l 152 734 m 126 930 q 145 981 126 960 q 200 1002 164 1002 q 256 981 237 1002 q 275 930 275 960 q 256 880 275 901 q 200 859 237 859 q 145 880 164 859 q 126 930 126 901 m 418 928 q 437 980 418 959 q 492 1001 456 1001 q 548 980 528 1001 q 567 928 567 959 q 548 879 567 899 q 492 858 528 858 q 437 879 456 858 q 418 928 418 899 z "},"Ӳ":{"ha":873,"x_min":52,"x_max":832,"o":"m 420 328 l 682 987 l 832 987 l 483 165 q 450 98 468 130 q 405 41 431 66 q 339 1 378 16 q 243 -14 300 -14 q 204 -13 227 -14 q 175 -9 182 -11 l 179 96 q 208 93 186 94 q 240 92 230 92 q 301 108 279 92 q 337 148 323 123 q 363 197 351 172 l 420 328 m 199 987 l 473 372 l 506 251 l 396 243 l 52 987 l 199 987 m 459 1054 l 615 1259 l 755 1259 l 574 1054 l 459 1054 m 269 1054 l 385 1259 l 519 1259 l 371 1054 l 269 1054 z "},"ӳ":{"ha":657,"x_min":15,"x_max":662,"o":"m 302 76 l 506 734 l 640 734 l 346 -113 q 319 -172 336 -140 q 277 -232 302 -203 q 215 -278 251 -260 q 128 -296 178 -296 q 90 -292 113 -296 q 58 -286 67 -288 l 57 -184 q 74 -185 62 -184 q 91 -186 86 -186 q 163 -175 134 -186 q 214 -138 193 -164 q 250 -66 235 -112 l 302 76 m 152 734 l 342 164 l 375 32 l 285 -14 l 15 734 l 152 734 m 366 836 l 522 1041 l 662 1041 l 480 836 l 366 836 m 176 836 l 291 1041 l 425 1041 l 277 836 l 176 836 z "},"Ӵ":{"ha":951,"x_min":102,"x_max":831,"o":"m 102 987 l 233 987 l 233 679 q 256 559 233 602 q 323 498 278 515 q 437 480 369 480 q 516 484 477 480 q 591 493 554 487 q 663 508 627 499 q 733 527 699 517 l 733 420 q 667 401 700 410 q 599 386 634 392 q 525 376 564 380 q 437 373 485 373 q 257 403 332 373 q 142 500 182 433 q 102 679 102 568 l 102 987 m 700 987 l 831 987 l 831 0 l 700 0 l 700 987 m 248 1148 q 267 1200 248 1179 q 322 1221 286 1221 q 378 1200 359 1221 q 397 1148 397 1179 q 378 1098 397 1119 q 322 1078 359 1078 q 267 1098 286 1078 q 248 1148 248 1119 m 541 1147 q 559 1198 541 1177 q 614 1219 578 1219 q 670 1198 650 1219 q 689 1147 689 1177 q 670 1097 689 1118 q 614 1076 650 1076 q 559 1097 578 1076 q 541 1147 541 1118 z "},"ӵ":{"ha":755,"x_min":71,"x_max":649,"o":"m 649 734 l 649 0 l 524 0 l 524 734 l 649 734 m 606 397 l 606 294 q 529 268 568 279 q 447 251 490 257 q 354 244 404 244 q 203 274 267 244 q 105 366 140 304 q 71 521 71 427 l 71 735 l 196 735 l 196 521 q 214 422 196 460 q 268 366 233 384 q 354 348 303 348 q 446 354 403 348 q 529 372 489 361 q 606 397 568 382 m 137 916 q 156 967 137 946 q 211 988 175 988 q 267 967 248 988 q 286 916 286 946 q 267 866 286 886 q 211 845 248 845 q 156 866 175 845 q 137 916 137 886 m 429 914 q 448 966 429 945 q 503 987 467 987 q 558 966 539 987 q 578 914 578 945 q 558 864 578 885 q 503 844 539 844 q 448 864 467 844 q 429 914 429 885 z "},"Ӹ":{"ha":1201,"x_min":121,"x_max":1075,"o":"m 220 585 l 490 585 q 673 549 598 585 q 786 448 747 513 q 825 295 825 382 q 803 176 825 230 q 739 82 781 122 q 633 21 696 43 q 490 0 571 0 l 121 0 l 121 987 l 252 987 l 252 106 l 490 106 q 607 133 562 106 q 673 203 652 160 q 694 296 694 247 q 673 387 694 346 q 607 453 652 429 q 490 478 562 478 l 220 478 l 220 585 m 1075 987 l 1075 0 l 944 0 l 944 987 l 1075 987 m 385 1148 q 404 1200 385 1179 q 459 1221 423 1221 q 515 1200 496 1221 q 534 1148 534 1179 q 515 1098 534 1119 q 459 1078 496 1078 q 404 1098 423 1078 q 385 1148 385 1119 m 677 1147 q 696 1198 677 1177 q 751 1219 715 1219 q 807 1198 787 1219 q 826 1147 826 1177 q 807 1097 826 1118 q 751 1076 787 1076 q 696 1097 715 1076 q 677 1147 677 1118 z "},"ӹ":{"ha":1078,"x_min":107,"x_max":954,"o":"m 199 481 l 419 481 q 569 451 508 481 q 662 366 630 420 q 693 243 693 312 q 675 148 693 193 q 623 71 658 104 q 537 19 588 37 q 419 0 486 0 l 107 0 l 107 734 l 233 734 l 233 103 l 419 103 q 506 123 473 103 q 553 174 538 142 q 567 239 567 205 q 553 304 567 272 q 506 357 538 336 q 419 378 473 378 l 199 378 l 199 481 m 954 734 l 954 0 l 829 0 l 829 734 l 954 734 m 316 916 q 335 967 316 946 q 390 988 354 988 q 446 967 427 988 q 465 916 465 946 q 446 866 465 886 q 390 845 427 845 q 335 866 354 845 q 316 916 316 886 m 608 914 q 627 966 608 945 q 682 987 646 987 q 738 966 718 987 q 757 914 757 945 q 738 864 757 885 q 682 844 718 844 q 627 864 646 844 q 608 914 608 885 z "},"ԁ":{"ha":783,"x_min":64,"x_max":684,"o":"m 558 142 l 558 1042 l 684 1042 l 684 0 l 569 0 l 558 142 m 64 359 l 64 373 q 85 526 64 457 q 144 644 106 595 q 236 721 182 694 q 355 747 289 747 q 476 723 424 747 q 564 653 528 699 q 621 543 600 608 q 650 397 642 479 l 650 335 q 622 190 643 254 q 564 80 600 125 q 475 11 528 35 q 353 -14 423 -14 q 236 14 289 -14 q 144 92 182 42 q 85 211 106 142 q 64 359 64 279 m 191 373 l 191 359 q 202 256 191 304 q 237 171 213 208 q 297 114 260 134 q 385 93 334 93 q 487 119 447 93 q 552 189 528 146 q 590 283 576 233 l 590 447 q 567 519 582 484 q 527 582 551 554 q 468 625 503 609 q 386 642 433 642 q 297 620 334 642 q 237 562 260 599 q 202 476 213 525 q 191 373 191 428 z "},"Ạ":{"ha":906,"x_min":20,"x_max":888,"o":"m 480 900 l 153 0 l 20 0 l 396 987 l 482 987 l 480 900 m 754 0 l 427 900 l 425 987 l 511 987 l 888 0 l 754 0 m 737 366 l 737 258 l 182 258 l 182 366 l 737 366 m 387 -167 q 406 -115 387 -136 q 461 -94 425 -94 q 516 -115 497 -94 q 536 -167 536 -136 q 516 -217 536 -196 q 461 -237 497 -237 q 406 -217 425 -237 q 387 -167 387 -196 z "},"ạ":{"ha":755,"x_min":74,"x_max":680,"o":"m 528 125 l 528 503 q 511 579 528 547 q 459 629 494 611 q 374 646 425 646 q 291 630 326 646 q 235 587 255 614 q 215 530 215 561 l 90 530 q 110 608 90 570 q 169 679 130 647 q 261 729 207 710 q 381 747 315 747 q 523 720 461 747 q 619 638 584 693 q 654 502 654 584 l 654 160 q 660 82 654 123 q 680 11 667 41 l 680 0 l 549 0 q 534 58 539 22 q 528 125 528 94 m 550 445 l 551 357 l 425 357 q 329 348 371 357 q 258 323 287 340 q 215 280 230 306 q 200 221 200 255 q 216 158 200 186 q 263 113 231 130 q 340 96 294 96 q 442 121 398 96 q 512 180 486 145 q 541 249 538 216 l 594 189 q 568 125 589 160 q 512 59 547 91 q 430 7 477 28 q 322 -14 382 -14 q 192 16 248 -14 q 105 94 136 45 q 74 204 74 143 q 97 308 74 263 q 163 384 120 353 q 268 429 207 414 q 404 445 329 445 l 550 445 m 262 -167 q 281 -115 262 -136 q 336 -94 300 -94 q 392 -115 372 -94 q 411 -167 411 -136 q 392 -217 411 -196 q 336 -237 372 -237 q 281 -217 300 -237 q 262 -167 262 -196 z "},"Ả":{"ha":906,"x_min":20,"x_max":888,"o":"m 480 900 l 153 0 l 20 0 l 396 987 l 482 987 l 480 900 m 754 0 l 427 900 l 425 987 l 511 987 l 888 0 l 754 0 m 737 366 l 737 258 l 182 258 l 182 366 l 737 366 m 503 1064 l 413 1064 l 412 1167 q 469 1174 447 1169 q 500 1190 490 1179 q 511 1218 511 1200 q 502 1242 511 1232 q 477 1258 493 1252 q 441 1267 462 1265 q 398 1270 421 1270 l 403 1342 q 491 1333 453 1342 q 556 1308 530 1324 q 595 1267 582 1291 q 608 1215 608 1244 q 576 1140 608 1164 q 504 1112 543 1117 l 503 1064 z "},"ả":{"ha":755,"x_min":74,"x_max":680,"o":"m 528 125 l 528 503 q 511 579 528 547 q 459 629 494 611 q 374 646 425 646 q 291 630 326 646 q 235 587 255 614 q 215 530 215 561 l 90 530 q 110 608 90 570 q 169 679 130 647 q 261 729 207 710 q 381 747 315 747 q 523 720 461 747 q 619 638 584 693 q 654 502 654 584 l 654 160 q 660 82 654 123 q 680 11 667 41 l 680 0 l 549 0 q 534 58 539 22 q 528 125 528 94 m 550 445 l 551 357 l 425 357 q 329 348 371 357 q 258 323 287 340 q 215 280 230 306 q 200 221 200 255 q 216 158 200 186 q 263 113 231 130 q 340 96 294 96 q 442 121 398 96 q 512 180 486 145 q 541 249 538 216 l 594 189 q 568 125 589 160 q 512 59 547 91 q 430 7 477 28 q 322 -14 382 -14 q 192 16 248 -14 q 105 94 136 45 q 74 204 74 143 q 97 308 74 263 q 163 384 120 353 q 268 429 207 414 q 404 445 329 445 l 550 445 m 442 853 l 352 853 l 351 956 q 408 963 386 958 q 439 979 429 968 q 450 1007 450 989 q 441 1031 450 1021 q 416 1047 432 1041 q 380 1057 401 1054 q 337 1059 360 1059 l 342 1131 q 430 1122 392 1131 q 495 1097 469 1114 q 534 1056 521 1080 q 547 1004 547 1033 q 515 929 547 953 q 443 901 482 906 l 442 853 z "},"Ấ":{"ha":906,"x_min":20,"x_max":888,"o":"m 480 900 l 153 0 l 20 0 l 396 987 l 482 987 l 480 900 m 754 0 l 427 900 l 425 987 l 511 987 l 888 0 l 754 0 m 737 366 l 737 258 l 182 258 l 182 366 l 737 366 m 207 1053 l 404 1231 l 507 1231 l 705 1053 l 571 1053 l 456 1160 l 340 1053 l 207 1053 m 654 1173 l 750 1348 l 886 1348 l 749 1173 l 654 1173 z "},"ấ":{"ha":755,"x_min":74,"x_max":825,"o":"m 528 125 l 528 503 q 511 579 528 547 q 459 629 494 611 q 374 646 425 646 q 291 630 326 646 q 235 587 255 614 q 215 530 215 561 l 90 530 q 110 608 90 570 q 169 679 130 647 q 261 729 207 710 q 381 747 315 747 q 523 720 461 747 q 619 638 584 693 q 654 502 654 584 l 654 160 q 660 82 654 123 q 680 11 667 41 l 680 0 l 549 0 q 534 58 539 22 q 528 125 528 94 m 550 445 l 551 357 l 425 357 q 329 348 371 357 q 258 323 287 340 q 215 280 230 306 q 200 221 200 255 q 216 158 200 186 q 263 113 231 130 q 340 96 294 96 q 442 121 398 96 q 512 180 486 145 q 541 249 538 216 l 594 189 q 568 125 589 160 q 512 59 547 91 q 430 7 477 28 q 322 -14 382 -14 q 192 16 248 -14 q 105 94 136 45 q 74 204 74 143 q 97 308 74 263 q 163 384 120 353 q 268 429 207 414 q 404 445 329 445 l 550 445 m 146 842 l 343 1020 l 446 1020 l 644 842 l 510 842 l 395 949 l 279 842 l 146 842 m 593 962 l 689 1137 l 825 1137 l 688 962 l 593 962 z "},"Ầ":{"ha":906,"x_min":20,"x_max":888,"o":"m 480 900 l 153 0 l 20 0 l 396 987 l 482 987 l 480 900 m 754 0 l 427 900 l 425 987 l 511 987 l 888 0 l 754 0 m 737 366 l 737 258 l 182 258 l 182 366 l 737 366 m 505 1228 l 703 1050 l 569 1050 l 454 1158 l 339 1050 l 205 1050 l 402 1228 l 505 1228 m 159 1345 l 256 1171 l 160 1171 l 24 1345 l 159 1345 z "},"ầ":{"ha":755,"x_min":-37,"x_max":680,"o":"m 528 125 l 528 503 q 511 579 528 547 q 459 629 494 611 q 374 646 425 646 q 291 630 326 646 q 235 587 255 614 q 215 530 215 561 l 90 530 q 110 608 90 570 q 169 679 130 647 q 261 729 207 710 q 381 747 315 747 q 523 720 461 747 q 619 638 584 693 q 654 502 654 584 l 654 160 q 660 82 654 123 q 680 11 667 41 l 680 0 l 549 0 q 534 58 539 22 q 528 125 528 94 m 550 445 l 551 357 l 425 357 q 329 348 371 357 q 258 323 287 340 q 215 280 230 306 q 200 221 200 255 q 216 158 200 186 q 263 113 231 130 q 340 96 294 96 q 442 121 398 96 q 512 180 486 145 q 541 249 538 216 l 594 189 q 568 125 589 160 q 512 59 547 91 q 430 7 477 28 q 322 -14 382 -14 q 192 16 248 -14 q 105 94 136 45 q 74 204 74 143 q 97 308 74 263 q 163 384 120 353 q 268 429 207 414 q 404 445 329 445 l 550 445 m 444 1017 l 642 839 l 508 839 l 393 947 l 278 839 l 144 839 l 341 1017 l 444 1017 m 98 1135 l 195 960 l 99 960 l -37 1135 l 98 1135 z "},"Ẩ":{"ha":906,"x_min":20,"x_max":888,"o":"m 480 900 l 153 0 l 20 0 l 396 987 l 482 987 l 480 900 m 754 0 l 427 900 l 425 987 l 511 987 l 888 0 l 754 0 m 737 366 l 737 258 l 182 258 l 182 366 l 737 366 m 518 1220 l 704 1042 l 588 1042 l 454 1168 l 321 1042 l 206 1042 l 391 1220 l 518 1220 m 725 1135 l 647 1135 l 646 1225 q 694 1231 676 1227 q 722 1243 713 1235 q 730 1267 730 1252 q 718 1294 730 1284 q 683 1308 705 1303 q 635 1312 661 1312 l 639 1375 q 715 1368 682 1375 q 771 1345 748 1360 q 805 1311 793 1331 q 817 1265 817 1291 q 788 1201 817 1221 q 726 1177 760 1181 l 725 1135 z "},"ẩ":{"ha":755,"x_min":74,"x_max":755,"o":"m 528 125 l 528 503 q 511 579 528 547 q 459 629 494 611 q 374 646 425 646 q 291 630 326 646 q 235 587 255 614 q 215 530 215 561 l 90 530 q 110 608 90 570 q 169 679 130 647 q 261 729 207 710 q 381 747 315 747 q 523 720 461 747 q 619 638 584 693 q 654 502 654 584 l 654 160 q 660 82 654 123 q 680 11 667 41 l 680 0 l 549 0 q 534 58 539 22 q 528 125 528 94 m 550 445 l 551 357 l 425 357 q 329 348 371 357 q 258 323 287 340 q 215 280 230 306 q 200 221 200 255 q 216 158 200 186 q 263 113 231 130 q 340 96 294 96 q 442 121 398 96 q 512 180 486 145 q 541 249 538 216 l 594 189 q 568 125 589 160 q 512 59 547 91 q 430 7 477 28 q 322 -14 382 -14 q 192 16 248 -14 q 105 94 136 45 q 74 204 74 143 q 97 308 74 263 q 163 384 120 353 q 268 429 207 414 q 404 445 329 445 l 550 445 m 457 1009 l 643 831 l 527 831 l 393 957 l 260 831 l 145 831 l 330 1009 l 457 1009 m 664 924 l 586 924 l 585 1014 q 633 1020 615 1016 q 661 1033 652 1024 q 669 1056 669 1041 q 656 1083 669 1073 q 622 1097 644 1093 q 574 1101 600 1101 l 578 1164 q 654 1157 621 1164 q 710 1134 687 1149 q 744 1100 732 1120 q 755 1055 755 1080 q 727 990 755 1010 q 665 966 699 970 l 664 924 z "},"Ẫ":{"ha":906,"x_min":20,"x_max":888,"o":"m 480 900 l 153 0 l 20 0 l 396 987 l 482 987 l 480 900 m 754 0 l 427 900 l 425 987 l 511 987 l 888 0 l 754 0 m 737 366 l 737 258 l 182 258 l 182 366 l 737 366 m 499 1192 l 704 1027 l 588 1027 l 454 1134 l 321 1027 l 206 1027 l 410 1192 l 499 1192 m 579 1363 l 631 1348 q 617 1297 631 1321 q 578 1257 602 1272 q 523 1242 553 1242 q 469 1254 489 1242 q 430 1278 448 1266 q 385 1291 412 1291 q 346 1275 363 1291 q 328 1240 328 1259 l 276 1253 q 291 1304 276 1280 q 330 1345 305 1329 q 385 1361 355 1361 q 434 1349 413 1361 q 476 1325 455 1337 q 523 1314 496 1314 q 562 1329 544 1314 q 579 1363 579 1344 z "},"ẫ":{"ha":755,"x_min":74,"x_max":680,"o":"m 528 125 l 528 503 q 511 579 528 547 q 459 629 494 611 q 374 646 425 646 q 291 630 326 646 q 235 587 255 614 q 215 530 215 561 l 90 530 q 110 608 90 570 q 169 679 130 647 q 261 729 207 710 q 381 747 315 747 q 523 720 461 747 q 619 638 584 693 q 654 502 654 584 l 654 160 q 660 82 654 123 q 680 11 667 41 l 680 0 l 549 0 q 534 58 539 22 q 528 125 528 94 m 550 445 l 551 357 l 425 357 q 329 348 371 357 q 258 323 287 340 q 215 280 230 306 q 200 221 200 255 q 216 158 200 186 q 263 113 231 130 q 340 96 294 96 q 442 121 398 96 q 512 180 486 145 q 541 249 538 216 l 594 189 q 568 125 589 160 q 512 59 547 91 q 430 7 477 28 q 322 -14 382 -14 q 192 16 248 -14 q 105 94 136 45 q 74 204 74 143 q 97 308 74 263 q 163 384 120 353 q 268 429 207 414 q 404 445 329 445 l 550 445 m 438 981 l 643 816 l 527 816 l 393 923 l 260 816 l 145 816 l 349 981 l 438 981 m 518 1152 l 570 1137 q 556 1086 570 1110 q 517 1046 541 1061 q 462 1031 492 1031 q 408 1043 428 1031 q 369 1067 387 1055 q 323 1080 351 1080 q 285 1064 302 1080 q 267 1029 267 1048 l 215 1042 q 230 1094 215 1069 q 269 1134 244 1118 q 323 1150 294 1150 q 373 1138 352 1150 q 415 1115 394 1126 q 462 1103 435 1103 q 500 1118 483 1103 q 518 1152 518 1133 z "},"Ậ":{"ha":906,"x_min":20,"x_max":888,"o":"m 480 900 l 153 0 l 20 0 l 396 987 l 482 987 l 480 900 m 754 0 l 427 900 l 425 987 l 511 987 l 888 0 l 754 0 m 737 366 l 737 258 l 182 258 l 182 366 l 737 366 m 494 1253 l 662 1067 l 662 1061 l 557 1061 l 456 1175 l 355 1061 l 252 1061 l 252 1068 l 418 1253 l 494 1253 m 387 -167 q 406 -115 387 -136 q 461 -94 425 -94 q 516 -115 497 -94 q 536 -167 536 -136 q 516 -217 536 -196 q 461 -237 497 -237 q 406 -217 425 -237 q 387 -167 387 -196 z "},"ậ":{"ha":755,"x_min":74,"x_max":680,"o":"m 528 125 l 528 503 q 511 579 528 547 q 459 629 494 611 q 374 646 425 646 q 291 630 326 646 q 235 587 255 614 q 215 530 215 561 l 90 530 q 110 608 90 570 q 169 679 130 647 q 261 729 207 710 q 381 747 315 747 q 523 720 461 747 q 619 638 584 693 q 654 502 654 584 l 654 160 q 660 82 654 123 q 680 11 667 41 l 680 0 l 549 0 q 534 58 539 22 q 528 125 528 94 m 550 445 l 551 357 l 425 357 q 329 348 371 357 q 258 323 287 340 q 215 280 230 306 q 200 221 200 255 q 216 158 200 186 q 263 113 231 130 q 340 96 294 96 q 442 121 398 96 q 512 180 486 145 q 541 249 538 216 l 594 189 q 568 125 589 160 q 512 59 547 91 q 430 7 477 28 q 322 -14 382 -14 q 192 16 248 -14 q 105 94 136 45 q 74 204 74 143 q 97 308 74 263 q 163 384 120 353 q 268 429 207 414 q 404 445 329 445 l 550 445 m 433 1042 l 601 857 l 601 850 l 496 850 l 395 964 l 294 850 l 191 850 l 191 857 l 357 1042 l 433 1042 m 262 -167 q 281 -115 262 -136 q 336 -94 300 -94 q 392 -115 372 -94 q 411 -167 411 -136 q 392 -217 411 -196 q 336 -237 372 -237 q 281 -217 300 -237 q 262 -167 262 -196 z "},"Ắ":{"ha":906,"x_min":20,"x_max":888,"o":"m 480 900 l 153 0 l 20 0 l 396 987 l 482 987 l 480 900 m 754 0 l 427 900 l 425 987 l 511 987 l 888 0 l 754 0 m 737 366 l 737 258 l 182 258 l 182 366 l 737 366 m 554 1192 l 658 1192 q 633 1118 658 1150 q 562 1068 608 1086 q 453 1050 516 1050 q 343 1068 389 1050 q 272 1118 297 1086 q 247 1192 247 1150 l 350 1192 q 373 1137 350 1160 q 453 1114 396 1114 q 531 1137 507 1114 q 554 1192 554 1160 m 413 1205 l 490 1340 l 593 1340 l 482 1205 l 413 1205 z "},"ắ":{"ha":755,"x_min":74,"x_max":680,"o":"m 528 125 l 528 503 q 511 579 528 547 q 459 629 494 611 q 374 646 425 646 q 291 630 326 646 q 235 587 255 614 q 215 530 215 561 l 90 530 q 110 608 90 570 q 169 679 130 647 q 261 729 207 710 q 381 747 315 747 q 523 720 461 747 q 619 638 584 693 q 654 502 654 584 l 654 160 q 660 82 654 123 q 680 11 667 41 l 680 0 l 549 0 q 534 58 539 22 q 528 125 528 94 m 550 445 l 551 357 l 425 357 q 329 348 371 357 q 258 323 287 340 q 215 280 230 306 q 200 221 200 255 q 216 158 200 186 q 263 113 231 130 q 340 96 294 96 q 442 121 398 96 q 512 180 486 145 q 541 249 538 216 l 594 189 q 568 125 589 160 q 512 59 547 91 q 430 7 477 28 q 322 -14 382 -14 q 192 16 248 -14 q 105 94 136 45 q 74 204 74 143 q 97 308 74 263 q 163 384 120 353 q 268 429 207 414 q 404 445 329 445 l 550 445 m 493 981 l 597 981 q 572 907 597 939 q 501 857 547 876 q 392 839 455 839 q 282 857 328 839 q 211 907 236 876 q 186 981 186 939 l 289 981 q 312 926 289 949 q 392 903 335 903 q 470 926 446 903 q 493 981 493 949 m 352 994 l 429 1129 l 532 1129 l 421 994 l 352 994 z "},"Ằ":{"ha":906,"x_min":20,"x_max":888,"o":"m 480 900 l 153 0 l 20 0 l 396 987 l 482 987 l 480 900 m 754 0 l 427 900 l 425 987 l 511 987 l 888 0 l 754 0 m 737 366 l 737 258 l 182 258 l 182 366 l 737 366 m 554 1192 l 658 1192 q 633 1118 658 1150 q 562 1068 608 1086 q 453 1050 516 1050 q 343 1068 389 1050 q 272 1118 297 1086 q 247 1192 247 1150 l 350 1192 q 373 1137 350 1160 q 453 1114 396 1114 q 531 1137 507 1114 q 554 1192 554 1160 m 431 1205 l 320 1340 l 424 1340 l 500 1205 l 431 1205 z "},"ằ":{"ha":755,"x_min":74,"x_max":680,"o":"m 528 125 l 528 503 q 511 579 528 547 q 459 629 494 611 q 374 646 425 646 q 291 630 326 646 q 235 587 255 614 q 215 530 215 561 l 90 530 q 110 608 90 570 q 169 679 130 647 q 261 729 207 710 q 381 747 315 747 q 523 720 461 747 q 619 638 584 693 q 654 502 654 584 l 654 160 q 660 82 654 123 q 680 11 667 41 l 680 0 l 549 0 q 534 58 539 22 q 528 125 528 94 m 550 445 l 551 357 l 425 357 q 329 348 371 357 q 258 323 287 340 q 215 280 230 306 q 200 221 200 255 q 216 158 200 186 q 263 113 231 130 q 340 96 294 96 q 442 121 398 96 q 512 180 486 145 q 541 249 538 216 l 594 189 q 568 125 589 160 q 512 59 547 91 q 430 7 477 28 q 322 -14 382 -14 q 192 16 248 -14 q 105 94 136 45 q 74 204 74 143 q 97 308 74 263 q 163 384 120 353 q 268 429 207 414 q 404 445 329 445 l 550 445 m 493 981 l 597 981 q 572 907 597 939 q 501 857 547 876 q 392 839 455 839 q 282 857 328 839 q 211 907 236 876 q 186 981 186 939 l 289 981 q 312 926 289 949 q 392 903 335 903 q 470 926 446 903 q 493 981 493 949 m 370 994 l 259 1129 l 363 1129 l 439 994 l 370 994 z "},"Ẳ":{"ha":906,"x_min":20,"x_max":888,"o":"m 480 900 l 153 0 l 20 0 l 396 987 l 482 987 l 480 900 m 754 0 l 427 900 l 425 987 l 511 987 l 888 0 l 754 0 m 737 366 l 737 258 l 182 258 l 182 366 l 737 366 m 547 1203 l 646 1203 q 622 1130 646 1162 q 554 1080 598 1098 q 448 1062 510 1062 q 342 1080 387 1062 q 274 1130 298 1098 q 250 1203 250 1162 l 349 1203 q 372 1148 349 1172 q 448 1125 395 1125 q 524 1148 501 1125 q 547 1203 547 1172 m 497 1215 l 410 1215 l 410 1299 q 464 1305 443 1301 q 494 1317 484 1309 q 505 1338 505 1324 q 496 1357 505 1349 q 473 1369 488 1364 q 438 1376 458 1374 q 395 1378 418 1378 l 400 1434 q 486 1427 449 1434 q 548 1407 524 1419 q 586 1376 573 1394 q 599 1336 599 1358 q 584 1293 599 1310 q 547 1269 570 1277 q 498 1257 524 1261 l 497 1215 z "},"ẳ":{"ha":755,"x_min":74,"x_max":680,"o":"m 528 125 l 528 503 q 511 579 528 547 q 459 629 494 611 q 374 646 425 646 q 291 630 326 646 q 235 587 255 614 q 215 530 215 561 l 90 530 q 110 608 90 570 q 169 679 130 647 q 261 729 207 710 q 381 747 315 747 q 523 720 461 747 q 619 638 584 693 q 654 502 654 584 l 654 160 q 660 82 654 123 q 680 11 667 41 l 680 0 l 549 0 q 534 58 539 22 q 528 125 528 94 m 550 445 l 551 357 l 425 357 q 329 348 371 357 q 258 323 287 340 q 215 280 230 306 q 200 221 200 255 q 216 158 200 186 q 263 113 231 130 q 340 96 294 96 q 442 121 398 96 q 512 180 486 145 q 541 249 538 216 l 594 189 q 568 125 589 160 q 512 59 547 91 q 430 7 477 28 q 322 -14 382 -14 q 192 16 248 -14 q 105 94 136 45 q 74 204 74 143 q 97 308 74 263 q 163 384 120 353 q 268 429 207 414 q 404 445 329 445 l 550 445 m 486 992 l 585 992 q 561 919 585 951 q 493 869 537 887 q 387 851 449 851 q 281 869 326 851 q 213 919 237 887 q 189 992 189 951 l 288 992 q 311 938 288 961 q 387 914 334 914 q 463 938 440 914 q 486 992 486 961 m 436 1004 l 349 1004 l 349 1088 q 402 1094 382 1090 q 433 1106 423 1098 q 444 1127 444 1114 q 435 1146 444 1138 q 412 1158 427 1154 q 377 1165 397 1163 q 334 1167 357 1167 l 339 1223 q 425 1216 388 1223 q 487 1196 463 1208 q 525 1165 512 1183 q 538 1125 538 1147 q 523 1082 538 1099 q 486 1058 509 1066 q 437 1046 463 1050 l 436 1004 z "},"Ẵ":{"ha":906,"x_min":20,"x_max":888,"o":"m 480 900 l 153 0 l 20 0 l 396 987 l 482 987 l 480 900 m 754 0 l 427 900 l 425 987 l 511 987 l 888 0 l 754 0 m 737 366 l 737 258 l 182 258 l 182 366 l 737 366 m 550 1207 l 652 1207 q 627 1132 652 1165 q 558 1081 603 1099 q 451 1063 513 1063 q 345 1081 389 1063 q 275 1132 300 1099 q 251 1207 251 1165 l 352 1207 q 374 1152 352 1176 q 451 1127 397 1127 q 528 1152 505 1127 q 550 1207 550 1176 m 589 1404 l 646 1388 q 631 1327 646 1355 q 591 1283 616 1299 q 533 1266 566 1266 q 474 1279 496 1266 q 433 1305 452 1292 q 383 1318 413 1318 q 344 1300 360 1318 q 328 1257 328 1283 l 271 1272 q 285 1332 271 1304 q 325 1378 299 1360 q 383 1395 350 1395 q 437 1382 414 1395 q 482 1357 460 1369 q 533 1344 504 1344 q 572 1361 555 1344 q 589 1404 589 1379 z "},"ẵ":{"ha":755,"x_min":74,"x_max":680,"o":"m 528 125 l 528 503 q 511 579 528 547 q 459 629 494 611 q 374 646 425 646 q 291 630 326 646 q 235 587 255 614 q 215 530 215 561 l 90 530 q 110 608 90 570 q 169 679 130 647 q 261 729 207 710 q 381 747 315 747 q 523 720 461 747 q 619 638 584 693 q 654 502 654 584 l 654 160 q 660 82 654 123 q 680 11 667 41 l 680 0 l 549 0 q 534 58 539 22 q 528 125 528 94 m 550 445 l 551 357 l 425 357 q 329 348 371 357 q 258 323 287 340 q 215 280 230 306 q 200 221 200 255 q 216 158 200 186 q 263 113 231 130 q 340 96 294 96 q 442 121 398 96 q 512 180 486 145 q 541 249 538 216 l 594 189 q 568 125 589 160 q 512 59 547 91 q 430 7 477 28 q 322 -14 382 -14 q 192 16 248 -14 q 105 94 136 45 q 74 204 74 143 q 97 308 74 263 q 163 384 120 353 q 268 429 207 414 q 404 445 329 445 l 550 445 m 489 996 l 591 996 q 566 921 591 954 q 497 870 542 888 q 390 852 452 852 q 283 870 328 852 q 214 921 239 888 q 190 996 190 954 l 291 996 q 313 941 291 965 q 390 916 336 916 q 467 941 444 916 q 489 996 489 965 m 528 1193 l 585 1177 q 570 1116 585 1144 q 530 1072 555 1088 q 472 1055 505 1055 q 413 1068 435 1055 q 372 1094 391 1081 q 322 1107 352 1107 q 283 1089 299 1107 q 267 1046 267 1072 l 210 1061 q 224 1121 210 1093 q 263 1167 238 1149 q 322 1184 289 1184 q 376 1171 353 1184 q 421 1146 399 1158 q 472 1133 443 1133 q 511 1151 494 1133 q 528 1193 528 1168 z "},"Ặ":{"ha":906,"x_min":20,"x_max":888,"o":"m 480 900 l 153 0 l 20 0 l 396 987 l 482 987 l 480 900 m 754 0 l 427 900 l 425 987 l 511 987 l 888 0 l 754 0 m 737 366 l 737 258 l 182 258 l 182 366 l 737 366 m 557 1225 l 659 1225 q 634 1131 659 1172 q 564 1067 610 1090 q 456 1044 519 1044 q 308 1094 362 1044 q 253 1225 253 1145 l 355 1225 q 378 1154 355 1185 q 456 1124 401 1124 q 534 1154 511 1124 q 557 1225 557 1185 m 387 -167 q 406 -115 387 -136 q 461 -94 425 -94 q 516 -115 497 -94 q 536 -167 536 -136 q 516 -217 536 -196 q 461 -237 497 -237 q 406 -217 425 -237 q 387 -167 387 -196 z "},"ặ":{"ha":755,"x_min":74,"x_max":680,"o":"m 528 125 l 528 503 q 511 579 528 547 q 459 629 494 611 q 374 646 425 646 q 291 630 326 646 q 235 587 255 614 q 215 530 215 561 l 90 530 q 110 608 90 570 q 169 679 130 647 q 261 729 207 710 q 381 747 315 747 q 523 720 461 747 q 619 638 584 693 q 654 502 654 584 l 654 160 q 660 82 654 123 q 680 11 667 41 l 680 0 l 549 0 q 534 58 539 22 q 528 125 528 94 m 550 445 l 551 357 l 425 357 q 329 348 371 357 q 258 323 287 340 q 215 280 230 306 q 200 221 200 255 q 216 158 200 186 q 263 113 231 130 q 340 96 294 96 q 442 121 398 96 q 512 180 486 145 q 541 249 538 216 l 594 189 q 568 125 589 160 q 512 59 547 91 q 430 7 477 28 q 322 -14 382 -14 q 192 16 248 -14 q 105 94 136 45 q 74 204 74 143 q 97 308 74 263 q 163 384 120 353 q 268 429 207 414 q 404 445 329 445 l 550 445 m 496 1014 l 597 1014 q 573 920 597 961 q 503 856 549 879 q 395 833 458 833 q 247 883 301 833 q 192 1014 192 934 l 294 1014 q 317 943 294 974 q 395 913 340 913 q 473 943 450 913 q 496 1014 496 974 m 262 -167 q 281 -115 262 -136 q 336 -94 300 -94 q 392 -115 372 -94 q 411 -167 411 -136 q 392 -217 411 -196 q 336 -237 372 -237 q 281 -217 300 -237 q 262 -167 262 -196 z "},"Ẹ":{"ha":789,"x_min":115,"x_max":742,"o":"m 742 106 l 742 0 l 219 0 l 219 106 l 742 106 m 245 987 l 245 0 l 115 0 l 115 987 l 245 987 m 673 563 l 673 456 l 219 456 l 219 563 l 673 563 m 735 987 l 735 880 l 219 880 l 219 987 l 735 987 m 342 -160 q 360 -109 342 -130 q 416 -87 379 -87 q 471 -109 452 -87 q 490 -160 490 -130 q 471 -210 490 -189 q 416 -231 452 -231 q 360 -210 379 -231 q 342 -160 342 -189 z "},"ẹ":{"ha":736,"x_min":63,"x_max":686,"o":"m 400 -14 q 261 13 323 -14 q 155 86 199 39 q 87 199 111 134 q 63 341 63 264 l 63 370 q 90 529 63 459 q 161 648 116 600 q 264 722 207 697 q 384 747 322 747 q 520 720 463 747 q 614 645 577 693 q 668 531 650 596 q 686 388 686 465 l 686 332 l 138 332 l 138 434 l 560 434 l 560 444 q 540 538 557 492 q 486 614 523 585 q 384 644 448 644 q 305 626 341 644 q 243 573 269 608 q 203 487 218 538 q 189 370 189 436 l 189 341 q 204 243 189 289 q 247 163 218 197 q 315 109 275 128 q 407 89 355 89 q 519 116 473 89 q 600 189 566 143 l 676 128 q 616 60 652 92 q 526 7 579 27 q 400 -14 473 -14 m 307 -167 q 326 -115 307 -136 q 381 -94 345 -94 q 436 -115 417 -94 q 456 -167 456 -136 q 436 -217 456 -196 q 381 -237 417 -237 q 326 -217 345 -237 q 307 -167 307 -196 z "},"Ẻ":{"ha":789,"x_min":115,"x_max":742,"o":"m 742 106 l 742 0 l 219 0 l 219 106 l 742 106 m 245 987 l 245 0 l 115 0 l 115 987 l 245 987 m 673 563 l 673 456 l 219 456 l 219 563 l 673 563 m 735 987 l 735 880 l 219 880 l 219 987 l 735 987 m 467 1072 l 377 1072 l 376 1175 q 433 1182 411 1177 q 465 1197 454 1187 q 475 1225 475 1208 q 466 1250 475 1240 q 441 1266 457 1259 q 406 1275 426 1272 q 362 1278 385 1278 l 367 1350 q 455 1341 417 1350 q 520 1315 494 1332 q 559 1275 546 1298 q 572 1223 572 1251 q 540 1148 572 1171 q 468 1119 507 1124 l 467 1072 z "},"ẻ":{"ha":736,"x_min":63,"x_max":686,"o":"m 400 -14 q 261 13 323 -14 q 155 86 199 39 q 87 199 111 134 q 63 341 63 264 l 63 370 q 90 529 63 459 q 161 648 116 600 q 264 722 207 697 q 384 747 322 747 q 520 720 463 747 q 614 645 577 693 q 668 531 650 596 q 686 388 686 465 l 686 332 l 138 332 l 138 434 l 560 434 l 560 444 q 540 538 557 492 q 486 614 523 585 q 384 644 448 644 q 305 626 341 644 q 243 573 269 608 q 203 487 218 538 q 189 370 189 436 l 189 341 q 204 243 189 289 q 247 163 218 197 q 315 109 275 128 q 407 89 355 89 q 519 116 473 89 q 600 189 566 143 l 676 128 q 616 60 652 92 q 526 7 579 27 q 400 -14 473 -14 m 431 853 l 340 853 l 340 956 q 396 963 374 958 q 428 979 418 968 q 438 1007 438 989 q 429 1031 438 1021 q 405 1047 420 1041 q 369 1057 389 1054 q 326 1059 349 1059 l 330 1131 q 419 1122 380 1131 q 483 1097 457 1114 q 523 1056 509 1080 q 536 1004 536 1033 q 503 929 536 953 q 431 901 471 906 l 431 853 z "},"Ẽ":{"ha":789,"x_min":115,"x_max":742,"o":"m 742 106 l 742 0 l 219 0 l 219 106 l 742 106 m 245 987 l 245 0 l 115 0 l 115 987 l 245 987 m 673 563 l 673 456 l 219 456 l 219 563 l 673 563 m 735 987 l 735 880 l 219 880 l 219 987 l 735 987 m 576 1246 l 661 1239 q 641 1152 661 1190 q 588 1095 621 1115 q 514 1074 555 1074 q 457 1084 479 1074 q 417 1106 435 1094 q 380 1129 399 1119 q 332 1139 361 1139 q 284 1117 304 1139 q 265 1063 265 1095 l 180 1067 q 200 1155 180 1117 q 252 1214 219 1192 q 326 1235 286 1235 q 377 1225 355 1235 q 419 1203 399 1215 q 460 1180 439 1190 q 508 1171 481 1171 q 556 1193 536 1171 q 576 1246 576 1215 z "},"ẽ":{"ha":736,"x_min":63,"x_max":686,"o":"m 400 -14 q 261 13 323 -14 q 155 86 199 39 q 87 199 111 134 q 63 341 63 264 l 63 370 q 90 529 63 459 q 161 648 116 600 q 264 722 207 697 q 384 747 322 747 q 520 720 463 747 q 614 645 577 693 q 668 531 650 596 q 686 388 686 465 l 686 332 l 138 332 l 138 434 l 560 434 l 560 444 q 540 538 557 492 q 486 614 523 585 q 384 644 448 644 q 305 626 341 644 q 243 573 269 608 q 203 487 218 538 q 189 370 189 436 l 189 341 q 204 243 189 289 q 247 163 218 197 q 315 109 275 128 q 407 89 355 89 q 519 116 473 89 q 600 189 566 143 l 676 128 q 616 60 652 92 q 526 7 579 27 q 400 -14 473 -14 m 539 1028 l 624 1021 q 604 934 624 971 q 552 876 585 897 q 477 856 519 856 q 420 866 443 856 q 380 888 398 876 q 343 910 363 901 q 296 920 324 920 q 248 899 267 920 q 229 845 229 877 l 144 849 q 163 936 144 899 q 216 995 182 974 q 290 1017 249 1017 q 341 1007 319 1017 q 382 984 363 997 q 423 962 402 972 q 471 952 444 952 q 519 974 500 952 q 539 1028 539 996 z "},"Ế":{"ha":789,"x_min":115,"x_max":850,"o":"m 742 106 l 742 0 l 219 0 l 219 106 l 742 106 m 245 987 l 245 0 l 115 0 l 115 987 l 245 987 m 673 563 l 673 456 l 219 456 l 219 563 l 673 563 m 735 987 l 735 880 l 219 880 l 219 987 l 735 987 m 171 1061 l 368 1238 l 471 1238 l 669 1061 l 535 1061 l 420 1168 l 304 1061 l 171 1061 m 618 1181 l 714 1356 l 850 1356 l 713 1181 l 618 1181 z "},"ế":{"ha":736,"x_min":63,"x_max":813,"o":"m 400 -14 q 261 13 323 -14 q 155 86 199 39 q 87 199 111 134 q 63 341 63 264 l 63 370 q 90 529 63 459 q 161 648 116 600 q 264 722 207 697 q 384 747 322 747 q 520 720 463 747 q 614 645 577 693 q 668 531 650 596 q 686 388 686 465 l 686 332 l 138 332 l 138 434 l 560 434 l 560 444 q 540 538 557 492 q 486 614 523 585 q 384 644 448 644 q 305 626 341 644 q 243 573 269 608 q 203 487 218 538 q 189 370 189 436 l 189 341 q 204 243 189 289 q 247 163 218 197 q 315 109 275 128 q 407 89 355 89 q 519 116 473 89 q 600 189 566 143 l 676 128 q 616 60 652 92 q 526 7 579 27 q 400 -14 473 -14 m 134 842 l 332 1020 l 435 1020 l 632 842 l 498 842 l 383 949 l 268 842 l 134 842 m 582 962 l 677 1137 l 813 1137 l 677 962 l 582 962 z "},"Ề":{"ha":789,"x_min":-12,"x_max":742,"o":"m 742 106 l 742 0 l 219 0 l 219 106 l 742 106 m 245 987 l 245 0 l 115 0 l 115 987 l 245 987 m 673 563 l 673 456 l 219 456 l 219 563 l 673 563 m 735 987 l 735 880 l 219 880 l 219 987 l 735 987 m 469 1236 l 667 1057 l 533 1057 l 418 1165 l 303 1057 l 170 1057 l 366 1236 l 469 1236 m 123 1353 l 220 1178 l 124 1178 l -12 1353 l 123 1353 z "},"ề":{"ha":736,"x_min":-49,"x_max":686,"o":"m 400 -14 q 261 13 323 -14 q 155 86 199 39 q 87 199 111 134 q 63 341 63 264 l 63 370 q 90 529 63 459 q 161 648 116 600 q 264 722 207 697 q 384 747 322 747 q 520 720 463 747 q 614 645 577 693 q 668 531 650 596 q 686 388 686 465 l 686 332 l 138 332 l 138 434 l 560 434 l 560 444 q 540 538 557 492 q 486 614 523 585 q 384 644 448 644 q 305 626 341 644 q 243 573 269 608 q 203 487 218 538 q 189 370 189 436 l 189 341 q 204 243 189 289 q 247 163 218 197 q 315 109 275 128 q 407 89 355 89 q 519 116 473 89 q 600 189 566 143 l 676 128 q 616 60 652 92 q 526 7 579 27 q 400 -14 473 -14 m 433 1017 l 631 839 l 496 839 l 381 947 l 267 839 l 133 839 l 330 1017 l 433 1017 m 87 1135 l 183 960 l 87 960 l -49 1135 l 87 1135 z "},"Ể":{"ha":789,"x_min":115,"x_max":781,"o":"m 742 106 l 742 0 l 219 0 l 219 106 l 742 106 m 245 987 l 245 0 l 115 0 l 115 987 l 245 987 m 673 563 l 673 456 l 219 456 l 219 563 l 673 563 m 735 987 l 735 880 l 219 880 l 219 987 l 735 987 m 482 1227 l 668 1049 l 552 1049 l 418 1175 l 286 1049 l 170 1049 l 355 1227 l 482 1227 m 689 1143 l 611 1143 l 610 1232 q 659 1238 640 1234 q 686 1251 677 1242 q 694 1274 694 1259 q 682 1301 694 1291 q 647 1315 669 1311 q 599 1320 625 1320 l 603 1383 q 679 1375 646 1383 q 735 1353 712 1367 q 769 1318 758 1338 q 781 1273 781 1298 q 752 1209 781 1229 q 690 1184 724 1189 l 689 1143 z "},"ể":{"ha":736,"x_min":63,"x_max":744,"o":"m 400 -14 q 261 13 323 -14 q 155 86 199 39 q 87 199 111 134 q 63 341 63 264 l 63 370 q 90 529 63 459 q 161 648 116 600 q 264 722 207 697 q 384 747 322 747 q 520 720 463 747 q 614 645 577 693 q 668 531 650 596 q 686 388 686 465 l 686 332 l 138 332 l 138 434 l 560 434 l 560 444 q 540 538 557 492 q 486 614 523 585 q 384 644 448 644 q 305 626 341 644 q 243 573 269 608 q 203 487 218 538 q 189 370 189 436 l 189 341 q 204 243 189 289 q 247 163 218 197 q 315 109 275 128 q 407 89 355 89 q 519 116 473 89 q 600 189 566 143 l 676 128 q 616 60 652 92 q 526 7 579 27 q 400 -14 473 -14 m 446 1009 l 631 831 l 515 831 l 382 957 l 249 831 l 134 831 l 318 1009 l 446 1009 m 652 924 l 574 924 l 574 1014 q 622 1020 604 1016 q 649 1033 640 1024 q 658 1056 658 1041 q 645 1083 658 1073 q 610 1097 632 1093 q 562 1101 589 1101 l 566 1164 q 643 1157 610 1164 q 698 1134 675 1149 q 732 1100 721 1120 q 744 1055 744 1080 q 716 990 744 1010 q 653 966 688 970 l 652 924 z "},"Ễ":{"ha":789,"x_min":115,"x_max":742,"o":"m 742 106 l 742 0 l 219 0 l 219 106 l 742 106 m 245 987 l 245 0 l 115 0 l 115 987 l 245 987 m 673 563 l 673 456 l 219 456 l 219 563 l 673 563 m 735 987 l 735 880 l 219 880 l 219 987 l 735 987 m 463 1200 l 668 1034 l 552 1034 l 418 1141 l 286 1034 l 170 1034 l 374 1200 l 463 1200 m 543 1371 l 595 1356 q 581 1304 595 1329 q 542 1264 566 1280 q 487 1249 517 1249 q 433 1261 453 1249 q 394 1286 412 1274 q 349 1298 376 1298 q 310 1282 328 1298 q 292 1247 292 1266 l 240 1260 q 255 1312 240 1287 q 294 1353 269 1337 q 349 1369 319 1369 q 398 1357 377 1369 q 440 1333 419 1345 q 487 1321 460 1321 q 526 1336 508 1321 q 543 1371 543 1352 z "},"ễ":{"ha":736,"x_min":63,"x_max":686,"o":"m 400 -14 q 261 13 323 -14 q 155 86 199 39 q 87 199 111 134 q 63 341 63 264 l 63 370 q 90 529 63 459 q 161 648 116 600 q 264 722 207 697 q 384 747 322 747 q 520 720 463 747 q 614 645 577 693 q 668 531 650 596 q 686 388 686 465 l 686 332 l 138 332 l 138 434 l 560 434 l 560 444 q 540 538 557 492 q 486 614 523 585 q 384 644 448 644 q 305 626 341 644 q 243 573 269 608 q 203 487 218 538 q 189 370 189 436 l 189 341 q 204 243 189 289 q 247 163 218 197 q 315 109 275 128 q 407 89 355 89 q 519 116 473 89 q 600 189 566 143 l 676 128 q 616 60 652 92 q 526 7 579 27 q 400 -14 473 -14 m 427 981 l 631 816 l 515 816 l 382 923 l 249 816 l 134 816 l 338 981 l 427 981 m 507 1152 l 559 1137 q 544 1086 559 1110 q 505 1046 530 1061 q 450 1031 481 1031 q 396 1043 416 1031 q 358 1067 376 1055 q 312 1080 340 1080 q 273 1064 291 1080 q 256 1029 256 1048 l 203 1042 q 218 1094 203 1069 q 257 1134 233 1118 q 312 1150 282 1150 q 361 1138 340 1150 q 403 1115 382 1126 q 450 1103 424 1103 q 489 1118 471 1103 q 507 1152 507 1133 z "},"Ệ":{"ha":789,"x_min":115,"x_max":742,"o":"m 742 106 l 742 0 l 219 0 l 219 106 l 742 106 m 245 987 l 245 0 l 115 0 l 115 987 l 245 987 m 673 563 l 673 456 l 219 456 l 219 563 l 673 563 m 735 987 l 735 880 l 219 880 l 219 987 l 735 987 m 458 1260 l 626 1075 l 626 1068 l 522 1068 l 420 1183 l 319 1068 l 216 1068 l 216 1076 l 382 1260 l 458 1260 m 342 -160 q 360 -109 342 -130 q 416 -87 379 -87 q 471 -109 452 -87 q 490 -160 490 -130 q 471 -210 490 -189 q 416 -231 452 -231 q 360 -210 379 -231 q 342 -160 342 -189 z "},"ệ":{"ha":736,"x_min":63,"x_max":686,"o":"m 400 -14 q 261 13 323 -14 q 155 86 199 39 q 87 199 111 134 q 63 341 63 264 l 63 370 q 90 529 63 459 q 161 648 116 600 q 264 722 207 697 q 384 747 322 747 q 520 720 463 747 q 614 645 577 693 q 668 531 650 596 q 686 388 686 465 l 686 332 l 138 332 l 138 434 l 560 434 l 560 444 q 540 538 557 492 q 486 614 523 585 q 384 644 448 644 q 305 626 341 644 q 243 573 269 608 q 203 487 218 538 q 189 370 189 436 l 189 341 q 204 243 189 289 q 247 163 218 197 q 315 109 275 128 q 407 89 355 89 q 519 116 473 89 q 600 189 566 143 l 676 128 q 616 60 652 92 q 526 7 579 27 q 400 -14 473 -14 m 421 1042 l 589 857 l 589 850 l 485 850 l 383 964 l 282 850 l 179 850 l 179 857 l 345 1042 l 421 1042 m 307 -167 q 326 -115 307 -136 q 381 -94 345 -94 q 436 -115 417 -94 q 456 -167 456 -136 q 436 -217 456 -196 q 381 -237 417 -237 q 326 -217 345 -237 q 307 -167 307 -196 z "},"Ỉ":{"ha":378,"x_min":124,"x_max":342,"o":"m 255 987 l 255 0 l 124 0 l 124 987 l 255 987 m 237 1072 l 146 1072 l 146 1175 q 202 1182 180 1177 q 234 1197 224 1187 q 244 1225 244 1208 q 235 1250 244 1240 q 211 1266 227 1259 q 175 1275 195 1272 q 132 1278 155 1278 l 136 1350 q 225 1341 186 1350 q 289 1315 263 1332 q 329 1275 315 1298 q 342 1223 342 1251 q 309 1148 342 1171 q 237 1119 277 1124 l 237 1072 z "},"ỉ":{"ha":344,"x_min":106,"x_max":323,"o":"m 231 734 l 231 0 l 106 0 l 106 734 l 231 734 m 218 852 l 128 852 l 127 955 q 184 962 162 957 q 216 978 205 967 q 226 1006 226 988 q 217 1030 226 1020 q 193 1046 208 1040 q 157 1055 177 1053 q 113 1058 136 1058 l 118 1130 q 207 1121 168 1130 q 271 1095 245 1112 q 310 1055 297 1078 q 323 1003 323 1031 q 291 928 323 951 q 219 899 258 905 l 218 852 z "},"Ị":{"ha":378,"x_min":111,"x_max":260,"o":"m 255 987 l 255 0 l 124 0 l 124 987 l 255 987 m 111 -161 q 130 -109 111 -130 q 185 -88 149 -88 q 240 -109 221 -88 q 260 -161 260 -130 q 240 -211 260 -190 q 185 -231 221 -231 q 130 -211 149 -231 q 111 -161 111 -190 z "},"ị":{"ha":338,"x_min":91,"x_max":245,"o":"m 232 734 l 232 0 l 106 0 l 106 734 l 232 734 m 96 928 q 115 980 96 959 q 170 1001 134 1001 q 225 980 206 1001 q 245 928 245 959 q 225 879 245 899 q 170 858 206 858 q 115 879 134 858 q 96 928 96 899 m 91 -160 q 110 -109 91 -130 q 165 -87 128 -87 q 220 -109 201 -87 q 239 -160 239 -130 q 220 -210 239 -189 q 165 -231 201 -231 q 110 -210 128 -231 q 91 -160 91 -189 z "},"Ọ":{"ha":956,"x_min":81,"x_max":875,"o":"m 875 525 l 875 463 q 847 263 875 351 q 767 113 819 175 q 642 19 715 52 q 479 -14 569 -14 q 318 19 391 -14 q 192 113 245 52 q 110 263 139 175 q 81 463 81 351 l 81 525 q 110 724 81 636 q 191 874 138 812 q 317 968 244 936 q 477 1001 390 1001 q 641 968 568 1001 q 766 874 713 936 q 847 724 819 812 q 875 525 875 636 m 745 463 l 745 526 q 727 682 745 614 q 675 796 709 750 q 590 866 640 842 q 477 890 541 890 q 367 866 416 890 q 283 796 318 842 q 229 682 248 750 q 210 526 210 614 l 210 463 q 229 306 210 374 q 284 191 248 237 q 369 121 319 144 q 479 97 418 97 q 592 121 543 97 q 676 191 642 144 q 728 306 710 237 q 745 463 745 374 m 401 -167 q 420 -115 401 -136 q 475 -94 439 -94 q 531 -115 511 -94 q 550 -167 550 -136 q 531 -217 550 -196 q 475 -237 511 -237 q 420 -217 439 -237 q 401 -167 401 -196 z "},"ọ":{"ha":792,"x_min":62,"x_max":730,"o":"m 62 359 l 62 374 q 85 522 62 454 q 152 641 109 590 q 257 719 195 691 q 395 747 319 747 q 535 719 473 747 q 641 641 597 691 q 707 522 684 590 q 730 374 730 454 l 730 359 q 707 212 730 279 q 641 93 684 144 q 535 15 597 43 q 397 -14 474 -14 q 258 15 319 -14 q 152 93 196 43 q 85 212 109 144 q 62 359 62 279 m 188 374 l 188 359 q 201 255 188 304 q 240 170 214 207 q 305 111 266 132 q 397 90 345 90 q 487 111 448 90 q 552 170 526 132 q 591 255 578 207 q 604 359 604 304 l 604 374 q 591 477 604 429 q 552 563 578 526 q 487 623 526 601 q 395 644 448 644 q 305 623 344 644 q 240 563 266 601 q 201 477 214 526 q 188 374 188 429 m 318 -168 q 337 -116 318 -137 q 392 -95 355 -95 q 447 -116 428 -95 q 467 -168 467 -137 q 447 -217 467 -197 q 392 -238 428 -238 q 337 -217 355 -238 q 318 -168 318 -197 z "},"Ỏ":{"ha":956,"x_min":81,"x_max":875,"o":"m 875 525 l 875 463 q 847 263 875 351 q 767 113 819 175 q 642 19 715 52 q 479 -14 569 -14 q 318 19 391 -14 q 192 113 245 52 q 110 263 139 175 q 81 463 81 351 l 81 525 q 110 724 81 636 q 191 874 138 812 q 317 968 244 936 q 477 1001 390 1001 q 641 968 568 1001 q 766 874 713 936 q 847 724 819 812 q 875 525 875 636 m 745 463 l 745 526 q 727 682 745 614 q 675 796 709 750 q 590 866 640 842 q 477 890 541 890 q 367 866 416 890 q 283 796 318 842 q 229 682 248 750 q 210 526 210 614 l 210 463 q 229 306 210 374 q 284 191 248 237 q 369 121 319 144 q 479 97 418 97 q 592 121 543 97 q 676 191 642 144 q 728 306 710 237 q 745 463 745 374 m 527 1065 l 437 1065 l 436 1168 q 492 1176 471 1171 q 524 1191 514 1181 q 534 1219 534 1202 q 526 1243 534 1234 q 501 1260 517 1253 q 465 1269 486 1266 q 422 1272 445 1272 l 427 1343 q 515 1335 477 1343 q 579 1309 553 1326 q 619 1269 606 1292 q 632 1217 632 1245 q 600 1142 632 1165 q 528 1113 567 1118 l 527 1065 z "},"ỏ":{"ha":792,"x_min":62,"x_max":730,"o":"m 62 359 l 62 374 q 85 522 62 454 q 152 641 109 590 q 257 719 195 691 q 395 747 319 747 q 535 719 473 747 q 641 641 597 691 q 707 522 684 590 q 730 374 730 454 l 730 359 q 707 212 730 279 q 641 93 684 144 q 535 15 597 43 q 397 -14 474 -14 q 258 15 319 -14 q 152 93 196 43 q 85 212 109 144 q 62 359 62 279 m 188 374 l 188 359 q 201 255 188 304 q 240 170 214 207 q 305 111 266 132 q 397 90 345 90 q 487 111 448 90 q 552 170 526 132 q 591 255 578 207 q 604 359 604 304 l 604 374 q 591 477 604 429 q 552 563 578 526 q 487 623 526 601 q 395 644 448 644 q 305 623 344 644 q 240 563 266 601 q 201 477 214 526 q 188 374 188 429 m 437 853 l 347 853 l 347 956 q 403 963 381 958 q 435 979 425 968 q 445 1007 445 989 q 436 1031 445 1021 q 412 1047 427 1041 q 376 1057 396 1054 q 332 1059 355 1059 l 337 1131 q 426 1122 387 1131 q 490 1097 464 1114 q 529 1056 516 1080 q 543 1004 543 1033 q 510 929 543 953 q 438 901 477 906 l 437 853 z "},"Ố":{"ha":956,"x_min":81,"x_max":909,"o":"m 875 525 l 875 463 q 847 263 875 351 q 767 113 819 175 q 642 19 715 52 q 479 -14 569 -14 q 318 19 391 -14 q 192 113 245 52 q 110 263 139 175 q 81 463 81 351 l 81 525 q 110 724 81 636 q 191 874 138 812 q 317 968 244 936 q 477 1001 390 1001 q 641 968 568 1001 q 766 874 713 936 q 847 724 819 812 q 875 525 875 636 m 745 463 l 745 526 q 727 682 745 614 q 675 796 709 750 q 590 866 640 842 q 477 890 541 890 q 367 866 416 890 q 283 796 318 842 q 229 682 248 750 q 210 526 210 614 l 210 463 q 229 306 210 374 q 284 191 248 237 q 369 121 319 144 q 479 97 418 97 q 592 121 543 97 q 676 191 642 144 q 728 306 710 237 q 745 463 745 374 m 231 1055 l 428 1232 l 531 1232 l 728 1055 l 595 1055 l 479 1162 l 364 1055 l 231 1055 m 678 1175 l 774 1350 l 909 1350 l 773 1175 l 678 1175 z "},"ố":{"ha":792,"x_min":62,"x_max":820,"o":"m 62 359 l 62 374 q 85 522 62 454 q 152 641 109 590 q 257 719 195 691 q 395 747 319 747 q 535 719 473 747 q 641 641 597 691 q 707 522 684 590 q 730 374 730 454 l 730 359 q 707 212 730 279 q 641 93 684 144 q 535 15 597 43 q 397 -14 474 -14 q 258 15 319 -14 q 152 93 196 43 q 85 212 109 144 q 62 359 62 279 m 188 374 l 188 359 q 201 255 188 304 q 240 170 214 207 q 305 111 266 132 q 397 90 345 90 q 487 111 448 90 q 552 170 526 132 q 591 255 578 207 q 604 359 604 304 l 604 374 q 591 477 604 429 q 552 563 578 526 q 487 623 526 601 q 395 644 448 644 q 305 623 344 644 q 240 563 266 601 q 201 477 214 526 q 188 374 188 429 m 141 842 l 338 1020 l 441 1020 l 639 842 l 505 842 l 390 949 l 275 842 l 141 842 m 589 962 l 684 1137 l 820 1137 l 684 962 l 589 962 z "},"Ồ":{"ha":956,"x_min":47,"x_max":875,"o":"m 875 525 l 875 463 q 847 263 875 351 q 767 113 819 175 q 642 19 715 52 q 479 -14 569 -14 q 318 19 391 -14 q 192 113 245 52 q 110 263 139 175 q 81 463 81 351 l 81 525 q 110 724 81 636 q 191 874 138 812 q 317 968 244 936 q 477 1001 390 1001 q 641 968 568 1001 q 766 874 713 936 q 847 724 819 812 q 875 525 875 636 m 745 463 l 745 526 q 727 682 745 614 q 675 796 709 750 q 590 866 640 842 q 477 890 541 890 q 367 866 416 890 q 283 796 318 842 q 229 682 248 750 q 210 526 210 614 l 210 463 q 229 306 210 374 q 284 191 248 237 q 369 121 319 144 q 479 97 418 97 q 592 121 543 97 q 676 191 642 144 q 728 306 710 237 q 745 463 745 374 m 529 1230 l 727 1051 l 593 1051 l 477 1159 l 363 1051 l 229 1051 l 426 1230 l 529 1230 m 183 1347 l 279 1172 l 184 1172 l 47 1347 l 183 1347 z "},"ồ":{"ha":792,"x_min":-42,"x_max":730,"o":"m 62 359 l 62 374 q 85 522 62 454 q 152 641 109 590 q 257 719 195 691 q 395 747 319 747 q 535 719 473 747 q 641 641 597 691 q 707 522 684 590 q 730 374 730 454 l 730 359 q 707 212 730 279 q 641 93 684 144 q 535 15 597 43 q 397 -14 474 -14 q 258 15 319 -14 q 152 93 196 43 q 85 212 109 144 q 62 359 62 279 m 188 374 l 188 359 q 201 255 188 304 q 240 170 214 207 q 305 111 266 132 q 397 90 345 90 q 487 111 448 90 q 552 170 526 132 q 591 255 578 207 q 604 359 604 304 l 604 374 q 591 477 604 429 q 552 563 578 526 q 487 623 526 601 q 395 644 448 644 q 305 623 344 644 q 240 563 266 601 q 201 477 214 526 q 188 374 188 429 m 439 1017 l 637 839 l 503 839 l 388 947 l 273 839 l 140 839 l 336 1017 l 439 1017 m 94 1135 l 190 960 l 94 960 l -42 1135 l 94 1135 z "},"Ổ":{"ha":956,"x_min":81,"x_max":875,"o":"m 875 525 l 875 463 q 847 263 875 351 q 767 113 819 175 q 642 19 715 52 q 479 -14 569 -14 q 318 19 391 -14 q 192 113 245 52 q 110 263 139 175 q 81 463 81 351 l 81 525 q 110 724 81 636 q 191 874 138 812 q 317 968 244 936 q 477 1001 390 1001 q 641 968 568 1001 q 766 874 713 936 q 847 724 819 812 q 875 525 875 636 m 745 463 l 745 526 q 727 682 745 614 q 675 796 709 750 q 590 866 640 842 q 477 890 541 890 q 367 866 416 890 q 283 796 318 842 q 229 682 248 750 q 210 526 210 614 l 210 463 q 229 306 210 374 q 284 191 248 237 q 369 121 319 144 q 479 97 418 97 q 592 121 543 97 q 676 191 642 144 q 728 306 710 237 q 745 463 745 374 m 542 1221 l 728 1043 l 612 1043 l 478 1169 l 345 1043 l 230 1043 l 414 1221 l 542 1221 m 749 1137 l 671 1137 l 670 1226 q 718 1232 700 1228 q 745 1245 736 1236 q 754 1268 754 1253 q 741 1295 754 1285 q 707 1309 728 1305 q 659 1314 685 1314 l 663 1377 q 739 1369 706 1377 q 794 1347 772 1361 q 829 1312 817 1332 q 840 1267 840 1292 q 812 1203 840 1223 q 749 1178 784 1183 l 749 1137 z "},"ổ":{"ha":792,"x_min":62,"x_max":751,"o":"m 62 359 l 62 374 q 85 522 62 454 q 152 641 109 590 q 257 719 195 691 q 395 747 319 747 q 535 719 473 747 q 641 641 597 691 q 707 522 684 590 q 730 374 730 454 l 730 359 q 707 212 730 279 q 641 93 684 144 q 535 15 597 43 q 397 -14 474 -14 q 258 15 319 -14 q 152 93 196 43 q 85 212 109 144 q 62 359 62 279 m 188 374 l 188 359 q 201 255 188 304 q 240 170 214 207 q 305 111 266 132 q 397 90 345 90 q 487 111 448 90 q 552 170 526 132 q 591 255 578 207 q 604 359 604 304 l 604 374 q 591 477 604 429 q 552 563 578 526 q 487 623 526 601 q 395 644 448 644 q 305 623 344 644 q 240 563 266 601 q 201 477 214 526 q 188 374 188 429 m 452 1009 l 638 831 l 522 831 l 389 957 l 256 831 l 140 831 l 325 1009 l 452 1009 m 659 924 l 581 924 l 581 1014 q 629 1020 610 1016 q 656 1033 647 1024 q 665 1056 665 1041 q 652 1083 665 1073 q 617 1097 639 1093 q 569 1101 595 1101 l 573 1164 q 649 1157 616 1164 q 705 1134 682 1149 q 739 1100 728 1120 q 751 1055 751 1080 q 723 990 751 1010 q 660 966 694 970 l 659 924 z "},"Ỗ":{"ha":956,"x_min":81,"x_max":875,"o":"m 875 525 l 875 463 q 847 263 875 351 q 767 113 819 175 q 642 19 715 52 q 479 -14 569 -14 q 318 19 391 -14 q 192 113 245 52 q 110 263 139 175 q 81 463 81 351 l 81 525 q 110 724 81 636 q 191 874 138 812 q 317 968 244 936 q 477 1001 390 1001 q 641 968 568 1001 q 766 874 713 936 q 847 724 819 812 q 875 525 875 636 m 745 463 l 745 526 q 727 682 745 614 q 675 796 709 750 q 590 866 640 842 q 477 890 541 890 q 367 866 416 890 q 283 796 318 842 q 229 682 248 750 q 210 526 210 614 l 210 463 q 229 306 210 374 q 284 191 248 237 q 369 121 319 144 q 479 97 418 97 q 592 121 543 97 q 676 191 642 144 q 728 306 710 237 q 745 463 745 374 m 523 1194 l 728 1028 l 612 1028 l 478 1135 l 345 1028 l 230 1028 l 434 1194 l 523 1194 m 603 1364 l 655 1350 q 641 1298 655 1322 q 602 1258 626 1274 q 547 1243 577 1243 q 492 1255 513 1243 q 454 1280 472 1267 q 408 1292 436 1292 q 370 1276 387 1292 q 352 1241 352 1260 l 300 1254 q 314 1306 300 1281 q 354 1347 329 1331 q 408 1362 378 1362 q 458 1351 437 1362 q 499 1327 479 1339 q 547 1315 520 1315 q 585 1330 568 1315 q 603 1364 603 1345 z "},"ỗ":{"ha":792,"x_min":62,"x_max":730,"o":"m 62 359 l 62 374 q 85 522 62 454 q 152 641 109 590 q 257 719 195 691 q 395 747 319 747 q 535 719 473 747 q 641 641 597 691 q 707 522 684 590 q 730 374 730 454 l 730 359 q 707 212 730 279 q 641 93 684 144 q 535 15 597 43 q 397 -14 474 -14 q 258 15 319 -14 q 152 93 196 43 q 85 212 109 144 q 62 359 62 279 m 188 374 l 188 359 q 201 255 188 304 q 240 170 214 207 q 305 111 266 132 q 397 90 345 90 q 487 111 448 90 q 552 170 526 132 q 591 255 578 207 q 604 359 604 304 l 604 374 q 591 477 604 429 q 552 563 578 526 q 487 623 526 601 q 395 644 448 644 q 305 623 344 644 q 240 563 266 601 q 201 477 214 526 q 188 374 188 429 m 433 981 l 638 816 l 522 816 l 389 923 l 256 816 l 140 816 l 345 981 l 433 981 m 513 1152 l 566 1137 q 551 1086 566 1110 q 512 1046 536 1061 q 457 1031 488 1031 q 403 1043 423 1031 q 365 1067 382 1055 q 319 1080 347 1080 q 280 1064 298 1080 q 262 1029 262 1048 l 210 1042 q 225 1094 210 1069 q 264 1134 239 1118 q 319 1150 289 1150 q 368 1138 347 1150 q 410 1115 389 1126 q 457 1103 431 1103 q 496 1118 478 1103 q 513 1152 513 1133 z "},"Ộ":{"ha":956,"x_min":81,"x_max":875,"o":"m 875 525 l 875 463 q 847 263 875 351 q 767 113 819 175 q 642 19 715 52 q 479 -14 569 -14 q 318 19 391 -14 q 192 113 245 52 q 110 263 139 175 q 81 463 81 351 l 81 525 q 110 724 81 636 q 191 874 138 812 q 317 968 244 936 q 477 1001 390 1001 q 641 968 568 1001 q 766 874 713 936 q 847 724 819 812 q 875 525 875 636 m 745 463 l 745 526 q 727 682 745 614 q 675 796 709 750 q 590 866 640 842 q 477 890 541 890 q 367 866 416 890 q 283 796 318 842 q 229 682 248 750 q 210 526 210 614 l 210 463 q 229 306 210 374 q 284 191 248 237 q 369 121 319 144 q 479 97 418 97 q 592 121 543 97 q 676 191 642 144 q 728 306 710 237 q 745 463 745 374 m 517 1254 l 686 1069 l 686 1062 l 581 1062 l 479 1177 l 378 1062 l 275 1062 l 275 1069 l 441 1254 l 517 1254 m 401 -167 q 420 -115 401 -136 q 475 -94 439 -94 q 531 -115 511 -94 q 550 -167 550 -136 q 531 -217 550 -196 q 475 -237 511 -237 q 420 -217 439 -237 q 401 -167 401 -196 z "},"ộ":{"ha":792,"x_min":62,"x_max":730,"o":"m 62 359 l 62 374 q 85 522 62 454 q 152 641 109 590 q 257 719 195 691 q 395 747 319 747 q 535 719 473 747 q 641 641 597 691 q 707 522 684 590 q 730 374 730 454 l 730 359 q 707 212 730 279 q 641 93 684 144 q 535 15 597 43 q 397 -14 474 -14 q 258 15 319 -14 q 152 93 196 43 q 85 212 109 144 q 62 359 62 279 m 188 374 l 188 359 q 201 255 188 304 q 240 170 214 207 q 305 111 266 132 q 397 90 345 90 q 487 111 448 90 q 552 170 526 132 q 591 255 578 207 q 604 359 604 304 l 604 374 q 591 477 604 429 q 552 563 578 526 q 487 623 526 601 q 395 644 448 644 q 305 623 344 644 q 240 563 266 601 q 201 477 214 526 q 188 374 188 429 m 428 1042 l 596 857 l 596 850 l 492 850 l 390 964 l 289 850 l 186 850 l 186 857 l 352 1042 l 428 1042 m 318 -168 q 337 -116 318 -137 q 392 -95 355 -95 q 447 -116 428 -95 q 467 -168 467 -137 q 447 -217 467 -197 q 392 -238 428 -238 q 337 -217 355 -238 q 318 -168 318 -197 z "},"Ớ":{"ha":954,"x_min":69,"x_max":975,"o":"m 861 1080 l 975 1080 q 946 930 975 992 q 860 837 918 869 q 717 804 803 804 l 717 896 q 802 918 770 896 q 847 981 833 939 q 861 1080 861 1022 m 863 525 l 863 463 q 836 263 863 351 q 755 113 808 175 q 630 19 703 52 q 467 -14 557 -14 q 336 7 397 -14 q 226 69 275 28 q 142 167 177 109 q 88 299 106 225 q 69 463 69 374 l 69 525 q 98 724 69 636 q 180 874 127 812 q 306 968 233 936 q 466 1001 378 1001 q 600 980 538 1001 q 710 919 661 959 q 793 820 758 878 q 845 688 827 762 q 863 525 863 614 m 734 463 l 734 526 q 722 654 734 597 q 688 755 711 711 q 633 829 666 800 q 559 874 601 859 q 466 890 517 890 q 356 866 406 890 q 272 796 307 842 q 218 682 237 750 q 199 526 199 614 l 199 463 q 211 334 199 391 q 247 232 223 276 q 303 157 270 187 q 377 112 336 127 q 467 97 419 97 q 581 121 531 97 q 664 191 630 144 q 716 306 699 237 q 734 463 734 374 m 408 1049 l 539 1249 l 690 1249 l 509 1049 l 408 1049 z "},"ớ":{"ha":794,"x_min":62,"x_max":821,"o":"m 720 814 l 821 814 q 800 686 821 740 q 732 603 780 632 q 604 574 685 574 l 604 652 q 679 673 654 652 q 712 730 704 693 q 720 814 720 766 m 62 359 l 62 374 q 85 522 62 454 q 152 641 109 590 q 257 719 195 691 q 395 747 319 747 q 535 719 473 747 q 640 641 597 691 q 707 522 684 590 q 730 374 730 454 l 730 359 q 707 212 730 279 q 640 93 684 144 q 535 15 597 43 q 397 -14 474 -14 q 258 15 319 -14 q 152 93 196 43 q 85 212 109 144 q 62 359 62 279 m 188 374 l 188 359 q 201 255 188 304 q 240 170 214 207 q 305 111 266 132 q 397 90 345 90 q 487 111 448 90 q 552 170 526 132 q 591 255 578 207 q 604 359 604 304 l 604 374 q 591 477 604 429 q 552 563 578 526 q 487 623 526 601 q 395 644 448 644 q 305 623 344 644 q 240 563 266 601 q 201 477 214 526 q 188 374 188 429 m 326 842 l 457 1042 l 608 1042 l 427 842 l 326 842 z "},"Ờ":{"ha":954,"x_min":69,"x_max":975,"o":"m 861 1080 l 975 1080 q 946 930 975 992 q 860 837 918 869 q 717 804 803 804 l 717 896 q 802 918 770 896 q 847 981 833 939 q 861 1080 861 1022 m 863 525 l 863 463 q 836 263 863 351 q 755 113 808 175 q 630 19 703 52 q 467 -14 557 -14 q 336 7 397 -14 q 226 69 275 28 q 142 167 177 109 q 88 299 106 225 q 69 463 69 374 l 69 525 q 98 724 69 636 q 180 874 127 812 q 306 968 233 936 q 466 1001 378 1001 q 600 980 538 1001 q 710 919 661 959 q 793 820 758 878 q 845 688 827 762 q 863 525 863 614 m 734 463 l 734 526 q 722 654 734 597 q 688 755 711 711 q 633 829 666 800 q 559 874 601 859 q 466 890 517 890 q 356 866 406 890 q 272 796 307 842 q 218 682 237 750 q 199 526 199 614 l 199 463 q 211 334 199 391 q 247 232 223 276 q 303 157 270 187 q 377 112 336 127 q 467 97 419 97 q 581 121 531 97 q 664 191 630 144 q 716 306 699 237 q 734 463 734 374 m 417 1249 l 548 1049 l 440 1049 l 265 1249 l 417 1249 z "},"ờ":{"ha":794,"x_min":62,"x_max":821,"o":"m 720 814 l 821 814 q 800 686 821 740 q 732 603 780 632 q 604 574 685 574 l 604 652 q 679 673 654 652 q 712 730 704 693 q 720 814 720 766 m 62 359 l 62 374 q 85 522 62 454 q 152 641 109 590 q 257 719 195 691 q 395 747 319 747 q 535 719 473 747 q 640 641 597 691 q 707 522 684 590 q 730 374 730 454 l 730 359 q 707 212 730 279 q 640 93 684 144 q 535 15 597 43 q 397 -14 474 -14 q 258 15 319 -14 q 152 93 196 43 q 85 212 109 144 q 62 359 62 279 m 188 374 l 188 359 q 201 255 188 304 q 240 170 214 207 q 305 111 266 132 q 397 90 345 90 q 487 111 448 90 q 552 170 526 132 q 591 255 578 207 q 604 359 604 304 l 604 374 q 591 477 604 429 q 552 563 578 526 q 487 623 526 601 q 395 644 448 644 q 305 623 344 644 q 240 563 266 601 q 201 477 214 526 q 188 374 188 429 m 335 1042 l 466 842 l 358 842 l 183 1042 l 335 1042 z "},"Ở":{"ha":954,"x_min":69,"x_max":975,"o":"m 861 1080 l 975 1080 q 946 930 975 992 q 860 837 918 869 q 717 804 803 804 l 717 896 q 802 918 770 896 q 847 981 833 939 q 861 1080 861 1022 m 863 525 l 863 463 q 836 263 863 351 q 755 113 808 175 q 630 19 703 52 q 467 -14 557 -14 q 336 7 397 -14 q 226 69 275 28 q 142 167 177 109 q 88 299 106 225 q 69 463 69 374 l 69 525 q 98 724 69 636 q 180 874 127 812 q 306 968 233 936 q 466 1001 378 1001 q 600 980 538 1001 q 710 919 661 959 q 793 820 758 878 q 845 688 827 762 q 863 525 863 614 m 734 463 l 734 526 q 722 654 734 597 q 688 755 711 711 q 633 829 666 800 q 559 874 601 859 q 466 890 517 890 q 356 866 406 890 q 272 796 307 842 q 218 682 237 750 q 199 526 199 614 l 199 463 q 211 334 199 391 q 247 232 223 276 q 303 157 270 187 q 377 112 336 127 q 467 97 419 97 q 581 121 531 97 q 664 191 630 144 q 716 306 699 237 q 734 463 734 374 m 524 1060 l 434 1060 l 433 1163 q 490 1170 468 1165 q 522 1186 511 1175 q 532 1214 532 1196 q 523 1238 532 1228 q 498 1254 514 1248 q 463 1263 483 1261 q 419 1266 442 1266 l 424 1338 q 512 1329 474 1338 q 577 1303 551 1320 q 616 1263 603 1286 q 629 1211 629 1240 q 597 1136 629 1160 q 525 1107 564 1113 l 524 1060 z "},"ở":{"ha":794,"x_min":62,"x_max":821,"o":"m 720 814 l 821 814 q 800 686 821 740 q 732 603 780 632 q 604 574 685 574 l 604 652 q 679 673 654 652 q 712 730 704 693 q 720 814 720 766 m 62 359 l 62 374 q 85 522 62 454 q 152 641 109 590 q 257 719 195 691 q 395 747 319 747 q 535 719 473 747 q 640 641 597 691 q 707 522 684 590 q 730 374 730 454 l 730 359 q 707 212 730 279 q 640 93 684 144 q 535 15 597 43 q 397 -14 474 -14 q 258 15 319 -14 q 152 93 196 43 q 85 212 109 144 q 62 359 62 279 m 188 374 l 188 359 q 201 255 188 304 q 240 170 214 207 q 305 111 266 132 q 397 90 345 90 q 487 111 448 90 q 552 170 526 132 q 591 255 578 207 q 604 359 604 304 l 604 374 q 591 477 604 429 q 552 563 578 526 q 487 623 526 601 q 395 644 448 644 q 305 623 344 644 q 240 563 266 601 q 201 477 214 526 q 188 374 188 429 m 442 853 l 352 853 l 351 956 q 408 963 386 958 q 439 979 429 968 q 450 1007 450 989 q 441 1031 450 1021 q 416 1047 432 1041 q 380 1057 401 1054 q 337 1059 360 1059 l 342 1131 q 430 1122 392 1131 q 495 1097 469 1114 q 534 1056 521 1080 q 547 1004 547 1033 q 515 929 547 953 q 443 901 482 906 l 442 853 z "},"Ỡ":{"ha":954,"x_min":69,"x_max":975,"o":"m 861 1080 l 975 1080 q 946 930 975 992 q 860 837 918 869 q 717 804 803 804 l 717 896 q 802 918 770 896 q 847 981 833 939 q 861 1080 861 1022 m 863 525 l 863 463 q 836 263 863 351 q 755 113 808 175 q 630 19 703 52 q 467 -14 557 -14 q 336 7 397 -14 q 226 69 275 28 q 142 167 177 109 q 88 299 106 225 q 69 463 69 374 l 69 525 q 98 724 69 636 q 180 874 127 812 q 306 968 233 936 q 466 1001 378 1001 q 600 980 538 1001 q 710 919 661 959 q 793 820 758 878 q 845 688 827 762 q 863 525 863 614 m 734 463 l 734 526 q 722 654 734 597 q 688 755 711 711 q 633 829 666 800 q 559 874 601 859 q 466 890 517 890 q 356 866 406 890 q 272 796 307 842 q 218 682 237 750 q 199 526 199 614 l 199 463 q 211 334 199 391 q 247 232 223 276 q 303 157 270 187 q 377 112 336 127 q 467 97 419 97 q 581 121 531 97 q 664 191 630 144 q 716 306 699 237 q 734 463 734 374 m 633 1235 l 718 1227 q 698 1141 718 1178 q 645 1083 678 1103 q 571 1063 612 1063 q 514 1073 536 1063 q 474 1095 492 1082 q 437 1117 456 1107 q 389 1127 418 1127 q 341 1105 361 1127 q 322 1052 322 1084 l 237 1056 q 257 1143 237 1105 q 309 1202 276 1181 q 383 1223 342 1223 q 434 1214 412 1223 q 476 1191 456 1204 q 517 1169 496 1179 q 565 1159 538 1159 q 613 1181 593 1159 q 633 1235 633 1203 z "},"ỡ":{"ha":794,"x_min":62,"x_max":821,"o":"m 720 814 l 821 814 q 800 686 821 740 q 732 603 780 632 q 604 574 685 574 l 604 652 q 679 673 654 652 q 712 730 704 693 q 720 814 720 766 m 62 359 l 62 374 q 85 522 62 454 q 152 641 109 590 q 257 719 195 691 q 395 747 319 747 q 535 719 473 747 q 640 641 597 691 q 707 522 684 590 q 730 374 730 454 l 730 359 q 707 212 730 279 q 640 93 684 144 q 535 15 597 43 q 397 -14 474 -14 q 258 15 319 -14 q 152 93 196 43 q 85 212 109 144 q 62 359 62 279 m 188 374 l 188 359 q 201 255 188 304 q 240 170 214 207 q 305 111 266 132 q 397 90 345 90 q 487 111 448 90 q 552 170 526 132 q 591 255 578 207 q 604 359 604 304 l 604 374 q 591 477 604 429 q 552 563 578 526 q 487 623 526 601 q 395 644 448 644 q 305 623 344 644 q 240 563 266 601 q 201 477 214 526 q 188 374 188 429 m 551 1028 l 635 1021 q 616 934 635 971 q 563 876 596 897 q 489 856 530 856 q 432 866 454 856 q 392 888 410 876 q 355 910 374 901 q 307 920 336 920 q 259 899 279 920 q 240 845 240 877 l 155 849 q 175 936 155 899 q 227 995 194 974 q 301 1017 260 1017 q 352 1007 330 1017 q 394 984 374 997 q 435 962 414 972 q 483 952 456 952 q 531 974 511 952 q 551 1028 551 996 z "},"Ợ":{"ha":954,"x_min":69,"x_max":975,"o":"m 861 1080 l 975 1080 q 946 930 975 992 q 860 837 918 869 q 717 804 803 804 l 717 896 q 802 918 770 896 q 847 981 833 939 q 861 1080 861 1022 m 863 525 l 863 463 q 836 263 863 351 q 755 113 808 175 q 630 19 703 52 q 467 -14 557 -14 q 336 7 397 -14 q 226 69 275 28 q 142 167 177 109 q 88 299 106 225 q 69 463 69 374 l 69 525 q 98 724 69 636 q 180 874 127 812 q 306 968 233 936 q 466 1001 378 1001 q 600 980 538 1001 q 710 919 661 959 q 793 820 758 878 q 845 688 827 762 q 863 525 863 614 m 734 463 l 734 526 q 722 654 734 597 q 688 755 711 711 q 633 829 666 800 q 559 874 601 859 q 466 890 517 890 q 356 866 406 890 q 272 796 307 842 q 218 682 237 750 q 199 526 199 614 l 199 463 q 211 334 199 391 q 247 232 223 276 q 303 157 270 187 q 377 112 336 127 q 467 97 419 97 q 581 121 531 97 q 664 191 630 144 q 716 306 699 237 q 734 463 734 374 m 391 -167 q 410 -115 391 -136 q 465 -94 429 -94 q 520 -115 501 -94 q 540 -167 540 -136 q 520 -217 540 -196 q 465 -237 501 -237 q 410 -217 429 -237 q 391 -167 391 -196 z "},"ợ":{"ha":794,"x_min":62,"x_max":821,"o":"m 720 814 l 821 814 q 800 686 821 740 q 732 603 780 632 q 604 574 685 574 l 604 652 q 679 673 654 652 q 712 730 704 693 q 720 814 720 766 m 62 359 l 62 374 q 85 522 62 454 q 152 641 109 590 q 257 719 195 691 q 395 747 319 747 q 535 719 473 747 q 640 641 597 691 q 707 522 684 590 q 730 374 730 454 l 730 359 q 707 212 730 279 q 640 93 684 144 q 535 15 597 43 q 397 -14 474 -14 q 258 15 319 -14 q 152 93 196 43 q 85 212 109 144 q 62 359 62 279 m 188 374 l 188 359 q 201 255 188 304 q 240 170 214 207 q 305 111 266 132 q 397 90 345 90 q 487 111 448 90 q 552 170 526 132 q 591 255 578 207 q 604 359 604 304 l 604 374 q 591 477 604 429 q 552 563 578 526 q 487 623 526 601 q 395 644 448 644 q 305 623 344 644 q 240 563 266 601 q 201 477 214 526 q 188 374 188 429 m 317 -174 q 335 -122 317 -143 q 391 -101 354 -101 q 446 -122 427 -101 q 465 -174 465 -143 q 446 -223 465 -203 q 391 -244 427 -244 q 335 -223 354 -244 q 317 -174 317 -203 z "},"Ụ":{"ha":901,"x_min":95,"x_max":810,"o":"m 680 987 l 810 987 l 810 319 q 760 134 810 208 q 629 23 711 60 q 452 -14 547 -14 q 270 23 351 -14 q 142 134 189 60 q 95 319 95 208 l 95 987 l 224 987 l 224 319 q 253 192 224 242 q 333 117 281 142 q 452 93 384 93 q 571 117 520 93 q 651 192 623 142 q 680 319 680 242 l 680 987 m 374 -167 q 392 -115 374 -136 q 448 -94 411 -94 q 503 -115 484 -94 q 522 -167 522 -136 q 503 -217 522 -196 q 448 -237 484 -237 q 392 -217 411 -237 q 374 -167 374 -196 z "},"ụ":{"ha":766,"x_min":93,"x_max":671,"o":"m 545 170 l 545 734 l 671 734 l 671 0 l 551 0 l 545 170 m 568 324 l 621 326 q 605 190 621 252 q 556 83 590 128 q 467 12 522 37 q 334 -14 412 -14 q 236 2 280 -14 q 159 50 191 18 q 110 135 127 83 q 93 260 93 187 l 93 734 l 218 734 l 218 259 q 230 177 218 210 q 260 126 241 145 q 303 100 279 108 q 353 93 328 93 q 480 124 433 93 q 548 207 527 155 q 568 324 568 260 m 267 -167 q 286 -115 267 -136 q 341 -94 304 -94 q 396 -115 377 -94 q 416 -167 416 -136 q 396 -217 416 -196 q 341 -237 377 -237 q 286 -217 304 -237 q 267 -167 267 -196 z "},"Ủ":{"ha":901,"x_min":95,"x_max":810,"o":"m 680 987 l 810 987 l 810 319 q 760 134 810 208 q 629 23 711 60 q 452 -14 547 -14 q 270 23 351 -14 q 142 134 189 60 q 95 319 95 208 l 95 987 l 224 987 l 224 319 q 253 192 224 242 q 333 117 281 142 q 452 93 384 93 q 571 117 520 93 q 651 192 623 142 q 680 319 680 242 l 680 987 m 500 1064 l 410 1064 l 409 1167 q 465 1174 444 1169 q 497 1190 487 1179 q 507 1218 507 1200 q 498 1242 507 1232 q 474 1258 490 1252 q 438 1267 458 1265 q 395 1270 418 1270 l 399 1342 q 488 1333 450 1342 q 552 1308 526 1324 q 592 1267 578 1291 q 605 1215 605 1244 q 572 1140 605 1164 q 500 1112 540 1117 l 500 1064 z "},"ủ":{"ha":766,"x_min":93,"x_max":671,"o":"m 545 170 l 545 734 l 671 734 l 671 0 l 551 0 l 545 170 m 568 324 l 621 326 q 605 190 621 252 q 556 83 590 128 q 467 12 522 37 q 334 -14 412 -14 q 236 2 280 -14 q 159 50 191 18 q 110 135 127 83 q 93 260 93 187 l 93 734 l 218 734 l 218 259 q 230 177 218 210 q 260 126 241 145 q 303 100 279 108 q 353 93 328 93 q 480 124 433 93 q 548 207 527 155 q 568 324 568 260 m 432 853 l 342 853 l 341 956 q 397 963 376 958 q 429 979 419 968 q 439 1007 439 989 q 431 1031 439 1021 q 406 1047 422 1041 q 370 1057 391 1054 q 327 1059 350 1059 l 332 1131 q 420 1122 382 1131 q 485 1097 458 1114 q 524 1056 511 1080 q 537 1004 537 1033 q 505 929 537 953 q 433 901 472 906 l 432 853 z "},"Ứ":{"ha":966,"x_min":95,"x_max":1061,"o":"m 954 1043 l 1061 1043 q 1033 882 1061 947 q 943 784 1005 817 q 779 751 881 751 l 779 842 q 886 865 848 842 q 939 932 924 888 q 954 1043 954 977 m 680 987 l 810 987 l 810 319 q 760 134 810 208 q 629 23 711 60 q 452 -14 547 -14 q 270 23 351 -14 q 142 134 189 60 q 95 319 95 208 l 95 987 l 224 987 l 224 319 q 253 192 224 242 q 333 117 281 142 q 452 93 384 93 q 571 117 520 93 q 651 192 623 142 q 680 319 680 242 l 680 987 m 401 1061 l 533 1260 l 684 1260 l 503 1061 l 401 1061 z "},"ứ":{"ha":859,"x_min":93,"x_max":879,"o":"m 783 793 l 879 793 q 860 669 879 719 q 792 593 840 618 q 656 568 744 568 l 656 646 q 744 661 718 646 q 777 709 770 676 q 783 793 783 741 m 545 170 l 545 734 l 671 734 l 671 0 l 551 0 l 545 170 m 568 324 l 621 326 q 605 190 621 252 q 556 83 590 128 q 467 12 522 37 q 334 -14 412 -14 q 236 2 280 -14 q 159 50 191 18 q 110 135 127 83 q 93 260 93 187 l 93 734 l 218 734 l 218 259 q 230 177 218 210 q 260 126 241 145 q 303 100 279 108 q 353 93 328 93 q 480 124 433 93 q 548 207 527 155 q 568 324 568 260 m 324 828 l 456 1027 l 607 1027 l 425 828 l 324 828 z "},"Ừ":{"ha":966,"x_min":95,"x_max":1061,"o":"m 954 1043 l 1061 1043 q 1033 882 1061 947 q 943 784 1005 817 q 779 751 881 751 l 779 842 q 886 865 848 842 q 939 932 924 888 q 954 1043 954 977 m 680 987 l 810 987 l 810 319 q 760 134 810 208 q 629 23 711 60 q 452 -14 547 -14 q 270 23 351 -14 q 142 134 189 60 q 95 319 95 208 l 95 987 l 224 987 l 224 319 q 253 192 224 242 q 333 117 281 142 q 452 93 384 93 q 571 117 520 93 q 651 192 623 142 q 680 319 680 242 l 680 987 m 411 1260 l 542 1061 l 434 1061 l 259 1260 l 411 1260 z "},"ừ":{"ha":859,"x_min":93,"x_max":879,"o":"m 783 793 l 879 793 q 860 669 879 719 q 792 593 840 618 q 656 568 744 568 l 656 646 q 744 661 718 646 q 777 709 770 676 q 783 793 783 741 m 545 170 l 545 734 l 671 734 l 671 0 l 551 0 l 545 170 m 568 324 l 621 326 q 605 190 621 252 q 556 83 590 128 q 467 12 522 37 q 334 -14 412 -14 q 236 2 280 -14 q 159 50 191 18 q 110 135 127 83 q 93 260 93 187 l 93 734 l 218 734 l 218 259 q 230 177 218 210 q 260 126 241 145 q 303 100 279 108 q 353 93 328 93 q 480 124 433 93 q 548 207 527 155 q 568 324 568 260 m 334 1027 l 465 828 l 357 828 l 182 1027 l 334 1027 z "},"Ử":{"ha":966,"x_min":95,"x_max":1061,"o":"m 954 1043 l 1061 1043 q 1033 882 1061 947 q 943 784 1005 817 q 779 751 881 751 l 779 842 q 886 865 848 842 q 939 932 924 888 q 954 1043 954 977 m 680 987 l 810 987 l 810 319 q 760 134 810 208 q 629 23 711 60 q 452 -14 547 -14 q 270 23 351 -14 q 142 134 189 60 q 95 319 95 208 l 95 987 l 224 987 l 224 319 q 253 192 224 242 q 333 117 281 142 q 452 93 384 93 q 571 117 520 93 q 651 192 623 142 q 680 319 680 242 l 680 987 m 518 1072 l 428 1072 l 427 1175 q 484 1182 462 1177 q 515 1197 505 1187 q 526 1225 526 1208 q 517 1250 526 1240 q 492 1266 508 1259 q 456 1275 477 1272 q 413 1278 436 1278 l 418 1350 q 506 1341 468 1350 q 571 1315 545 1332 q 610 1275 597 1298 q 623 1223 623 1251 q 591 1148 623 1171 q 519 1119 558 1124 l 518 1072 z "},"ử":{"ha":859,"x_min":93,"x_max":879,"o":"m 783 793 l 879 793 q 860 669 879 719 q 792 593 840 618 q 656 568 744 568 l 656 646 q 744 661 718 646 q 777 709 770 676 q 783 793 783 741 m 545 170 l 545 734 l 671 734 l 671 0 l 551 0 l 545 170 m 568 324 l 621 326 q 605 190 621 252 q 556 83 590 128 q 467 12 522 37 q 334 -14 412 -14 q 236 2 280 -14 q 159 50 191 18 q 110 135 127 83 q 93 260 93 187 l 93 734 l 218 734 l 218 259 q 230 177 218 210 q 260 126 241 145 q 303 100 279 108 q 353 93 328 93 q 480 124 433 93 q 548 207 527 155 q 568 324 568 260 m 441 839 l 351 839 l 350 942 q 406 949 385 944 q 438 965 428 954 q 448 993 448 975 q 439 1017 448 1007 q 415 1033 431 1027 q 379 1042 399 1040 q 336 1045 359 1045 l 340 1117 q 429 1108 391 1117 q 493 1082 467 1099 q 533 1042 519 1065 q 546 990 546 1019 q 513 915 546 939 q 441 886 481 892 l 441 839 z "},"Ữ":{"ha":966,"x_min":95,"x_max":1061,"o":"m 954 1043 l 1061 1043 q 1033 882 1061 947 q 943 784 1005 817 q 779 751 881 751 l 779 842 q 886 865 848 842 q 939 932 924 888 q 954 1043 954 977 m 680 987 l 810 987 l 810 319 q 760 134 810 208 q 629 23 711 60 q 452 -14 547 -14 q 270 23 351 -14 q 142 134 189 60 q 95 319 95 208 l 95 987 l 224 987 l 224 319 q 253 192 224 242 q 333 117 281 142 q 452 93 384 93 q 571 117 520 93 q 651 192 623 142 q 680 319 680 242 l 680 987 m 627 1246 l 711 1239 q 692 1152 711 1190 q 639 1095 672 1115 q 565 1074 606 1074 q 508 1084 530 1074 q 468 1106 486 1094 q 431 1129 450 1119 q 383 1139 412 1139 q 335 1117 355 1139 q 316 1063 316 1095 l 231 1067 q 251 1155 231 1117 q 303 1214 270 1192 q 377 1235 336 1235 q 428 1225 406 1235 q 470 1203 450 1215 q 511 1180 490 1190 q 559 1171 532 1171 q 607 1193 587 1171 q 627 1246 627 1215 z "},"ữ":{"ha":859,"x_min":93,"x_max":879,"o":"m 783 793 l 879 793 q 860 669 879 719 q 792 593 840 618 q 656 568 744 568 l 656 646 q 744 661 718 646 q 777 709 770 676 q 783 793 783 741 m 545 170 l 545 734 l 671 734 l 671 0 l 551 0 l 545 170 m 568 324 l 621 326 q 605 190 621 252 q 556 83 590 128 q 467 12 522 37 q 334 -14 412 -14 q 236 2 280 -14 q 159 50 191 18 q 110 135 127 83 q 93 260 93 187 l 93 734 l 218 734 l 218 259 q 230 177 218 210 q 260 126 241 145 q 303 100 279 108 q 353 93 328 93 q 480 124 433 93 q 548 207 527 155 q 568 324 568 260 m 549 1014 l 634 1006 q 614 920 634 957 q 562 862 595 882 q 488 842 529 842 q 431 851 453 842 q 391 874 408 861 q 354 896 373 886 q 306 906 334 906 q 258 884 277 906 q 239 831 239 863 l 154 835 q 173 922 154 884 q 226 981 193 960 q 300 1002 259 1002 q 351 992 329 1002 q 393 970 373 983 q 433 948 412 958 q 481 938 454 938 q 530 960 510 938 q 549 1014 549 982 z "},"Ự":{"ha":966,"x_min":95,"x_max":1061,"o":"m 954 1043 l 1061 1043 q 1033 882 1061 947 q 943 784 1005 817 q 779 751 881 751 l 779 842 q 886 865 848 842 q 939 932 924 888 q 954 1043 954 977 m 680 987 l 810 987 l 810 319 q 760 134 810 208 q 629 23 711 60 q 452 -14 547 -14 q 270 23 351 -14 q 142 134 189 60 q 95 319 95 208 l 95 987 l 224 987 l 224 319 q 253 192 224 242 q 333 117 281 142 q 452 93 384 93 q 571 117 520 93 q 651 192 623 142 q 680 319 680 242 l 680 987 m 391 -173 q 410 -121 391 -142 q 465 -100 429 -100 q 520 -121 501 -100 q 540 -173 540 -142 q 520 -223 540 -202 q 465 -243 501 -243 q 410 -223 429 -243 q 391 -173 391 -202 z "},"ự":{"ha":859,"x_min":93,"x_max":879,"o":"m 783 793 l 879 793 q 860 669 879 719 q 792 593 840 618 q 656 568 744 568 l 656 646 q 744 661 718 646 q 777 709 770 676 q 783 793 783 741 m 545 170 l 545 734 l 671 734 l 671 0 l 551 0 l 545 170 m 568 324 l 621 326 q 605 190 621 252 q 556 83 590 128 q 467 12 522 37 q 334 -14 412 -14 q 236 2 280 -14 q 159 50 191 18 q 110 135 127 83 q 93 260 93 187 l 93 734 l 218 734 l 218 259 q 230 177 218 210 q 260 126 241 145 q 303 100 279 108 q 353 93 328 93 q 480 124 433 93 q 548 207 527 155 q 568 324 568 260 m 304 -167 q 322 -115 304 -136 q 378 -94 341 -94 q 433 -115 414 -94 q 452 -167 452 -136 q 433 -217 452 -196 q 378 -237 414 -237 q 322 -217 341 -237 q 304 -167 304 -196 z "},"Ỵ":{"ha":834,"x_min":10,"x_max":822,"o":"m 160 987 l 416 492 l 673 987 l 822 987 l 481 369 l 481 0 l 351 0 l 351 369 l 10 987 l 160 987 m 339 -166 q 358 -115 339 -136 q 413 -94 376 -94 q 468 -115 449 -94 q 488 -166 488 -136 q 468 -216 488 -195 q 413 -237 449 -237 q 358 -216 376 -237 q 339 -166 339 -195 z "},"ỵ":{"ha":657,"x_min":15,"x_max":640,"o":"m 302 76 l 506 734 l 640 734 l 346 -113 q 319 -172 336 -140 q 277 -232 302 -203 q 215 -278 251 -260 q 128 -296 178 -296 q 90 -292 113 -296 q 58 -286 67 -288 l 57 -184 q 74 -185 62 -184 q 91 -186 86 -186 q 163 -175 134 -186 q 214 -138 193 -164 q 250 -66 235 -112 l 302 76 m 152 734 l 342 164 l 375 32 l 285 -14 l 15 734 l 152 734 m 405 -274 q 424 -222 405 -243 q 479 -201 442 -201 q 534 -222 515 -201 q 553 -274 553 -243 q 534 -324 553 -303 q 479 -345 515 -345 q 424 -324 442 -345 q 405 -274 405 -303 z "},"Ỷ":{"ha":834,"x_min":10,"x_max":822,"o":"m 160 987 l 416 492 l 673 987 l 822 987 l 481 369 l 481 0 l 351 0 l 351 369 l 10 987 l 160 987 m 467 1063 l 376 1063 l 376 1166 q 432 1174 410 1168 q 464 1189 454 1179 q 474 1217 474 1200 q 465 1241 474 1232 q 441 1258 456 1251 q 405 1267 425 1264 q 361 1270 385 1270 l 366 1341 q 455 1333 416 1341 q 519 1307 493 1324 q 558 1266 545 1290 q 572 1215 572 1243 q 539 1140 572 1163 q 467 1111 507 1116 l 467 1063 z "},"ỷ":{"ha":657,"x_min":15,"x_max":640,"o":"m 302 76 l 506 734 l 640 734 l 346 -113 q 319 -172 336 -140 q 277 -232 302 -203 q 215 -278 251 -260 q 128 -296 178 -296 q 90 -292 113 -296 q 58 -286 67 -288 l 57 -184 q 74 -185 62 -184 q 91 -186 86 -186 q 163 -175 134 -186 q 214 -138 193 -164 q 250 -66 235 -112 l 302 76 m 152 734 l 342 164 l 375 32 l 285 -14 l 15 734 l 152 734 m 392 853 l 302 853 l 301 956 q 357 963 336 958 q 389 979 379 968 q 399 1007 399 989 q 391 1031 399 1021 q 366 1047 382 1041 q 330 1057 351 1054 q 287 1059 310 1059 l 292 1131 q 380 1122 342 1131 q 445 1097 418 1114 q 484 1056 471 1080 q 497 1004 497 1033 q 465 929 497 953 q 393 901 432 906 l 392 853 z "},"Ỹ":{"ha":834,"x_min":10,"x_max":822,"o":"m 160 987 l 416 492 l 673 987 l 822 987 l 481 369 l 481 0 l 351 0 l 351 369 l 10 987 l 160 987 m 575 1238 l 660 1231 q 640 1144 660 1181 q 588 1086 621 1107 q 513 1066 555 1066 q 456 1076 479 1066 q 416 1098 434 1086 q 379 1121 399 1111 q 332 1131 360 1131 q 284 1109 303 1131 q 264 1055 264 1087 l 180 1059 q 199 1146 180 1109 q 252 1205 218 1184 q 326 1227 285 1227 q 377 1217 355 1227 q 418 1195 399 1207 q 459 1172 438 1182 q 507 1162 480 1162 q 555 1184 536 1162 q 575 1238 575 1206 z "},"ỹ":{"ha":657,"x_min":15,"x_max":640,"o":"m 302 76 l 506 734 l 640 734 l 346 -113 q 319 -172 336 -140 q 277 -232 302 -203 q 215 -278 251 -260 q 128 -296 178 -296 q 90 -292 113 -296 q 58 -286 67 -288 l 57 -184 q 74 -185 62 -184 q 91 -186 86 -186 q 163 -175 134 -186 q 214 -138 193 -164 q 250 -66 235 -112 l 302 76 m 152 734 l 342 164 l 375 32 l 285 -14 l 15 734 l 152 734 m 500 1028 l 585 1021 q 566 934 585 971 q 513 876 546 897 q 439 856 480 856 q 382 866 404 856 q 342 888 359 876 q 305 910 324 901 q 257 920 286 920 q 209 899 229 920 q 190 845 190 877 l 105 849 q 124 936 105 899 q 177 995 144 974 q 251 1017 210 1017 q 302 1007 280 1017 q 344 984 324 997 q 385 962 363 972 q 433 952 406 952 q 481 974 461 952 q 500 1028 500 996 z "},"₫":{"ha":804,"x_min":64,"x_max":812,"o":"m 558 142 l 558 1042 l 684 1042 l 684 0 l 569 0 l 558 142 m 64 359 l 64 373 q 85 526 64 457 q 144 644 106 595 q 236 721 182 694 q 355 747 289 747 q 476 723 424 747 q 564 653 528 699 q 621 543 600 608 q 650 397 642 479 l 650 335 q 622 190 643 254 q 564 80 600 125 q 475 11 528 35 q 353 -14 423 -14 q 236 14 289 -14 q 144 92 182 42 q 85 211 106 142 q 64 359 64 279 m 191 373 l 191 359 q 202 256 191 304 q 237 171 213 208 q 297 114 260 134 q 385 93 334 93 q 487 119 447 93 q 552 189 528 146 q 590 283 576 233 l 590 447 q 567 519 582 484 q 527 582 551 554 q 468 625 503 609 q 386 642 433 642 q 297 620 334 642 q 237 562 260 599 q 202 476 213 525 q 191 373 191 428 m 812 939 l 812 836 l 380 836 l 380 939 l 812 939 m 732 -106 l 732 -210 l 111 -210 l 111 -106 l 732 -106 z "},"Ҭ":{"ha":829,"x_min":34,"x_max":797,"o":"m 479 987 l 479 0 l 351 0 l 351 987 l 479 987 m 797 987 l 797 880 l 34 880 l 34 987 l 797 987 m 587 104 l 587 -243 l 461 -243 l 461 104 l 587 104 z "},"ҭ":{"ha":668,"x_min":27,"x_max":641,"o":"m 395 734 l 395 0 l 269 0 l 269 734 l 395 734 m 641 734 l 641 632 l 27 632 l 27 734 l 641 734 m 505 104 l 505 -243 l 379 -243 l 379 104 l 505 104 z "},"Ӌ":{"ha":951,"x_min":102,"x_max":831,"o":"m 102 987 l 233 987 l 233 679 q 256 559 233 602 q 323 498 278 515 q 437 480 369 480 q 516 484 477 480 q 591 493 554 487 q 663 508 627 499 q 733 527 699 517 l 733 420 q 667 401 700 410 q 599 386 634 392 q 525 376 564 380 q 437 373 485 373 q 257 403 332 373 q 142 500 182 433 q 102 679 102 568 l 102 987 m 700 987 l 831 987 l 831 0 l 700 0 l 700 987 m 715 104 l 715 -243 l 590 -243 l 590 104 l 715 104 z "},"ӌ":{"ha":755,"x_min":71,"x_max":649,"o":"m 649 734 l 649 0 l 524 0 l 524 734 l 649 734 m 606 397 l 606 294 q 529 268 568 279 q 447 251 490 257 q 354 244 404 244 q 203 274 267 244 q 105 366 140 304 q 71 521 71 427 l 71 735 l 196 735 l 196 521 q 214 422 196 460 q 268 366 233 384 q 354 348 303 348 q 446 354 403 348 q 529 372 489 361 q 606 397 568 382 m 536 104 l 536 -243 l 411 -243 l 411 104 l 536 104 z "},"Ӷ":{"ha":772,"x_min":121,"x_max":727,"o":"m 727 987 l 727 880 l 251 880 l 251 0 l 121 0 l 121 987 l 727 987 m 359 104 l 359 -243 l 233 -243 l 233 104 l 359 104 z "},"ӷ":{"ha":583,"x_min":105,"x_max":570,"o":"m 570 734 l 570 630 l 231 630 l 231 0 l 105 0 l 105 734 l 570 734 m 340 104 l 340 -243 l 215 -243 l 215 104 l 340 104 z "},"Ҿ":{"ha":1074,"x_min":43,"x_max":997,"o":"m 43 733 l 146 733 q 163 647 146 684 q 218 589 181 610 q 314 568 256 568 l 314 473 q 164 505 225 473 q 73 596 104 537 q 43 733 43 654 m 679 -16 q 500 16 578 -16 q 368 104 422 47 q 287 238 315 161 q 260 409 260 316 l 260 578 q 288 748 260 671 q 367 883 317 826 q 485 970 418 939 q 629 1000 551 1001 q 788 969 720 1000 q 904 878 857 937 q 974 736 950 819 q 997 549 997 652 l 997 473 l 339 473 l 339 567 l 866 567 l 866 589 q 853 707 866 652 q 813 804 841 762 q 740 868 785 845 q 629 892 694 892 q 527 867 572 892 q 452 800 483 843 q 406 700 422 756 q 390 578 390 643 l 390 409 q 406 286 390 343 q 457 185 422 229 q 547 117 492 142 q 679 92 602 92 q 819 111 763 92 q 913 149 876 130 l 945 52 q 895 25 929 41 q 808 -3 861 9 q 679 -16 754 -16 m 721 57 l 721 -291 l 595 -291 l 595 57 l 721 57 z "},"ҿ":{"ha":823,"x_min":-24,"x_max":762,"o":"m -24 581 l 77 581 q 111 475 77 515 q 218 435 144 435 l 218 343 q 85 372 139 343 q 4 454 31 401 q -24 581 -24 508 m 476 -14 q 337 13 399 -14 q 231 86 275 39 q 163 199 186 134 q 139 341 139 264 l 139 370 q 165 529 139 459 q 237 648 192 600 q 340 722 283 697 q 460 747 398 747 q 596 720 539 747 q 690 645 653 693 q 745 531 727 596 q 762 388 762 465 l 762 332 l 214 332 l 214 434 l 636 434 l 636 444 q 624 516 634 480 q 594 581 614 551 q 541 627 574 610 q 460 644 508 644 q 381 626 417 644 q 319 573 345 608 q 279 487 294 538 q 265 370 265 436 l 265 341 q 280 243 265 289 q 322 163 294 197 q 391 109 351 128 q 483 89 431 89 q 595 116 549 89 q 676 189 642 143 l 753 128 q 692 60 729 92 q 602 7 655 27 q 476 -14 549 -14 m 543 59 l 543 -289 l 418 -289 l 418 59 l 543 59 z "},"һ":{"ha":765,"x_min":96,"x_max":673,"o":"m 221 1042 l 221 0 l 96 0 l 96 1042 l 221 1042 m 191 395 l 139 397 q 161 536 140 472 q 222 648 183 600 q 316 721 262 695 q 437 747 371 747 q 535 733 492 747 q 609 686 578 718 q 656 604 640 654 q 673 481 673 553 l 673 0 l 547 0 l 547 482 q 530 575 547 540 q 480 626 513 610 q 400 642 448 642 q 315 622 353 642 q 249 568 277 602 q 207 489 222 533 q 191 395 191 444 z "},"Ҍ":{"ha":871,"x_min":-30,"x_max":814,"o":"m 210 585 l 479 585 q 663 549 588 585 q 776 448 737 513 q 814 295 814 382 q 793 176 814 230 q 728 82 771 122 q 623 21 686 43 q 479 0 561 0 l 111 0 l 111 987 l 241 987 l 241 106 l 479 106 q 597 133 552 106 q 663 203 642 160 q 684 296 684 247 q 663 387 684 346 q 597 453 642 429 q 479 478 552 478 l 210 478 l 210 585 m 402 851 l 402 748 l -30 748 l -30 851 l 402 851 z "},"Ѣ":{"ha":871,"x_min":-30,"x_max":814,"o":"m 210 585 l 479 585 q 663 549 588 585 q 776 448 737 513 q 814 295 814 382 q 793 176 814 230 q 728 82 771 122 q 623 21 686 43 q 479 0 561 0 l 111 0 l 111 987 l 241 987 l 241 106 l 479 106 q 597 133 552 106 q 663 203 642 160 q 684 296 684 247 q 663 387 684 346 q 597 453 642 429 q 479 478 552 478 l 210 478 l 210 585 m 402 851 l 402 748 l -30 748 l -30 851 l 402 851 z "},"Ғ":{"ha":772,"x_min":2,"x_max":727,"o":"m 727 987 l 727 880 l 251 880 l 251 0 l 121 0 l 121 987 l 727 987 m 434 566 l 434 463 l 2 463 l 2 566 l 434 566 z "},"ғ":{"ha":583,"x_min":-2,"x_max":570,"o":"m 570 734 l 570 630 l 231 630 l 231 0 l 105 0 l 105 734 l 570 734 m 430 427 l 430 324 l -2 324 l -2 427 l 430 427 z "},"Ҟ":{"ha":906,"x_min":7,"x_max":902,"o":"m 265 987 l 265 0 l 134 0 l 134 987 l 265 987 m 873 987 l 445 444 l 213 444 l 193 553 l 367 553 l 711 987 l 873 987 m 742 0 l 371 461 l 444 576 l 902 0 l 742 0 m 439 834 l 439 731 l 7 731 l 7 834 l 439 834 z "},"ҟ":{"ha":722,"x_min":-31,"x_max":722,"o":"m 239 1042 l 239 0 l 113 0 l 113 1042 l 239 1042 m 687 734 l 385 340 l 194 340 l 179 444 l 324 444 l 538 734 l 687 734 m 573 0 l 321 349 l 387 460 l 722 0 l 573 0 m 401 928 l 401 825 l -31 825 l -31 928 l 401 928 z "},"Ұ":{"ha":834,"x_min":10,"x_max":822,"o":"m 160 987 l 416 492 l 673 987 l 822 987 l 481 369 l 481 0 l 351 0 l 351 369 l 10 987 l 160 987 m 635 456 l 635 353 l 203 353 l 203 456 l 635 456 z "},"ұ":{"ha":696,"x_min":32,"x_max":673,"o":"m 415 90 l 415 -283 l 290 -283 l 290 90 l 415 90 m 349 170 l 544 734 l 673 734 l 401 0 l 317 0 l 349 170 m 160 734 l 361 170 l 389 0 l 305 0 l 32 734 l 160 734 m 572 95 l 572 -8 l 140 -8 l 140 95 l 572 95 z "},"Ӿ":{"ha":871,"x_min":39,"x_max":834,"o":"m 199 987 l 437 609 l 674 987 l 827 987 l 515 498 l 834 0 l 680 0 l 437 386 l 193 0 l 39 0 l 359 498 l 47 987 l 199 987 m 655 557 l 655 454 l 223 454 l 223 557 l 655 557 z "},"ӿ":{"ha":689,"x_min":28,"x_max":659,"o":"m 180 734 l 341 467 l 504 734 l 651 734 l 411 372 l 659 0 l 513 0 l 344 275 l 174 0 l 28 0 l 275 372 l 36 734 l 180 734 m 562 429 l 562 326 l 130 326 l 130 429 l 562 429 z "},"ԑ":{"ha":749,"x_min":68,"x_max":681,"o":"m 356 398 l 505 398 l 505 325 l 366 325 q 272 312 310 325 q 214 274 233 300 q 194 206 194 248 q 206 161 194 182 q 241 123 218 140 q 298 98 264 107 q 374 88 332 88 q 470 106 429 88 q 533 154 511 125 q 556 217 556 184 l 681 217 q 654 114 681 157 q 584 42 628 70 q 485 0 540 14 q 374 -14 431 -14 q 252 1 308 -14 q 155 45 196 16 q 91 114 113 73 q 68 207 68 155 q 87 289 68 253 q 143 349 106 324 q 234 386 180 373 q 356 398 288 398 m 505 351 l 356 351 q 243 365 294 351 q 156 405 192 379 q 100 463 119 430 q 81 534 81 496 q 101 626 81 586 q 161 692 122 665 q 254 733 199 719 q 374 747 308 747 q 488 732 435 747 q 582 688 541 717 q 646 620 623 660 q 669 530 669 580 l 544 530 q 521 588 544 562 q 460 630 498 614 q 374 645 422 645 q 279 629 317 645 q 224 588 242 613 q 206 534 206 562 q 215 490 206 510 q 243 455 224 470 q 293 433 262 441 q 366 425 323 425 l 505 425 l 505 351 z "},"₣":{"ha":768,"x_min":12,"x_max":726,"o":"m 245 987 l 245 0 l 115 0 l 115 987 l 245 987 m 659 543 l 659 436 l 217 436 l 217 543 l 659 543 m 726 987 l 726 880 l 217 880 l 217 987 l 726 987 m 444 282 l 444 179 l 12 179 l 12 282 l 444 282 z "},"―":{"ha":1084,"x_min":98,"x_max":1004,"o":"m 1004 545 l 1004 441 l 98 441 l 98 545 l 1004 545 z "},"Ὅ":{"ha":1003,"x_min":-266,"x_max":922,"o":"m 922 525 l 922 463 q 895 263 922 351 q 814 113 867 175 q 689 19 762 52 q 526 -14 616 -14 q 366 19 439 -14 q 240 113 293 52 q 157 263 186 175 q 128 463 128 351 l 128 525 q 157 724 128 636 q 239 874 186 812 q 365 968 292 936 q 525 1001 437 1001 q 688 968 615 1001 q 813 874 761 936 q 894 724 866 812 q 922 525 922 636 m 793 463 l 793 526 q 775 682 793 614 q 722 796 757 750 q 638 866 688 842 q 525 890 588 890 q 415 866 464 890 q 331 796 366 842 q 277 682 296 750 q 258 526 258 614 l 258 463 q 277 306 258 374 q 331 191 296 237 q 416 121 367 144 q 526 97 465 97 q 640 121 590 97 q 723 191 689 144 q 775 306 758 237 q 793 463 793 374 m -69 783 l -69 795 l 9 1013 l 142 1013 l 142 999 l -9 783 l -69 783 m -266 956 l -266 1013 l -153 1013 l -153 960 q -138 876 -153 911 q -96 810 -124 840 l -145 770 q -235 849 -203 801 q -266 956 -266 898 z "}}'),familyName:"Roboto",ascender:1289,descender:-339,underlinePosition:-102,underlineThickness:68,boundingBox:{yMin:-376,xMin:-1024,yMax:1467,xMax:1596},resolution:1e3,original_font_information:{format:0,copyright:"Copyright 2011 The Roboto Project Authors (https://github.com/googlefonts/roboto-classic)",fontFamily:"Roboto",fontSubfamily:"Regular",uniqueID:"3.009;GOOG;Roboto-Regular",fullName:"Roboto Regular",version:"Version 3.009; 2024",postScriptName:"Roboto-Regular",trademark:"Roboto is a trademark of Google.",manufacturer:"Google",designer:"Christian Robertson",manufacturerURL:"Google.com",designerURL:"Google.com",licence:"This Font Software is licensed under the SIL Open Font License, Version 1.1. This license is available with a FAQ at: https://openfontlicense.org",licenceURL:"https://openfontlicense.org",unknown1:"Roboto",unknown2:"Weight",unknown3:"Width",unknown4:"Italic",unknown5:"Thin",unknown6:"ExtraLight",unknown7:"Light",unknown8:"Regular",unknown9:"Medium",unknown10:"SemiBold",unknown11:"Bold",unknown12:"ExtraBold",unknown13:"Black",unknown14:"Condensed Thin",unknown15:"Condensed ExtraLight",unknown16:"Condensed Light",unknown17:"Condensed Regular",unknown18:"Condensed Medium",unknown19:"Condensed SemiBold",unknown20:"Condensed Bold",unknown21:"Condensed ExtraBold",unknown22:"Condensed Black",unknown23:"Condensed",unknown24:"Normal",unknown25:"Roman",unknown26:"Roboto-Thin",unknown27:"Roboto-ExtraLight",unknown28:"Roboto-Light",unknown29:"Roboto-Regular",unknown30:"Roboto-Medium",unknown31:"Roboto-SemiBold",unknown32:"Roboto-Bold",unknown33:"Roboto-ExtraBold",unknown34:"Roboto-Black",unknown35:"Roboto-CondensedThin",unknown36:"Roboto-CondensedExtraLight",unknown37:"Roboto-CondensedLight",unknown38:"Roboto-CondensedRegular",unknown39:"Roboto-CondensedMedium",unknown40:"Roboto-CondensedSemiBold",unknown41:"Roboto-CondensedBold",unknown42:"Roboto-CondensedExtraBold",unknown43:"Roboto-CondensedBlack"},cssFontWeight:"normal",cssFontStyle:"normal"};class wx extends cx{constructor(t,e=8){const n=fx;var i=(new gx).parse(vx);super(new yx(t,{font:i,size:e,depth:.2,curveSegments:12}).center(),new qx(n))}}const bx=10,Mx=18,Sx=4,Tx=oe;class Ex extends Al{constructor(t){super(t),this.defaultDPI=90,this.defaultUnit="px"}load(t,e,n,i){const r=this,s=new zl(r.manager);s.setPath(r.path),s.setRequestHeader(r.requestHeader),s.setWithCredentials(r.withCredentials),s.load(t,(function(n){try{e(r.parse(n))}catch(s){i?i(s):console.error(s),r.manager.itemError(t)}}),n,i)}parse(t){const e=this;function n(t,e,n,r,s,a,o,l){if(0==e||0==n)return void t.lineTo(l.x,l.y);r=r*Math.PI/180,e=Math.abs(e),n=Math.abs(n);const h=(o.x-l.x)/2,c=(o.y-l.y)/2,q=Math.cos(r)*h+Math.sin(r)*c,u=-Math.sin(r)*h+Math.cos(r)*c;let d=e*e,m=n*n;const p=q*q,f=u*u,g=p/d+f/m;if(g>1){const t=Math.sqrt(g);d=(e*=t)*e,m=(n*=t)*n}const x=d*f+m*p,_=(d*m-x)/x;let y=Math.sqrt(Math.max(0,_));s===a&&(y=-y);const v=y*e*u/n,w=-y*n*q/e,b=Math.cos(r)*v-Math.sin(r)*w+(o.x+l.x)/2,M=Math.sin(r)*v+Math.cos(r)*w+(o.y+l.y)/2,S=i(1,0,(q-v)/e,(u-w)/n),T=i((q-v)/e,(u-w)/n,(-q-v)/e,(-u-w)/n)%(2*Math.PI);t.currentPath.absellipse(b,M,e,n,S,S+T,0===a,r)}function i(t,e,n,i){const r=t*n+e*i,s=Math.sqrt(t*t+e*e)*Math.sqrt(n*n+i*i);let a=Math.acos(Math.max(-1,Math.min(1,r/s)));return t*i-e*n<0&&(a=-a),a}function r(t,e){e=Object.assign({},e);let n={};if(t.hasAttribute("class")){const e=t.getAttribute("class").split(/\s/).filter(Boolean).map((t=>t.trim()));for(let t=0;t<e.length;t++)n=Object.assign(n,p["."+e[t]])}function i(i,r,s){void 0===s&&(s=function(t){return t.startsWith("url")&&console.warn("SVGLoader: url access in attributes is not implemented."),t}),t.hasAttribute(i)&&(e[r]=s(t.getAttribute(i))),n[i]&&(e[r]=s(n[i])),t.style&&""!==t.style[i]&&(e[r]=s(t.style[i]))}function r(t){return Math.max(0,Math.min(1,h(t)))}function s(t){return Math.max(0,h(t))}return t.hasAttribute("id")&&(n=Object.assign(n,p["#"+t.getAttribute("id")])),i("fill","fill"),i("fill-opacity","fillOpacity",r),i("fill-rule","fillRule"),i("opacity","opacity",r),i("stroke","stroke"),i("stroke-opacity","strokeOpacity",r),i("stroke-width","strokeWidth",s),i("stroke-linejoin","strokeLineJoin"),i("stroke-linecap","strokeLineCap"),i("stroke-miterlimit","strokeMiterLimit",s),i("visibility","visibility"),e}function s(t,e){return t-(e-t)}function a(t,e,n){if("string"!=typeof t)throw new TypeError("Invalid input: "+typeof t);const i={WHITESPACE:/[ \t\r\n]/,DIGIT:/[\d]/,SIGN:/[-+]/,POINT:/\./,COMMA:/,/,EXP:/e/i,FLAGS:/[01]/};let r=0,s=!0,a="",o="";const l=[];function h(t,e,n){const i=new SyntaxError('Unexpected character "'+t+'" at index '+e+".");throw i.partial=n,i}function c(){""!==a&&(""===o?l.push(Number(a)):l.push(Number(a)*Math.pow(10,Number(o)))),a="",o=""}let q;const u=t.length;for(let d=0;d<u;d++)if(q=t[d],Array.isArray(e)&&e.includes(l.length%n)&&i.FLAGS.test(q))r=1,a=q,c();else{if(0===r){if(i.WHITESPACE.test(q))continue;if(i.DIGIT.test(q)||i.SIGN.test(q)){r=1,a=q;continue}if(i.POINT.test(q)){r=2,a=q;continue}i.COMMA.test(q)&&(s&&h(q,d,l),s=!0)}if(1===r){if(i.DIGIT.test(q)){a+=q;continue}if(i.POINT.test(q)){a+=q,r=2;continue}if(i.EXP.test(q)){r=3;continue}i.SIGN.test(q)&&1===a.length&&i.SIGN.test(a[0])&&h(q,d,l)}if(2===r){if(i.DIGIT.test(q)){a+=q;continue}if(i.EXP.test(q)){r=3;continue}i.POINT.test(q)&&"."===a[a.length-1]&&h(q,d,l)}if(3===r){if(i.DIGIT.test(q)){o+=q;continue}if(i.SIGN.test(q)){if(""===o){o+=q;continue}1===o.length&&i.SIGN.test(o)&&h(q,d,l)}}i.WHITESPACE.test(q)?(c(),r=0,s=!1):i.COMMA.test(q)?(c(),r=0,s=!0):i.SIGN.test(q)?(c(),r=1,a=q):i.POINT.test(q)?(c(),r=2,a=q):h(q,d,l)}return c(),l}const o=["mm","cm","in","pt","pc","px"],l={mm:{mm:1,cm:.1,in:1/25.4,pt:72/25.4,pc:6/25.4,px:-1},cm:{mm:10,cm:1,in:1/2.54,pt:72/2.54,pc:6/2.54,px:-1},in:{mm:25.4,cm:2.54,in:1,pt:72,pc:6,px:-1},pt:{mm:25.4/72,cm:2.54/72,in:1/72,pt:1,pc:6/72,px:-1},pc:{mm:25.4/6,cm:2.54/6,in:1/6,pt:12,pc:1,px:-1},px:{px:1}};function h(t){let n,i="px";if("string"==typeof t||t instanceof String)for(let e=0,r=o.length;e<r;e++){const n=o[e];if(t.endsWith(n)){i=n,t=t.substring(0,t.length-n.length);break}}return"px"===i&&"px"!==e.defaultUnit?n=l.in[e.defaultUnit]/e.defaultDPI:(n=l[i][e.defaultUnit],n<0&&(n=l[i].in*e.defaultDPI)),n*parseFloat(t)}function c(t){const e=t.elements;return e[0]*e[4]-e[1]*e[3]<0}function q(t){const e=t.elements,n=e[0]*e[3]+e[1]*e[4];if(0===n)return!1;const i=u(t),r=d(t);return Math.abs(n/(i*r))>Number.EPSILON}function u(t){const e=t.elements;return Math.sqrt(e[0]*e[0]+e[1]*e[1])}function d(t){const e=t.elements;return Math.sqrt(e[3]*e[3]+e[4]*e[4])}const m=[],p={},f=[],g=new De,x=new De,_=new De,y=new De,v=new ke,w=new un,b=new De,M=(new DOMParser).parseFromString(t,"image/svg+xml");!function t(e,i){if(1!==e.nodeType)return;const o=function(t){if(!(t.hasAttribute("transform")||"use"===t.nodeName&&(t.hasAttribute("x")||t.hasAttribute("y"))))return null;const e=function(t){const e=new De,n=g;if("use"===t.nodeName&&(t.hasAttribute("x")||t.hasAttribute("y"))){const n=h(t.getAttribute("x")),i=h(t.getAttribute("y"));e.translate(n,i)}if(t.hasAttribute("transform")){const i=t.getAttribute("transform").split(")");for(let t=i.length-1;t>=0;t--){const r=i[t].trim();if(""===r)continue;const s=r.indexOf("("),o=r.length;if(s>0&&s<o){const t=r.slice(0,s),e=a(r.slice(s+1));switch(n.identity(),t){case"translate":if(e.length>=1){const t=e[0];let i=0;e.length>=2&&(i=e[1]),n.translate(t,i)}break;case"rotate":if(e.length>=1){let t=0,i=0,r=0;t=e[0]*Math.PI/180,e.length>=3&&(i=e[1],r=e[2]),x.makeTranslation(-i,-r),_.makeRotation(t),y.multiplyMatrices(_,x),x.makeTranslation(i,r),n.multiplyMatrices(x,y)}break;case"scale":if(e.length>=1){const t=e[0];let i=t;e.length>=2&&(i=e[1]),n.scale(t,i)}break;case"skewX":1===e.length&&n.set(1,Math.tan(e[0]*Math.PI/180),0,0,1,0,0,0,1);break;case"skewY":1===e.length&&n.set(1,0,0,Math.tan(e[0]*Math.PI/180),1,0,0,0,1);break;case"matrix":6===e.length&&n.set(e[0],e[2],e[4],e[1],e[3],e[5],0,0,1)}}e.premultiply(n)}}return e}(t);f.length>0&&e.premultiply(f[f.length-1]);return b.copy(e),f.push(e),e}(e);let l=!1,M=null;switch(e.nodeName){case"svg":case"g":i=r(e,i);break;case"style":!function(t){if(!t.sheet||!t.sheet.cssRules||!t.sheet.cssRules.length)return;for(let e=0;e<t.sheet.cssRules.length;e++){const n=t.sheet.cssRules[e];if(1!==n.type)continue;const i=n.selectorText.split(/,/gm).filter(Boolean).map((t=>t.trim()));for(let t=0;t<i.length;t++){const e=Object.fromEntries(Object.entries(n.style).filter((([,t])=>""!==t)));p[i[t]]=Object.assign(p[i[t]]||{},e)}}}(e);break;case"path":i=r(e,i),e.hasAttribute("d")&&(M=function(t){const e=new qc,i=new ke,r=new ke,o=new ke;let l=!0,h=!1;const c=t.getAttribute("d");if(""===c||"none"===c)return null;const q=c.match(/[a-df-z][^a-df-z]*/gi);for(let u=0,d=q.length;u<d;u++){const t=q[u],c=t.charAt(0),d=t.slice(1).trim();let m;switch(!0===l&&(h=!0,l=!1),c){case"M":m=a(d);for(let t=0,n=m.length;t<n;t+=2)i.x=m[t+0],i.y=m[t+1],r.x=i.x,r.y=i.y,0===t?e.moveTo(i.x,i.y):e.lineTo(i.x,i.y),0===t&&o.copy(i);break;case"H":m=a(d);for(let t=0,n=m.length;t<n;t++)i.x=m[t],r.x=i.x,r.y=i.y,e.lineTo(i.x,i.y),0===t&&!0===h&&o.copy(i);break;case"V":m=a(d);for(let t=0,n=m.length;t<n;t++)i.y=m[t],r.x=i.x,r.y=i.y,e.lineTo(i.x,i.y),0===t&&!0===h&&o.copy(i);break;case"L":m=a(d);for(let t=0,n=m.length;t<n;t+=2)i.x=m[t+0],i.y=m[t+1],r.x=i.x,r.y=i.y,e.lineTo(i.x,i.y),0===t&&!0===h&&o.copy(i);break;case"C":m=a(d);for(let t=0,n=m.length;t<n;t+=6)e.bezierCurveTo(m[t+0],m[t+1],m[t+2],m[t+3],m[t+4],m[t+5]),r.x=m[t+2],r.y=m[t+3],i.x=m[t+4],i.y=m[t+5],0===t&&!0===h&&o.copy(i);break;case"S":m=a(d);for(let t=0,n=m.length;t<n;t+=4)e.bezierCurveTo(s(i.x,r.x),s(i.y,r.y),m[t+0],m[t+1],m[t+2],m[t+3]),r.x=m[t+0],r.y=m[t+1],i.x=m[t+2],i.y=m[t+3],0===t&&!0===h&&o.copy(i);break;case"Q":m=a(d);for(let t=0,n=m.length;t<n;t+=4)e.quadraticCurveTo(m[t+0],m[t+1],m[t+2],m[t+3]),r.x=m[t+0],r.y=m[t+1],i.x=m[t+2],i.y=m[t+3],0===t&&!0===h&&o.copy(i);break;case"T":m=a(d);for(let t=0,n=m.length;t<n;t+=2){const n=s(i.x,r.x),a=s(i.y,r.y);e.quadraticCurveTo(n,a,m[t+0],m[t+1]),r.x=n,r.y=a,i.x=m[t+0],i.y=m[t+1],0===t&&!0===h&&o.copy(i)}break;case"A":m=a(d,[3,4],7);for(let t=0,s=m.length;t<s;t+=7){if(m[t+5]==i.x&&m[t+6]==i.y)continue;const s=i.clone();i.x=m[t+5],i.y=m[t+6],r.x=i.x,r.y=i.y,n(e,m[t],m[t+1],m[t+2],m[t+3],m[t+4],s,i),0===t&&!0===h&&o.copy(i)}break;case"m":m=a(d);for(let t=0,n=m.length;t<n;t+=2)i.x+=m[t+0],i.y+=m[t+1],r.x=i.x,r.y=i.y,0===t?e.moveTo(i.x,i.y):e.lineTo(i.x,i.y),0===t&&o.copy(i);break;case"h":m=a(d);for(let t=0,n=m.length;t<n;t++)i.x+=m[t],r.x=i.x,r.y=i.y,e.lineTo(i.x,i.y),0===t&&!0===h&&o.copy(i);break;case"v":m=a(d);for(let t=0,n=m.length;t<n;t++)i.y+=m[t],r.x=i.x,r.y=i.y,e.lineTo(i.x,i.y),0===t&&!0===h&&o.copy(i);break;case"l":m=a(d);for(let t=0,n=m.length;t<n;t+=2)i.x+=m[t+0],i.y+=m[t+1],r.x=i.x,r.y=i.y,e.lineTo(i.x,i.y),0===t&&!0===h&&o.copy(i);break;case"c":m=a(d);for(let t=0,n=m.length;t<n;t+=6)e.bezierCurveTo(i.x+m[t+0],i.y+m[t+1],i.x+m[t+2],i.y+m[t+3],i.x+m[t+4],i.y+m[t+5]),r.x=i.x+m[t+2],r.y=i.y+m[t+3],i.x+=m[t+4],i.y+=m[t+5],0===t&&!0===h&&o.copy(i);break;case"s":m=a(d);for(let t=0,n=m.length;t<n;t+=4)e.bezierCurveTo(s(i.x,r.x),s(i.y,r.y),i.x+m[t+0],i.y+m[t+1],i.x+m[t+2],i.y+m[t+3]),r.x=i.x+m[t+0],r.y=i.y+m[t+1],i.x+=m[t+2],i.y+=m[t+3],0===t&&!0===h&&o.copy(i);break;case"q":m=a(d);for(let t=0,n=m.length;t<n;t+=4)e.quadraticCurveTo(i.x+m[t+0],i.y+m[t+1],i.x+m[t+2],i.y+m[t+3]),r.x=i.x+m[t+0],r.y=i.y+m[t+1],i.x+=m[t+2],i.y+=m[t+3],0===t&&!0===h&&o.copy(i);break;case"t":m=a(d);for(let t=0,n=m.length;t<n;t+=2){const n=s(i.x,r.x),a=s(i.y,r.y);e.quadraticCurveTo(n,a,i.x+m[t+0],i.y+m[t+1]),r.x=n,r.y=a,i.x=i.x+m[t+0],i.y=i.y+m[t+1],0===t&&!0===h&&o.copy(i)}break;case"a":m=a(d,[3,4],7);for(let t=0,s=m.length;t<s;t+=7){if(0==m[t+5]&&0==m[t+6])continue;const s=i.clone();i.x+=m[t+5],i.y+=m[t+6],r.x=i.x,r.y=i.y,n(e,m[t],m[t+1],m[t+2],m[t+3],m[t+4],s,i),0===t&&!0===h&&o.copy(i)}break;case"Z":case"z":e.currentPath.autoClose=!0,e.currentPath.curves.length>0&&(i.copy(o),e.currentPath.currentPoint.copy(i),l=!0);break;default:console.warn(t)}h=!1}return e}(e));break;case"rect":i=r(e,i),M=function(t){const e=h(t.getAttribute("x")||0),n=h(t.getAttribute("y")||0),i=h(t.getAttribute("rx")||t.getAttribute("ry")||0),r=h(t.getAttribute("ry")||t.getAttribute("rx")||0),s=h(t.getAttribute("width")),a=h(t.getAttribute("height")),o=.448084975506,l=new qc;l.moveTo(e+i,n),l.lineTo(e+s-i,n),(0!==i||0!==r)&&l.bezierCurveTo(e+s-i*o,n,e+s,n+r*o,e+s,n+r);l.lineTo(e+s,n+a-r),(0!==i||0!==r)&&l.bezierCurveTo(e+s,n+a-r*o,e+s-i*o,n+a,e+s-i,n+a);l.lineTo(e+i,n+a),(0!==i||0!==r)&&l.bezierCurveTo(e+i*o,n+a,e,n+a-r*o,e,n+a-r);l.lineTo(e,n+r),(0!==i||0!==r)&&l.bezierCurveTo(e,n+r*o,e+i*o,n,e+i,n);return l}(e);break;case"polygon":i=r(e,i),M=function(t){function e(t,e,n){const s=h(e),a=h(n);0===r?i.moveTo(s,a):i.lineTo(s,a),r++}const n=/([+-]?\d*\.?\d+(?:e[+-]?\d+)?)(?:,|\s)([+-]?\d*\.?\d+(?:e[+-]?\d+)?)/g,i=new qc;let r=0;return t.getAttribute("points").replace(n,e),i.currentPath.autoClose=!0,i}(e);break;case"polyline":i=r(e,i),M=function(t){function e(t,e,n){const s=h(e),a=h(n);0===r?i.moveTo(s,a):i.lineTo(s,a),r++}const n=/([+-]?\d*\.?\d+(?:e[+-]?\d+)?)(?:,|\s)([+-]?\d*\.?\d+(?:e[+-]?\d+)?)/g,i=new qc;let r=0;return t.getAttribute("points").replace(n,e),i.currentPath.autoClose=!1,i}(e);break;case"circle":i=r(e,i),M=function(t){const e=h(t.getAttribute("cx")||0),n=h(t.getAttribute("cy")||0),i=h(t.getAttribute("r")||0),r=new Ha;r.absarc(e,n,i,0,2*Math.PI);const s=new qc;return s.subPaths.push(r),s}(e);break;case"ellipse":i=r(e,i),M=function(t){const e=h(t.getAttribute("cx")||0),n=h(t.getAttribute("cy")||0),i=h(t.getAttribute("rx")||0),r=h(t.getAttribute("ry")||0),s=new Ha;s.absellipse(e,n,i,r,0,2*Math.PI);const a=new qc;return a.subPaths.push(s),a}(e);break;case"line":i=r(e,i),M=function(t){const e=h(t.getAttribute("x1")||0),n=h(t.getAttribute("y1")||0),i=h(t.getAttribute("x2")||0),r=h(t.getAttribute("y2")||0),s=new qc;return s.moveTo(e,n),s.lineTo(i,r),s.currentPath.autoClose=!1,s}(e);break;case"defs":l=!0;break;case"use":i=r(e,i);const o=(e.getAttributeNS("http://www.w3.org/1999/xlink","href")||"").substring(1),c=e.viewportElement.getElementById(o);c?t(c,i):console.warn("SVGLoader: 'use node' references non-existent node id: "+o)}M&&(void 0!==i.fill&&"none"!==i.fill&&M.color.setStyle(i.fill,Tx),function(t,e){function n(t){w.set(t.x,t.y,1).applyMatrix3(e),t.set(w.x,w.y)}function i(t){const n=t.xRadius,i=t.yRadius,r=Math.cos(t.aRotation),s=Math.sin(t.aRotation),a=new un(n*r,n*s,0),o=new un(-i*s,i*r,0),l=a.applyMatrix3(e),h=o.applyMatrix3(e),q=g.set(l.x,h.x,0,l.y,h.y,0,0,0,1),u=x.copy(q).invert(),d=_.copy(u).transpose().multiply(u).elements,m=function(t,e,n){let i,r,s,a,o;const l=t+n,h=t-n,c=Math.sqrt(h*h+4*e*e);l>0?(i=.5*(l+c),o=1/i,r=t*o*n-e*o*e):l<0?r=.5*(l-c):(i=.5*c,r=-.5*c);s=h>0?h+c:h-c;Math.abs(s)>2*Math.abs(e)?(o=-2*e/s,a=1/Math.sqrt(1+o*o),s=o*a):0===Math.abs(e)?(s=1,a=0):(o=-.5*s/e,s=1/Math.sqrt(1+o*o),a=o*s);h>0&&(o=s,s=-a,a=o);return{rt1:i,rt2:r,cs:s,sn:a}}(d[0],d[1],d[4]),p=Math.sqrt(m.rt1),f=Math.sqrt(m.rt2);t.xRadius=1/p,t.yRadius=1/f,t.aRotation=Math.atan2(m.sn,m.cs);if(!((t.aEndAngle-t.aStartAngle)%(2*Math.PI)<Number.EPSILON)){const n=x.set(p,0,0,0,f,0,0,0,1),i=_.set(m.cs,m.sn,0,-m.sn,m.cs,0,0,0,1),r=n.multiply(i).multiply(q),s=t=>{const{x:e,y:n}=new un(Math.cos(t),Math.sin(t),0).applyMatrix3(r);return Math.atan2(n,e)};t.aStartAngle=s(t.aStartAngle),t.aEndAngle=s(t.aEndAngle),c(e)&&(t.aClockwise=!t.aClockwise)}}function r(t){const n=u(e),i=d(e);t.xRadius*=n,t.yRadius*=i;const r=n>Number.EPSILON?Math.atan2(e.elements[1],e.elements[0]):Math.atan2(-e.elements[3],e.elements[4]);t.aRotation+=r,c(e)&&(t.aStartAngle*=-1,t.aEndAngle*=-1,t.aClockwise=!t.aClockwise)}const s=t.subPaths;for(let a=0,o=s.length;a<o;a++){const t=s[a].curves;for(let s=0;s<t.length;s++){const a=t[s];a.isLineCurve?(n(a.v1),n(a.v2)):a.isCubicBezierCurve?(n(a.v0),n(a.v1),n(a.v2),n(a.v3)):a.isQuadraticBezierCurve?(n(a.v0),n(a.v1),n(a.v2)):a.isEllipseCurve&&(v.set(a.aX,a.aY),n(v),a.aX=v.x,a.aY=v.y,q(e)?i(a):r(a))}}}(M,b),m.push(M),M.userData={node:e,style:i});const S=e.childNodes;for(let n=0;n<S.length;n++){const e=S[n];l&&"style"!==e.nodeName&&"defs"!==e.nodeName||t(e,i)}o&&(f.pop(),f.length>0?b.copy(f[f.length-1]):b.identity())}(M.documentElement,{fill:"#000",fillOpacity:1,strokeOpacity:1,strokeWidth:1,strokeLineJoin:"miter",strokeLineCap:"butt",strokeMiterLimit:4});return{paths:m,xml:M.documentElement}}static createShapes(t){const e=999999999,n=0,i=1,r=2,s=3,a=4,o=5,l=6,h={loc:n,t:0};function c(t,e,i,s){const a=t.x,o=e.x,l=i.x,c=s.x,u=t.y,d=e.y,m=i.y,p=s.y,f=(c-l)*(u-m)-(p-m)*(a-l),g=(p-m)*(o-a)-(c-l)*(d-u),x=f/g,_=((o-a)*(u-m)-(d-u)*(a-l))/g;if(0===g&&0!==f||x<=0||x>=1||_<0||_>1)return null;if(0===f&&0===g){for(let l=0;l<2;l++){if(q(0===l?i:s,t,e),h.loc==n){const t=0===l?i:s;return{x:t.x,y:t.y,t:h.t}}if(h.loc==r){return{x:+(a+h.t*(o-a)).toPrecision(10),y:+(u+h.t*(d-u)).toPrecision(10),t:h.t}}}return null}for(let r=0;r<2;r++)if(q(0===r?i:s,t,e),h.loc==n){const t=0===r?i:s;return{x:t.x,y:t.y,t:h.t}}return{x:+(a+x*(o-a)).toPrecision(10),y:+(u+x*(d-u)).toPrecision(10),t:x}}function q(t,e,c){const q=c.x-e.x,u=c.y-e.y,d=t.x-e.x,m=t.y-e.y,p=q*m-d*u;if(t.x===e.x&&t.y===e.y)return h.loc=n,void(h.t=0);if(t.x===c.x&&t.y===c.y)return h.loc=i,void(h.t=1);if(p<-Number.EPSILON)return void(h.loc=s);if(p>Number.EPSILON)return void(h.loc=a);if(q*d<0||u*m<0)return void(h.loc=o);if(Math.sqrt(q*q+u*u)<Math.sqrt(d*d+m*m))return void(h.loc=l);let f;f=0!==q?d/q:m/u,h.loc=r,h.t=f}function u(t,e,n){const i=new ke;e.getCenter(i);const r=[];return n.forEach((e=>{if(e.boundingBox.containsPoint(i)){(function(t,e){const n=[],i=[];for(let r=1;r<t.length;r++){const s=t[r-1],a=t[r];for(let t=1;t<e.length;t++){const r=c(s,a,e[t-1],e[t]);null!==r&&void 0===n.find((t=>t.t<=r.t+Number.EPSILON&&t.t>=r.t-Number.EPSILON))&&(n.push(r),i.push(new ke(r.x,r.y)))}}return i})(t,e.points).forEach((t=>{r.push({identifier:e.identifier,isCW:e.isCW,point:t})}))}})),r.sort(((t,e)=>t.point.x-e.point.x)),r}let d=e,m=-999999999,p=t.subPaths.map((t=>{const n=t.getPoints();let i=-999999999,r=e,s=-999999999,a=e;for(let e=0;e<n.length;e++){const t=n[e];t.y>i&&(i=t.y),t.y<r&&(r=t.y),t.x>s&&(s=t.x),t.x<a&&(a=t.x)}return m<=s&&(m=s+1),d>=a&&(d=a-1),{curves:t.curves,points:n,isCW:Co.isClockWise(n),identifier:-1,boundingBox:new Bh(new ke(a,r),new ke(s,i))}}));p=p.filter((t=>t.points.length>1));for(let x=0;x<p.length;x++)p[x].identifier=x;const f=p.map((e=>function(t,e,n,i,r){null!=r&&""!==r||(r="nonzero");const s=new ke;t.boundingBox.getCenter(s);const a=u([new ke(n,s.y),new ke(i,s.y)],t.boundingBox,e);a.sort(((t,e)=>t.point.x-e.point.x));const o=[],l=[];a.forEach((e=>{e.identifier===t.identifier?o.push(e):l.push(e)}));const h=o[0].point.x,c=[];let q=0;for(;q<l.length&&l[q].point.x<h;)c.length>0&&c[c.length-1]===l[q].identifier?c.pop():c.push(l[q].identifier),q++;if(c.push(t.identifier),"evenodd"===r){const e=c.length%2==0,n=c[c.length-2];return{identifier:t.identifier,isHole:e,for:n}}if("nonzero"===r){let n=!0,i=null,r=null;for(let t=0;t<c.length;t++){const s=c[t];n?(r=e[s].isCW,n=!1,i=s):r!==e[s].isCW&&(r=e[s].isCW,n=!0)}return{identifier:t.identifier,isHole:n,for:i}}console.warn('fill-rule: "'+r+'" is currently not implemented.')}(e,p,d,m,t.userData?t.userData.style.fillRule:void 0))),g=[];return p.forEach((t=>{if(!f[t.identifier].isHole){const e=new no;e.curves=t.curves;f.filter((e=>e.isHole&&e.for===t.identifier)).forEach((t=>{const n=p[t.identifier],i=new Ha;i.curves=n.curves,e.holes.push(i)})),g.push(e)}})),g}static getStrokeStyle(t,e,n,i,r){return{strokeColor:e=void 0!==e?e:"#000",strokeWidth:t=void 0!==t?t:1,strokeLineJoin:n=void 0!==n?n:"miter",strokeLineCap:i=void 0!==i?i:"butt",strokeMiterLimit:r=void 0!==r?r:4}}static pointsToStroke(t,e,n,i){const r=[],s=[],a=[];if(0===Ex.pointsToStrokeWithBuffers(t,e,n,i,r,s,a))return null;const o=new ir;return o.setAttribute("position",new Zi(r,3)),o.setAttribute("normal",new Zi(s,3)),o.setAttribute("uv",new Zi(a,2)),o}static pointsToStrokeWithBuffers(t,e,n,i,r,s,a,o){const l=new ke,h=new ke,c=new ke,q=new ke,u=new ke,d=new ke,m=new ke,p=new ke,f=new ke,g=new ke,x=new ke,_=new ke,y=new ke,v=new ke,w=new ke,b=new ke,M=new ke;n=void 0!==n?n:12,i=void 0!==i?i:.001,o=void 0!==o?o:0;const S=(t=function(t){let e=!1;for(let r=1,s=t.length-1;r<s;r++)if(t[r].distanceTo(t[r+1])<i){e=!0;break}if(!e)return t;const n=[];n.push(t[0]);for(let r=1,s=t.length-1;r<s;r++)t[r].distanceTo(t[r+1])>=i&&n.push(t[r]);return n.push(t[t.length-1]),n}(t)).length;if(S<2)return 0;const T=t[0].equals(t[S-1]);let E,A,C=t[0];const R=e.strokeWidth/2,z=1/(S-1);let I,P,L,N,k=0,D=!1,U=0,O=3*o,F=2*o;B(t[0],t[1],l).multiplyScalar(R),p.copy(t[0]).sub(l),f.copy(t[0]).add(l),g.copy(p),x.copy(f);for(let Y=1;Y<S;Y++){E=t[Y],A=Y===S-1?T?t[1]:void 0:t[Y+1];const n=l;if(B(C,E,n),c.copy(n).multiplyScalar(R),_.copy(E).sub(c),y.copy(E).add(c),I=k+z,P=!1,void 0!==A){B(E,A,h),c.copy(h).multiplyScalar(R),v.copy(E).sub(c),w.copy(E).add(c),L=!0,c.subVectors(A,C),n.dot(c)<0&&(L=!1),1===Y&&(D=L),c.subVectors(A,E),c.normalize();const t=Math.abs(n.dot(c));if(t>Number.EPSILON){const n=R/t;c.multiplyScalar(-n),q.subVectors(E,C),u.copy(q).setLength(n).add(c),b.copy(u).negate();const i=u.length(),r=q.length();q.divideScalar(r),d.subVectors(A,E);const s=d.length();switch(d.divideScalar(s),q.dot(b)<r&&d.dot(b)<s&&(P=!0),M.copy(u).add(E),b.add(E),N=!1,P?L?(w.copy(b),y.copy(b)):(v.copy(b),_.copy(b)):G(),e.strokeLineJoin){case"bevel":W(L,P,I);break;case"round":j(L,P),L?H(E,_,v,I,0):H(E,w,y,I,1);break;default:const t=R*e.strokeMiterLimit/i;if(t<1){if("miter-clip"!==e.strokeLineJoin){W(L,P,I);break}j(L,P),L?(d.subVectors(M,_).multiplyScalar(t).add(_),m.subVectors(M,v).multiplyScalar(t).add(v),V(_,I,0),V(d,I,0),V(E,I,.5),V(E,I,.5),V(d,I,0),V(m,I,0),V(E,I,.5),V(m,I,0),V(v,I,0)):(d.subVectors(M,y).multiplyScalar(t).add(y),m.subVectors(M,w).multiplyScalar(t).add(w),V(y,I,1),V(d,I,1),V(E,I,.5),V(E,I,.5),V(d,I,1),V(m,I,1),V(E,I,.5),V(m,I,1),V(w,I,1))}else P?(L?(V(f,k,1),V(p,k,0),V(M,I,0),V(f,k,1),V(M,I,0),V(b,I,1)):(V(f,k,1),V(p,k,0),V(M,I,1),V(p,k,0),V(b,I,0),V(M,I,1)),L?v.copy(M):w.copy(M)):L?(V(_,I,0),V(M,I,0),V(E,I,.5),V(E,I,.5),V(M,I,0),V(v,I,0)):(V(y,I,1),V(M,I,1),V(E,I,.5),V(E,I,.5),V(M,I,1),V(w,I,1)),N=!0}}else G()}else G();T||Y!==S-1||X(t[0],g,x,L,!0,k),k=I,C=E,p.copy(v),f.copy(w)}if(T){if(P&&r){let t=M,e=b;D!==L&&(t=b,e=M),L?(N||D)&&(e.toArray(r,0),e.toArray(r,9),N&&t.toArray(r,3)):!N&&D||(e.toArray(r,3),e.toArray(r,9),N&&t.toArray(r,0))}}else X(E,_,y,L,!1,I);return U;function B(t,e,n){return n.subVectors(e,t),n.set(-n.y,n.x).normalize()}function V(t,e,n){r&&(r[O]=t.x,r[O+1]=t.y,r[O+2]=0,s&&(s[O]=0,s[O+1]=0,s[O+2]=1),O+=3,a&&(a[F]=e,a[F+1]=n,F+=2)),U+=3}function H(t,e,i,r,s){l.copy(e).sub(t).normalize(),h.copy(i).sub(t).normalize();let a=Math.PI;const o=l.dot(h);Math.abs(o)<1&&(a=Math.abs(Math.acos(o))),a/=n,c.copy(e);for(let l=0,h=n-1;l<h;l++)q.copy(c).rotateAround(t,a),V(c,r,s),V(q,r,s),V(t,r,.5),c.copy(q);V(q,r,s),V(i,r,s),V(t,r,.5)}function G(){V(f,k,1),V(p,k,0),V(_,I,0),V(f,k,1),V(_,I,0),V(y,I,1)}function W(t,e,n){e?t?(V(f,k,1),V(p,k,0),V(_,I,0),V(f,k,1),V(_,I,0),V(b,I,1),V(_,n,0),V(v,n,0),V(b,n,.5)):(V(f,k,1),V(p,k,0),V(y,I,1),V(p,k,0),V(b,I,0),V(y,I,1),V(y,n,1),V(b,n,0),V(w,n,1)):t?(V(_,n,0),V(v,n,0),V(E,n,.5)):(V(y,n,1),V(w,n,0),V(E,n,.5))}function j(t,e){e&&(t?(V(f,k,1),V(p,k,0),V(_,I,0),V(f,k,1),V(_,I,0),V(b,I,1),V(_,k,0),V(E,I,.5),V(b,I,1),V(E,I,.5),V(v,k,0),V(b,I,1)):(V(f,k,1),V(p,k,0),V(y,I,1),V(p,k,0),V(b,I,0),V(y,I,1),V(y,k,1),V(b,I,0),V(E,I,.5),V(E,I,.5),V(b,I,0),V(w,k,1)))}function X(t,n,i,s,o,u){switch(e.strokeLineCap){case"round":o?H(t,i,n,u,.5):H(t,n,i,u,.5);break;case"square":if(o)l.subVectors(n,t),h.set(l.y,-l.x),c.addVectors(l,h).add(t),q.subVectors(h,l).add(t),s?(c.toArray(r,3),q.toArray(r,0),q.toArray(r,9)):(c.toArray(r,3),1===a[7]?q.toArray(r,9):c.toArray(r,9),q.toArray(r,0));else{l.subVectors(i,t),h.set(l.y,-l.x),c.addVectors(l,h).add(t),q.subVectors(h,l).add(t);const e=r.length;s?(c.toArray(r,e-3),q.toArray(r,e-6),q.toArray(r,e-12)):(q.toArray(r,e-6),c.toArray(r,e-3),q.toArray(r,e-12))}}}}}function Ax(t){let e,n,i,r=-1,s=0;for(let h=0;h<t.length;++h){const a=t[h];if(void 0===e&&(e=a.array.constructor),e!==a.array.constructor)return console.error("THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.array must be of consistent array types across matching attributes."),null;if(void 0===n&&(n=a.itemSize),n!==a.itemSize)return console.error("THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.itemSize must be consistent across matching attributes."),null;if(void 0===i&&(i=a.normalized),i!==a.normalized)return console.error("THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.normalized must be consistent across matching attributes."),null;if(-1===r&&(r=a.gpuType),r!==a.gpuType)return console.error("THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.gpuType must be consistent across matching attributes."),null;s+=a.count*n}const a=new e(s),o=new ji(a,n,i);let l=0;for(let h=0;h<t.length;++h){const e=t[h];if(e.isInterleavedBufferAttribute){const t=l/n;for(let i=0,r=e.count;i<r;i++)for(let s=0;s<n;s++){const n=e.getComponent(i,s);o.setComponent(i+t,s,n)}}else a.set(e.array,l);l+=e.count*n}return void 0!==r&&(o.gpuType=r),o}class Cx extends cx{static getGeometries(t,e){let n=(new Ex).parse(t);console.log("SVG data:",n);let i=[];n.paths.forEach((t=>{const e=t.userData.style.fill;if(void 0!==e&&"none"!==e){Ex.createShapes(t).forEach((t=>{let e=new Uo(t);null!==e.index&&(e=e.toNonIndexed()),i.push(e)}))}const n=t.userData.style.stroke;void 0!==n&&"none"!==n&&t.subPaths.forEach((e=>{let n=Ex.pointsToStroke(e.getPoints(),t.userData.style);n&&(null!==n.index&&(n=n.toNonIndexed()),i.push(n))}))}));const r=function(t,e=!1){const n=null!==t[0].index,i=new Set(Object.keys(t[0].attributes)),r=new Set(Object.keys(t[0].morphAttributes)),s={},a={},o=t[0].morphTargetsRelative,l=new ir;let h=0;for(let c=0;c<t.length;++c){const q=t[c];let u=0;if(n!==(null!==q.index))return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+c+". All geometries must have compatible attributes; make sure index attribute exists among all geometries, or in none of them."),null;for(const t in q.attributes){if(!i.has(t))return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+c+'. All geometries must have compatible attributes; make sure "'+t+'" attribute exists among all geometries, or in none of them.'),null;void 0===s[t]&&(s[t]=[]),s[t].push(q.attributes[t]),u++}if(u!==i.size)return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+c+". Make sure all geometries have the same number of attributes."),null;if(o!==q.morphTargetsRelative)return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+c+". .morphTargetsRelative must be consistent throughout all geometries."),null;for(const t in q.morphAttributes){if(!r.has(t))return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+c+". .morphAttributes must be consistent throughout all geometries."),null;void 0===a[t]&&(a[t]=[]),a[t].push(q.morphAttributes[t])}if(e){let t;if(n)t=q.index.count;else{if(void 0===q.attributes.position)return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+c+". The geometry must have either an index or a position attribute"),null;t=q.attributes.position.count}l.addGroup(h,t,c),h+=t}}if(n){let e=0;const n=[];for(let i=0;i<t.length;++i){const r=t[i].index;for(let t=0;t<r.count;++t)n.push(r.getX(t)+e);e+=t[i].attributes.position.count}l.setIndex(n)}for(const c in s){const t=Ax(s[c]);if(!t)return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed while trying to merge the "+c+" attribute."),null;l.setAttribute(c,t)}for(const c in a){const t=a[c][0].length;if(0===t)break;l.morphAttributes=l.morphAttributes||{},l.morphAttributes[c]=[];for(let e=0;e<t;++e){const t=[];for(let i=0;i<a[c].length;++i)t.push(a[c][i][e]);const n=Ax(t);if(!n)return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed while trying to merge the "+c+" morphAttribute."),null;l.morphAttributes[c].push(n)}}return l}(i,!1);r.applyMatrix4((new Vn).makeRotationX(Math.PI)),r.computeBoundingBox();const s=r.boundingBox,a=Math.max(s.max.x-s.min.x,s.max.y-s.min.y);console.log("Icon bounding box maxDimension:",a);const o=e/a;r.computeBoundingSphere();const l=r.boundingSphere;return console.log("Icon bounding sphere:",l),r.scale(o,o,1),r.center(),r}constructor(t,e=Mx){const n=fx;super(Cx.getGeometries(t,e),new qx(n)),console.log("IconShape size:",this.getSize())}}class Rx extends $o{constructor(t){super({color:t,opacity:.5,transparent:!0,shininess:60,specular:6710886,emissive:4473924,emissiveIntensity:.6})}}const zx={steps:2,depth:5,bevelEnabled:!0,bevelThickness:.025,bevelSize:.075,bevelOffset:0,bevelSegments:1};class Ix extends cx{constructor(t,e,n){if(!(t instanceof no))throw new TypeError("shape must be an instance of THREE.Shape");if("number"!=typeof e)throw new TypeError("height must be a number.");if(!(n instanceof Li))throw new TypeError("color must be an instance of THREE.Color.");const i={...zx,depth:e};super(new Io(t,i),new Rx(n)),this.type="ValueBarShape"}}const Px=1,Lx=10,Nx=8.5,kx=6,Dx=14;class Ux extends cx{constructor(t){const e=Lx,n=Nx,i=kx,r=Dx,s=Px/2,a=px,o=mx;var l=new no;t[0].y==t[1].y&&t[0].x<t[1].x&&(l.moveTo(t[0].x,t[0].y+s),l.lineTo(t[0].x,t[0].y-s)),t[0].y==t[1].y&&t[0].x>t[1].x&&(l.moveTo(t[0].x,t[0].y-s),l.lineTo(t[0].x,t[0].y+s)),t[0].x==t[1].x&&t[0].y<t[1].y&&(l.moveTo(t[0].x-s,t[0].y),l.lineTo(t[0].x+s,t[0].y)),t[0].x==t[1].x&&t[0].y>t[1].y&&(l.moveTo(t[0].x+s,t[0].y),l.lineTo(t[0].x-s,t[0].y));for(var h=1;h<t.length-1;h++)t[h-1].y==t[h].y&&(t[h-1].x<t[h].x?t[h].y<t[h+1].y?(l.lineTo(t[h].x+s-e,t[h].y-s),l.quadraticCurveTo(t[h].x+s,t[h].y-s,t[h].x+s,t[h].y-s+e)):(l.lineTo(t[h].x-s-n,t[h].y-s),l.quadraticCurveTo(t[h].x-s,t[h].y-s,t[h].x-s,t[h].y-s-n)):t[h].y<t[h+1].y?(l.lineTo(t[h].x+s+n,t[h].y+s),l.quadraticCurveTo(t[h].x+s,t[h].y+s,t[h].x+s,t[h].y+s+n)):(l.lineTo(t[h].x-s+e,t[h].y+s),l.quadraticCurveTo(t[h].x-s,t[h].y-s,t[h].x-s,t[h].y+s-e))),t[h-1].x==t[h].x&&(t[h-1].y<t[h].y?t[h].x<t[h+1].x?(l.lineTo(t[h].x+s,t[h].y-s-n),l.quadraticCurveTo(t[h].x+s,t[h].y-s,t[h].x+s+n,t[h].y-s)):(l.lineTo(t[h].x+s,t[h].y+s-e),l.quadraticCurveTo(t[h].x+s,t[h].y+s,t[h].x+s-e,t[h].y+s)):t[h].x<t[h+1].x?(l.lineTo(t[h].x-s,t[h].y-s+e),l.quadraticCurveTo(t[h].x-s,t[h].y-s,t[h].x-s+e,t[h].y-s)):(l.lineTo(t[h].x-s,t[h].y+s+n),l.quadraticCurveTo(t[h].x-s,t[h].y+s,t[h].x-s-n,t[h].y+s)));t[t.length-2].y==t[t.length-1].y&&t[t.length-2].x<t[t.length-1].x&&(l.lineTo(t[t.length-1].x-r,t[t.length-1].y-s),l.lineTo(t[t.length-1].x-r,t[t.length-1].y-i),l.lineTo(t[t.length-1].x,t[t.length-1].y),l.lineTo(t[t.length-1].x-r,t[t.length-1].y+i),l.lineTo(t[t.length-1].x-r,t[t.length-1].y+s)),t[t.length-2].y==t[t.length-1].y&&t[t.length-2].x>t[t.length-1].x&&(l.lineTo(t[t.length-1].x+r,t[t.length-1].y+s),l.lineTo(t[t.length-1].x+r,t[t.length-1].y+i),l.lineTo(t[t.length-1].x,t[t.length-1].y),l.lineTo(t[t.length-1].x+r,t[t.length-1].y-i),l.lineTo(t[t.length-1].x+r,t[t.length-1].y-s)),t[t.length-2].x==t[t.length-1].x&&t[t.length-2].y<t[t.length-1].y&&(l.lineTo(t[t.length-1].x+s,t[t.length-1].y-r),l.lineTo(t[t.length-1].x+i,t[t.length-1].y-r),l.lineTo(t[t.length-1].x,t[t.length-1].y),l.lineTo(t[t.length-1].x-i,t[t.length-1].y-r),l.lineTo(t[t.length-1].x-s,t[t.length-1].y-r)),t[t.length-2].x==t[t.length-1].x&&t[t.length-2].y>t[t.length-1].y&&(l.lineTo(t[t.length-1].x-s,t[t.length-1].y+32*r/35),l.lineTo(t[t.length-1].x-i,t[t.length-1].y+32*r/35),l.lineTo(t[t.length-1].x,t[t.length-1].y),l.lineTo(t[t.length-1].x+i,t[t.length-1].y+32*r/35),l.lineTo(t[t.length-1].x+s,t[t.length-1].y+32*r/35));for(h=t.length-2;h>0;h--)t[h+1].y==t[h].y&&(t[h+1].x<t[h].x?t[h].y<t[h-1].y?(l.lineTo(t[h].x+s-n,t[h].y-s),l.quadraticCurveTo(t[h].x+s,t[h].y-s,t[h].x+s,t[h].y-s+n)):(l.lineTo(t[h].x-s-n,t[h].y-s),l.quadraticCurveTo(t[h].x-s,t[h].y-s,t[h].x-s,t[h].y-s-n)):t[h].y<t[h-1].y?(l.lineTo(t[h].x+s+n,t[h].y+s),l.quadraticCurveTo(t[h].x+s,t[h].y+s,t[h].x+s,t[h].y+s+n)):(l.lineTo(t[h].x-s+e,t[h].y+s),l.quadraticCurveTo(t[h].x-s,t[h].y+s,t[h].x-s,t[h].y+s-e))),t[h+1].x==t[h].x&&(t[h+1].y<t[h].y?t[h].x<t[h-1].x?(l.lineTo(t[h].x+s,t[h].y-s-n),l.quadraticCurveTo(t[h].x+s,t[h].y-s,t[h].x+s+n,t[h].y-s)):(l.lineTo(t[h].x+s,t[h].y+s-e),l.quadraticCurveTo(t[h].x+s,t[h].y+s,t[h].x+s-e,t[h].y+s)):t[h].x<t[h-1].x?(l.lineTo(t[h].x-s,t[h].y-s+e),l.quadraticCurveTo(t[h].x-s,t[h].y-s,t[h].x-s+e,t[h].y-s)):(l.lineTo(t[h].x-s,t[h].y+s+n),l.quadraticCurveTo(t[h].x-s,t[h].y+s,t[h].x-s-n,t[h].y+s)));t[0].y==t[1].y&&t[0].x<t[1].x&&l.lineTo(t[0].x,t[0].y+s),t[0].y==t[1].y&&t[0].x>t[1].x&&l.lineTo(t[0].x,t[0].y-s),t[0].x==t[1].x&&t[0].y<t[1].y&&l.lineTo(t[0].x-s,t[0].y),t[0].x==t[1].x&&t[0].y>t[1].y&&l.lineTo(t[0].x+s,t[0].y),super(new Io(l,o),new qx(a))}}class Ox extends pr{constructor(t,e=new Ux,n=null,i=null,r={x:0,y:0},s={x:2,y:2},a=[{x:0,y:1},{x:2,y:1}],o={}){super(e.geometry,e.material),this.elementId=t,this.sourceElement=n,this.targetElement=i,this.shape=e,this.points=[r,...a,s],this.properties=o}setDiagram(t){this.diagram=t}static determinePoints(t,e,n,i){let r=[];return t.x!==e.x&&t.y!==e.y&&((n.startsWith("W")||n.startsWith("E"))&&r.push({x:e.x,y:t.y}),(n.startsWith("N")||n.startsWith("S"))&&r.push({x:t.x,y:e.y})),[t,...r,e]}}class Fx extends pr{constructor(t,e=new ux,n={x:0,y:0}){super(e.geometry,e.material),this.elementId=t,this.type=e.constructor.name,this.parameters={},this.shape=e,this.position.set(n.x,n.y,0),this.width=this.getSize().x,this.height=this.getSize().y,this.texts=[],this.icons=[],this.valueBars=[]}setDiagram(t){this.diagram=t}getSize(){const t=new un;return this.shape.geometry.computeBoundingBox(),this.shape.geometry.boundingBox.getSize(t),t}positionAt(t){return void 0!==t.z?this.position.set(t.x,t.y,t.z):this.position.set(t.x,t.y,0),this.texts.forEach((e=>{const n=e.positionOffset;void 0!==t.z?e.element.position.set(t.x+n.x,t.y+n.y,t.z+n.z):e.element.position.set(t.x+n.x,t.y+n.y,n.z)})),this.icons.forEach((e=>{const n=e.positionOffset;void 0!==t.z?e.element.position.set(t.x+n.x,t.y+n.y,t.z+n.z):e.element.position.set(t.x+n.x,t.y+n.y,n.z)})),this.valueBars.forEach((e=>{const n=e.positionOffset;void 0!==t.z?e.element.position.set(t.x+n.x,t.y+n.y,t.z+n.z):e.element.position.set(t.x+n.x,t.y+n.y,n.z)})),this}setPosition(t,e,n){const i=new un(t,e,n);return this.positionAt(i),this}getPosition(){return this.position}positionRightOf(t){const e=this.diagram.getElementById(t),n=e.getSize().x,i=this.getSize().x;return this.setPosition(e.position.x+n/2+dx+i/2,e.position.y,0),this}positionLeftOf(t){const e=this.diagram.getElementById(t),n=e.getSize().x,i=this.getSize().x;return this.setPosition(e.position.x-n/2-dx-i/2,e.position.y,0),this}positionUpOf(t){const e=this.diagram.getElementById(t),n=e.getSize().y,i=this.getSize().y;return this.setPosition(e.position.x,e.position.y+n/2+dx+i/2,0),this}positionDownOf(t){const e=this.diagram.getElementById(t),n=e.getSize().y,i=this.getSize().y;return this.setPosition(e.position.x,e.position.y-n/2-dx-i/2,0),this}positionUpLeftOf(t){const e=this.diagram.getElementById(t),n=e.getSize().x,i=e.getSize().y,r=this.getSize().x,s=this.getSize().y;return this.setPosition(e.position.x-n/2-dx-r/2,e.position.y+i/2+dx+s/2,0),this}positionDownLeftOf(t){const e=this.diagram.getElementById(t),n=e.getSize().x,i=e.getSize().y,r=this.getSize().x,s=this.getSize().y;return this.setPosition(e.position.x-n/2-dx-r/2,e.position.y-i/2-dx-s/2,0),this}positionUpRightOf(t){const e=this.diagram.getElementById(t),n=e.getSize().x,i=e.getSize().y,r=this.getSize().x,s=this.getSize().y;return this.setPosition(e.position.x+n/2+dx+r/2,e.position.y+i/2+dx+s/2,0),this}positionDownRightOf(t){const e=this.diagram.getElementById(t),n=e.getSize().x,i=e.getSize().y,r=this.getSize().x,s=this.getSize().y;return this.setPosition(e.position.x+n/2+dx+r/2,e.position.y-i/2-dx-s/2,0),this}getNorthPoint(){return new ke(this.position.x,this.position.y+this.getSize().y/2)}getSouthPoint(){return new ke(this.position.x,this.position.y-this.getSize().y/2)}getEastPoint(){return new ke(this.position.x+this.getSize().x/2,this.position.y)}getWestPoint(){return new ke(this.position.x-this.getSize().x/2,this.position.y)}getNorthEastPoint(){return new ke(this.position.x+this.getSize().x/2,this.position.y+this.getSize().y/2)}getNorthWestPoint(){return new ke(this.position.x-this.getSize().x/2,this.position.y+this.getSize().y/2)}getSouthEastPoint(){return new ke(this.position.x+this.getSize().x/2,this.position.y-this.getSize().y/2)}getSouthWestPoint(){return new ke(this.position.x-this.getSize().x/2,this.position.y-this.getSize().y/2)}getNorthNorthEastPoint(){return new ke(this.position.x+this.getSize().x/4,this.position.y+this.getSize().y/2)}getNorthNorthWestPoint(){return new ke(this.position.x-this.getSize().x/4,this.position.y+this.getSize().y/2)}getNorthEastEastPoint(){return new ke(this.position.x+this.getSize().x/2,this.position.y+this.getSize().y/4)}getNorthWestWestPoint(){return new ke(this.position.x-this.getSize().x/2,this.position.y+this.getSize().y/4)}getSouthSouthEastPoint(){return new ke(this.position.x+this.getSize().x/4,this.position.y-this.getSize().y/2)}getSouthSouthWestPoint(){return new ke(this.position.x-this.getSize().x/4,this.position.y-this.getSize().y/2)}getSouthEastEastPoint(){return new ke(this.position.x+this.getSize().x/2,this.position.y-this.getSize().y/4)}getSouthWestWestPoint(){return new ke(this.position.x-this.getSize().x/2,this.position.y-this.getSize().y/4)}getPointPosition(t){switch(t){case"N":case"north":return this.getNorthPoint();case"S":case"south":return this.getSouthPoint();case"E":case"east":return this.getEastPoint();case"W":case"west":return this.getWestPoint();case"NE":case"northeast":return this.getNorthEastPoint();case"NW":case"northwest":return this.getNorthWestPoint();case"SE":case"southeast":return this.getSouthEastPoint();case"SW":case"southwest":return this.getSouthWestPoint();case"NNE":case"northnortheast":return this.getNorthNorthEastPoint();case"NNW":case"northnorthwest":return this.getNorthNorthWestPoint();case"NEE":case"northeast":return this.getNorthEastEastPoint();case"NWW":case"northwest":return this.getNorthWestWestPoint();case"SSE":case"southsoutheast":return this.getSouthSouthEastPoint();case"SSW":case"southsouthwest":return this.getSouthSouthWestPoint();case"SEE":case"southeast":return this.getSouthEastEastPoint();case"SWW":case"southwest":return this.getSouthWestWestPoint();default:throw new Error(`Unknown position: ${t}`)}}addText(t){const e=new Fx(this.elementId+"_text",new wx(t));return this.diagram.addElement(e).positionAt(this.position),this.texts.push({element:e,positionOffset:new un(0,0,0)}),this}addWrappedText(t,e=new un(0,0,3)){if(!t)return console.warn("addWrappedText: text is null or undefined"),this;let n,i=t.replace(/\s+/g,"\n"),r=new Fx(this.elementId+"_text",new wx(i));for(;;){let t=i.split("\n"),e=1/0,s=-1;for(let n=0;n<t.length-1;n++){let i=t[n].length+t[n+1].length;i<e&&(e=i,s=n)}if(-1===s)break;if(t[s]=t[s]+" "+t[s+1],t.splice(s+1,1),i=t.join("\n"),n=new Fx(this.elementId+"_text",new wx(i)),!(n.getSize().x<=.9*this.getSize().x))break;r=n}return this.diagram.addElement(r).positionAt({x:this.position.x+e.x,y:this.position.y+e.y,z:this.position.z+e.z}),this.texts.push({element:r,positionOffset:e}),this}getTopIconPlaceholder(){return new ke(this.position.x,this.position.y+this.getSize().y/2-bx/2-Sx)}getBottomIconPlaceholder(){return new ke(this.position.x,this.position.y-this.getSize().y/2+bx/2+Sx)}getLeftIconPlaceholder(){return new ke(this.position.x-this.getSize().x/2+bx/2+Sx,this.position.y)}getRightIconPlaceholder(){return new ke(this.position.x+this.getSize().x/2-bx/2-Sx,this.position.y)}getTopLeftIconPlaceholder(){return new ke(this.position.x-this.getSize().x/2+bx/2+Sx,this.position.y+this.getSize().y/2-bx/2-Sx)}getTopRightIconPlaceholder(){return new ke(this.position.x+this.getSize().x/2-bx/2-Sx,this.position.y+this.getSize().y/2-bx/2-Sx)}getBottomLeftIconPlaceholder(){return new ke(this.position.x-this.getSize().x/2+bx/2+Sx,this.position.y-this.getSize().y/2+bx/2+Sx)}getBottomRightIconPlaceholder(){return new ke(this.position.x+this.getSize().x/2-bx/2-Sx,this.position.y-this.getSize().y/2+bx/2+Sx)}getCenterIconPlaceholder(){return new ke(this.position.x,this.position.y)}getIconPlaceholder(t){switch(t){case"top":return this.getTopIconPlaceholder();case"bottom":return this.getBottomIconPlaceholder();case"left":return this.getLeftIconPlaceholder();case"right":return this.getRightIconPlaceholder();case"top-left":return this.getTopLeftIconPlaceholder();case"top-right":return this.getTopRightIconPlaceholder();case"bottom-left":return this.getBottomLeftIconPlaceholder();case"bottom-right":return this.getBottomRightIconPlaceholder();case"center":return this.getCenterIconPlaceholder();default:throw new Error(`Unknown icon position: ${t}`)}}addIcon(t,e="center",n=Mx){let i;"string"==typeof e&&(i=this.getIconPlaceholder(e));const r=new Fx(this.elementId+"_icon_placeholder",new Cx(t,n));return this.diagram.addElement(r).positionAt(i),this.icons.push({element:r,positionOffset:new un(i.x-this.position.x,i.y-this.position.y,0)}),this}addValueBar(t){return this.parameters.value=t,this}connectFrom(t,e,n){if(!this.diagram)throw new Error("Diagram is not set for this element.");const i=this.diagram.getElementById(t);if(!i)throw new Error(`Element with ID ${t} not found.`);const r=i.getPointPosition(e),s=this.getPointPosition(n),a=Ox.determinePoints(r,s,e,n);return this.diagram.addConnector(new Ox(`connector-${i.elementId}-${this.elementId}`,new Ux(a))),this}}class Bx{constructor(t){this.elements=[],this.connectors=[],this.mode="VIEW",this.helpers=!1,this.container=t,this.initScene(),this.initCamera(),this.setHelpers(),this.initRenderer(),this.initLighting(),this.initControls(),this.addEventListeners(),this.animate(),console.log("THREE",Qu),console.log(this)}initScene(){this.scene=new Lr,this.scene.background=new Li(15790320)}initCamera(){const t=this.container.clientWidth/this.container.clientHeight;this.camera=new Er(75,t,.1,2e3),this.camera.position.set(0,0,500),this.camera.updateProjectionMatrix()}setHelpers(){this.axesHelper=new cc(100),this.cameraHelper=new rc(this.camera);this.gridHelper=new Kh(400,50),this.cameraDirection=new un,this.camPositionSpan=document.querySelector("#position"),this.camLookAtSpan=document.querySelector("#lookingAt"),this.helpers=!1}showHelpers(){this.helpers||(this.scene.add(this.axesHelper),this.scene.add(this.cameraHelper),this.scene.add(this.gridHelper),this.helpers=!0)}hideHelpers(){this.helpers&&(this.scene.remove(this.axesHelper),this.scene.remove(this.cameraHelper),this.scene.remove(this.gridHelper),this.helpers=!1)}initRenderer(){this.renderer=new Ku({antialias:!0}),this.renderer.setSize(this.container.clientWidth,this.container.clientHeight),this.container.appendChild(this.renderer.domElement),console.log("initRenderer",this.container,this.renderer.domElement)}initLighting(){const t=new Wl(16777215,4,0,0);let e=Math.abs(-836);t.position.set(1/3*580-290,-836,e),this.scene.add(t),this.spotLight=new Wl(16777215,4,0,0),this.spotLightPosX=0,this.spotLightPosY=-509,this.spotLightPosZ=70,this.scene.add(this.spotLight),this.spotLightDirection=1}initControls(){this.controls=new Ud(this.camera,this.renderer.domElement),this.controls.enableDamping=!0,this.controls.dampingFactor=.1,this.controls.screenSpacePanning=!0,this.controls.zoomToCursor=!0,this.controls.saveState()}addEventListeners(){window.addEventListener("resize",this.onWindowResize.bind(this),!1)}onWindowResize(){const t=this.container.clientWidth,e=this.container.clientHeight;this.camera.aspect=t/e,this.camera.updateProjectionMatrix(),this.renderer.setSize(t,e)}animate(){this.tween&&this.tween.update(),requestAnimationFrame(this.animate.bind(this)),this.controls.update(),this.renderer.render(this.scene,this.camera),this.spotLightPosX>500&&(this.spotLightDirection=-1,this.spotLightPosX=500),this.spotLightPosX<-500&&(this.spotLightDirection=1,this.spotLightPosX=-500),this.spotLightPosX+=10*this.spotLightDirection,this.spotLight.position.set(this.spotLightPosX,this.spotLightPosY,this.spotLightPosZ)}reset(){this.hideHelpers(),this.controls.reset(),this.setMode("VIEW"),this.fitScreen()}arrange(){if(0===this.scene.children.length)return void console.warn("Scene is empty. Cannot calculate center.");const t=(new pn).setFromObject(this.scene).getCenter(new un),e=new un(-t.x,-t.y,-t.z);this.scene.children.forEach((t=>{t instanceof pi&&t.position.add(e)}))}calculateOptimalZoom(){const t=(new pn).setFromObject(this.scene).getSize(new un),e=this.container.clientWidth/this.container.clientHeight,n=Ne.degToRad(this.camera.fov),i=t.x/2/(Math.tan(n/2)*e),r=t.y/2/Math.tan(n/2);return Math.max(i,r)}fitScreen(){const t=1.05*this.calculateOptimalZoom();this.camera.position.set(0,0,t),this.camera.lookAt(0,0,0),this.camera.updateProjectionMatrix(),this.controls.saveState(),this.initialCameraPosition=this.camera.position.clone(),this.initialTarget=this.controls.target.clone()}center(){if(!this.initialCameraPosition||!this.initialTarget)return void console.warn("Initial camera position or target is not defined.");const t={cameraPositionX:this.camera.position.x,cameraPositionY:this.camera.position.y,cameraPositionZ:this.camera.position.z,controlsTargetX:this.controls.target.x,controlsTargetY:this.controls.target.y,controlsTargetZ:this.controls.target.z},e={cameraPositionX:this.initialCameraPosition.x,cameraPositionY:this.initialCameraPosition.y,cameraPositionZ:this.initialCameraPosition.z,controlsTargetX:this.initialTarget.x,controlsTargetY:this.initialTarget.y,controlsTargetZ:this.initialTarget.z},n=this.camera,i=this.controls;this.tween=new ad(t).to(e,1200).easing(td.Quartic.Out).onUpdate((function(){n.position.set(t.cameraPositionX,t.cameraPositionY,t.cameraPositionZ),i.target.set(t.controlsTargetX,t.controlsTargetY,t.controlsTargetZ)})).onComplete((function(){})).start()}rotate(t){if(!this.initialCameraPosition||!this.initialTarget)return void console.warn("Initial camera position or target is not defined.");const e=Math.sqrt(this.initialCameraPosition.y*this.initialCameraPosition.y+this.initialCameraPosition.z*this.initialCameraPosition.z),n={cameraPositionX:this.camera.position.x,cameraPositionY:this.camera.position.y,cameraPositionZ:this.camera.position.z,controlsTargetX:this.controls.target.x,controlsTargetY:this.controls.target.y,controlsTargetZ:this.controls.target.z},i=Ne.degToRad(t),r={cameraPositionX:this.initialCameraPosition.x,cameraPositionY:e*Math.sin(i),cameraPositionZ:e*Math.cos(i),controlsTargetX:this.initialTarget.x,controlsTargetY:this.initialTarget.y,controlsTargetZ:this.initialTarget.z};console.log("rotate() -> from:",n),console.log("rotate() -> to:",r);const s=this.camera,a=this.controls;this.tween=new ad(n).to(r,1200).easing(td.Quartic.Out).onUpdate((function(){s.position.set(n.cameraPositionX,n.cameraPositionY,n.cameraPositionZ),a.target.set(n.controlsTargetX,n.controlsTargetY,n.controlsTargetZ)})).start()}removeValueBars(){for(let t=this.elements.length-1;t>=0;t--){const e=this.elements[t];"ValueBarShape"===e.type&&(e.parent&&e.parent.remove(e),this.scene.remove(e),this.elements.splice(t,1))}}addValueBars(){const t=this.elements.filter((t=>t.parameters&&void 0!==t.parameters.value));if(0===t.length)throw new Error("No elements with `parameters.value` found.");const e=Math.max(...t.map((t=>t.parameters.value))),n=e-0;t.forEach(((t,e)=>{const i=(t.parameters.value-0)/n,r=new Li(`hsl(${(120*i).toString(10)}, 100%, 50%)`);t.addValueBar(100*i,r)}))}setMode(t){switch(this.removeValueBars(),this.mode=t,t){case"EDIT":case"VIEW":this.rotate(0);break;case"ANALYZE":this.rotate(-65);const e=this.elements.filter((t=>t.parameters&&void 0!==t.parameters.value));if(0===e.length)break;const n=e.map((t=>t.parameters.value)),i=Math.max(...n),r=Math.min(...n);console.log(`[Diagram.js] Coloring Range | Min: ${r}, Max: ${i}`),e.forEach((t=>{const e=t.parameters.value,n=0===i?0:e/i*100,s=function(t,e,n){console.log(`Calculating color for: value=${t}, min=${e}, max=${n}`);const i=new Li;if(e===n)return i.setHSL(.25,1,.5),i;let r=(t-e)/(n-e);r=Math.max(0,Math.min(r,1)),console.log(`Calculated Ratio: ${r}`);const s=r*(120/360);return i.setHSL(s,1,.5),i}(e,r,i),a=new Ix(t.shape.getOuterShape(),n,s),o=new Fx(t.elementId+"_bar",a);this.addElement(o).positionAt(t.getPosition()),t.valueBars.push({element:o,positionOffset:new un(0,0,0)})}));break;default:console.warn(`Unknown mode: ${t}`)}}addElement(t,e){return this.elements.push(t),this.scene.add(t),e&&t.position.set(e.x,e.y,0),t.setDiagram(this),t}removeElement(t){const e=this.elements.find((e=>e.id===t));e&&(this.scene.remove(e),this.elements=this.elements.filter((e=>e.id!==t)))}getElementById(t){return this.elements.find((e=>e.elementId===t))}getElements(){return this.elements}addConnector(t){return this.connectors.push(t),this.scene.add(t),t.setDiagram(this),t}clear(){this.elements=[],this.connectors=[],this.scene.children=this.scene.children.filter((t=>t instanceof Zl))}toJSON(){return JSON.stringify(this.elements)}fromJSON(t){this.elements=JSON.parse(t)}export(){const t=JSON.stringify(this.scene.toJSON()),e=new Blob([t],{type:"application/json"}),n=URL.createObjectURL(e),i=document.createElement("a");i.href=n,i.download="diagram.json",i.click(),URL.revokeObjectURL(n)}import(t){console.error("Import method should be implemented by subclasses.")}}const Vx=100,Hx=80,Gx=10,Wx=1,jx=18,Xx=1,Yx=48,Zx=1;class Jx extends cx{constructor(t=Xx){const e=jx,n=px,i=mx;function r(t,e){var n=.552284749831*e;t.moveTo(0,0-e),t.bezierCurveTo(0+n,0-e,0+e,0-n,0+e,0),t.bezierCurveTo(0+e,0+n,0+n,0+e,0,0+e),t.bezierCurveTo(0-n,0+e,0-e,0+n,0-e,0),t.bezierCurveTo(0-e,0-n,0-n,0-e,0,0-e)}var s=new no;r(s,e);const a=s.clone();var o=new Ha;r(o,e-t),s.holes.push(o),super(new Io(s,i),new qx(n)),this.outerShape=a}getOuterShape(){return this.outerShape}}class $x extends cx{constructor(){const t=Vx,e=Hx,n=Wx,i=Gx,r=Gx-n,s=px,a=mx;function o(t,e,n,i){var r=0-e/2,s=0-n/2;t.moveTo(r+i,s),t.lineTo(r+e-i,s),t.quadraticCurveTo(r+e,s,r+e,s+i),t.lineTo(r+e,s+n-i),t.quadraticCurveTo(r+e,s+n,r+e-i,s+n),t.lineTo(r+i,s+n),t.quadraticCurveTo(r,s+n,r,s+n-i),t.lineTo(r,s+i),t.quadraticCurveTo(r,s,r+i,s)}var l=new no;o(l,t,e,i);const h=l.clone();var c=new Ha;o(c,t-2*n,e-2*n,r),l.holes.push(c),super(new Io(l,a),new qx(s)),this.outerShape=h}getOuterShape(){return this.outerShape}}class Kx extends cx{constructor(){const t=Yx,e=Zx,n=px,i=mx;function r(t,e,n){t.moveTo(0-e/2,0),t.lineTo(0,0-e/2),t.lineTo(0+n/2,0),t.lineTo(0,0+e/2),t.lineTo(0-n/2,0)}var s=new no;r(s,t,t);const a=s.clone();var o=new Ha;r(o,t-e*Math.sqrt(2)*2,t-e*Math.sqrt(2)*2),s.holes.push(o),super(new Io(s,i),new qx(n)),this.outerShape=a}getOuterShape(){return this.outerShape}}var Qx,t_,e_,n_={exports:{}};Qx||(Qx=1,t_=n_,e_=e_||function(){var t=[];return{getAll:function(){return t},removeAll:function(){t=[]},add:function(e){t.push(e)},remove:function(e){var n=t.indexOf(e);-1!==n&&t.splice(n,1)},update:function(e,n){if(0===t.length)return!1;var i=0;for(e=void 0!==e?e:e_.now();i<t.length;)t[i].update(e)||n?i++:t.splice(i,1);return!0}}}(),"undefined"==typeof window&&"undefined"!=typeof process?e_.now=function(){var t=process.hrtime();return 1e3*t[0]+t[1]/1e6}:"undefined"!=typeof window&&void 0!==window.performance&&void 0!==window.performance.now?e_.now=window.performance.now.bind(window.performance):void 0!==Date.now?e_.now=Date.now:e_.now=function(){return(new Date).getTime()},e_.Tween=function(t){var e,n=t,i={},r={},s={},a=1e3,o=0,l=!1,h=!1,c=0,q=null,u=e_.Easing.Linear.None,d=e_.Interpolation.Linear,m=[],p=null,f=!1,g=null,x=null,_=null;this.to=function(t,e){return r=t,void 0!==e&&(a=e),this},this.start=function(t){for(var e in e_.add(this),h=!0,f=!1,q=void 0!==t?t:e_.now(),q+=c,r){if(r[e]instanceof Array){if(0===r[e].length)continue;r[e]=[n[e]].concat(r[e])}void 0!==n[e]&&(i[e]=n[e],i[e]instanceof Array==0&&(i[e]*=1),s[e]=i[e]||0)}return this},this.stop=function(){return h?(e_.remove(this),h=!1,null!==_&&_.call(n,n),this.stopChainedTweens(),this):this},this.end=function(){return this.update(q+a),this},this.stopChainedTweens=function(){for(var t=0,e=m.length;t<e;t++)m[t].stop()},this.delay=function(t){return c=t,this},this.repeat=function(t){return o=t,this},this.repeatDelay=function(t){return e=t,this},this.yoyo=function(t){return l=t,this},this.easing=function(t){return u=t,this},this.interpolation=function(t){return d=t,this},this.chain=function(){return m=arguments,this},this.onStart=function(t){return p=t,this},this.onUpdate=function(t){return g=t,this},this.onComplete=function(t){return x=t,this},this.onStop=function(t){return _=t,this},this.update=function(t){var h,_,y;if(t<q)return!0;for(h in!1===f&&(null!==p&&p.call(n,n),f=!0),y=u(_=(_=(t-q)/a)>1?1:_),r)if(void 0!==i[h]){var v=i[h]||0,w=r[h];w instanceof Array?n[h]=d(w,y):("string"==typeof w&&(w="+"===w.charAt(0)||"-"===w.charAt(0)?v+parseFloat(w):parseFloat(w)),"number"==typeof w&&(n[h]=v+(w-v)*y))}if(null!==g&&g.call(n,y),1===_){if(o>0){for(h in isFinite(o)&&o--,s){if("string"==typeof r[h]&&(s[h]=s[h]+parseFloat(r[h])),l){var b=s[h];s[h]=r[h],r[h]=b}i[h]=s[h]}return q=void 0!==e?t+e:t+c,!0}null!==x&&x.call(n,n);for(var M=0,S=m.length;M<S;M++)m[M].start(q+a);return!1}return!0}},e_.Easing={Linear:{None:function(t){return t}},Quadratic:{In:function(t){return t*t},Out:function(t){return t*(2-t)},InOut:function(t){return(t*=2)<1?.5*t*t:-.5*(--t*(t-2)-1)}},Cubic:{In:function(t){return t*t*t},Out:function(t){return--t*t*t+1},InOut:function(t){return(t*=2)<1?.5*t*t*t:.5*((t-=2)*t*t+2)}},Quartic:{In:function(t){return t*t*t*t},Out:function(t){return 1- --t*t*t*t},InOut:function(t){return(t*=2)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2)}},Quintic:{In:function(t){return t*t*t*t*t},Out:function(t){return--t*t*t*t*t+1},InOut:function(t){return(t*=2)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2)}},Sinusoidal:{In:function(t){return 1-Math.cos(t*Math.PI/2)},Out:function(t){return Math.sin(t*Math.PI/2)},InOut:function(t){return.5*(1-Math.cos(Math.PI*t))}},Exponential:{In:function(t){return 0===t?0:Math.pow(1024,t-1)},Out:function(t){return 1===t?1:1-Math.pow(2,-10*t)},InOut:function(t){return 0===t?0:1===t?1:(t*=2)<1?.5*Math.pow(1024,t-1):.5*(2-Math.pow(2,-10*(t-1)))}},Circular:{In:function(t){return 1-Math.sqrt(1-t*t)},Out:function(t){return Math.sqrt(1- --t*t)},InOut:function(t){return(t*=2)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)}},Elastic:{In:function(t){return 0===t?0:1===t?1:-Math.pow(2,10*(t-1))*Math.sin(5*(t-1.1)*Math.PI)},Out:function(t){return 0===t?0:1===t?1:Math.pow(2,-10*t)*Math.sin(5*(t-.1)*Math.PI)+1},InOut:function(t){return 0===t?0:1===t?1:(t*=2)<1?-.5*Math.pow(2,10*(t-1))*Math.sin(5*(t-1.1)*Math.PI):.5*Math.pow(2,-10*(t-1))*Math.sin(5*(t-1.1)*Math.PI)+1}},Back:{In:function(t){var e=1.70158;return t*t*((e+1)*t-e)},Out:function(t){var e=1.70158;return--t*t*((e+1)*t+e)+1},InOut:function(t){var e=2.5949095;return(t*=2)<1?t*t*((e+1)*t-e)*.5:.5*((t-=2)*t*((e+1)*t+e)+2)}},Bounce:{In:function(t){return 1-e_.Easing.Bounce.Out(1-t)},Out:function(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375},InOut:function(t){return t<.5?.5*e_.Easing.Bounce.In(2*t):.5*e_.Easing.Bounce.Out(2*t-1)+.5}}},e_.Interpolation={Linear:function(t,e){var n=t.length-1,i=n*e,r=Math.floor(i),s=e_.Interpolation.Utils.Linear;return e<0?s(t[0],t[1],i):e>1?s(t[n],t[n-1],n-i):s(t[r],t[r+1>n?n:r+1],i-r)},Bezier:function(t,e){for(var n=0,i=t.length-1,r=Math.pow,s=e_.Interpolation.Utils.Bernstein,a=0;a<=i;a++)n+=r(1-e,i-a)*r(e,a)*t[a]*s(i,a);return n},CatmullRom:function(t,e){var n=t.length-1,i=n*e,r=Math.floor(i),s=e_.Interpolation.Utils.CatmullRom;return t[0]===t[n]?(e<0&&(r=Math.floor(i=n*(1+e))),s(t[(r-1+n)%n],t[r],t[(r+1)%n],t[(r+2)%n],i-r)):e<0?t[0]-(s(t[0],t[0],t[1],t[1],-i)-t[0]):e>1?t[n]-(s(t[n],t[n],t[n-1],t[n-1],i-n)-t[n]):s(t[r?r-1:0],t[r],t[n<r+1?n:r+1],t[n<r+2?n:r+2],i-r)},Utils:{Linear:function(t,e,n){return(e-t)*n+t},Bernstein:function(t,e){var n=e_.Interpolation.Utils.Factorial;return n(t)/n(e)/n(t-e)},Factorial:function(){var t=[1];return function(e){var n=1;if(t[e])return t[e];for(var i=e;i>1;i--)n*=i;return t[e]=n,n}}(),CatmullRom:function(t,e,n,i,r){var s=.5*(n-t),a=.5*(i-e),o=r*r;return(2*e-2*n+s+a)*(r*o)+(-3*e+3*n-2*s-a)*o+s*r+e}}},t_.exports=e_);class i_ extends Bx{constructor(t){super(t)}static get Dimensions(){return{DISTANCE_BETWEEN_ELEMENTS:dx,START_EVENT_LINE_WIDTH:1,END_EVENT_LINE_WIDTH:2.4,ICON_SIZE_SMALL:10,ICON_SIZE_MEDIUM:18,ICON_SIZE_LARGE:30}}addStartEvent(t){return this.addElement(new Fx(t,new Jx))}addMessageStartEvent(t){return this.addElement(new Fx(t,new Jx)).addIcon('<?xml version="1.0" encoding="UTF-8" standalone="no"?>\n\x3c!-- Created with Inkscape (http://www.inkscape.org/) --\x3e\n\n<svg\n width="5.2652082mm"\n height="3.5983334mm"\n viewBox="0 0 5.2652084 3.5983335"\n version="1.1"\n id="svg1"\n inkscape:version="1.4 (86a8ad7, 2024-10-11)"\n sodipodi:docname="message-start.svg"\n xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"\n xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"\n xmlns="http://www.w3.org/2000/svg"\n xmlns:svg="http://www.w3.org/2000/svg">\n <sodipodi:namedview\n id="namedview1"\n pagecolor="#505050"\n bordercolor="#eeeeee"\n borderopacity="1"\n inkscape:showpageshadow="0"\n inkscape:pageopacity="0"\n inkscape:pagecheckerboard="0"\n inkscape:deskcolor="#505050"\n inkscape:document-units="mm"\n inkscape:zoom="11.502694"\n inkscape:cx="23.559698"\n inkscape:cy="12.21453"\n inkscape:window-width="2560"\n inkscape:window-height="1009"\n inkscape:window-x="-8"\n inkscape:window-y="-8"\n inkscape:window-maximized="1"\n inkscape:current-layer="svg1" />\n <defs\n id="defs1" />\n <path\n d="M 0.13229166,0.13229167 V 3.4660416 H 5.1329166 V 0.13229166 Z m 0,0 L 2.6326041,1.5610416 5.1329166,0.13229167"\n style="fill:none;stroke:#22242a;stroke-width:0.264583px;stroke-linecap:round;stroke-linejoin:round"\n id="path4" />\n</svg>\n',"center",i_.Dimensions.ICON_SIZE_MEDIUM)}addTimerStartEvent(t){return this.addElement(new Fx(t,new Jx)).addIcon('<?xml version="1.0" encoding="UTF-8" standalone="no"?>\n\x3c!-- Created with Inkscape (http://www.inkscape.org/) --\x3e\n\n<svg\n width="6.3499999mm"\n height="6.3499999mm"\n viewBox="0 0 6.3500001 6.3500001"\n version="1.1"\n id="svg1"\n inkscape:version="1.4 (86a8ad7, 2024-10-11)"\n sodipodi:docname="timer.svg"\n xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"\n xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"\n xmlns="http://www.w3.org/2000/svg"\n xmlns:svg="http://www.w3.org/2000/svg">\n <sodipodi:namedview\n id="namedview1"\n pagecolor="#505050"\n bordercolor="#eeeeee"\n borderopacity="1"\n inkscape:showpageshadow="0"\n inkscape:pageopacity="0"\n inkscape:pagecheckerboard="0"\n inkscape:deskcolor="#505050"\n inkscape:document-units="mm"\n inkscape:zoom="11.502694"\n inkscape:cx="-3.2166378"\n inkscape:cy="17.169891"\n inkscape:window-width="2560"\n inkscape:window-height="1009"\n inkscape:window-x="-8"\n inkscape:window-y="-8"\n inkscape:window-maximized="1"\n inkscape:current-layer="layer1" />\n <defs\n id="defs1" />\n <g\n inkscape:label="Layer 1"\n inkscape:groupmode="layer"\n id="layer1"\n transform="translate(-129.24896,-55.430208)">\n <g\n id="g1">\n <circle\n cx="132.42397"\n cy="58.605209"\n r="2.9104166"\n style="fill:none;stroke:#22242a;stroke-width:0.529167px;stroke-linecap:round;stroke-linejoin:round"\n id="circle8" />\n <path\n d="m 132.42396,58.605208 0.59531,-1.984375 m -0.59531,1.984375 1.38906,0.396875"\n style="fill:none;stroke:#22242a;stroke-width:0.529167px;stroke-linecap:round;stroke-linejoin:round"\n id="path8" />\n <path\n d="m 132.42396,58.605208 m 0,1.984375 v 0.595312"\n style="fill:none;stroke:#22242a;stroke-width:0.264583px;stroke-linecap:round;stroke-linejoin:round"\n id="path9" />\n <path\n d="m 132.42396,58.605208 m -0.99219,1.718519 -0.29766,0.515556"\n style="fill:none;stroke:#22242a;stroke-width:0.264583px;stroke-linecap:round;stroke-linejoin:round"\n id="path10" />\n <path\n d="m 132.42396,58.605208 m -1.71852,0.992188 -0.51555,0.297656"\n style="fill:none;stroke:#22242a;stroke-width:0.264583px;stroke-linecap:round;stroke-linejoin:round"\n id="path11" />\n <path\n d="m 132.42396,58.605208 m -1.98437,0 h -0.59532"\n style="fill:none;stroke:#22242a;stroke-width:0.264583px;stroke-linecap:round;stroke-linejoin:round"\n id="path12" />\n <path\n d="m 132.42396,58.605208 m -1.71852,-0.992187 -0.51555,-0.297657"\n style="fill:none;stroke:#22242a;stroke-width:0.264583px;stroke-linecap:round;stroke-linejoin:round"\n id="path13" />\n <path\n d="m 132.42396,58.605208 m -0.99218,-1.718519 -0.29766,-0.515556"\n style="fill:none;stroke:#22242a;stroke-width:0.264583px;stroke-linecap:round;stroke-linejoin:round"\n id="path14" />\n <path\n d="m 132.42396,58.605208 m 0,-1.984375 v -0.595312"\n style="fill:none;stroke:#22242a;stroke-width:0.264583px;stroke-linecap:round;stroke-linejoin:round"\n id="path15" />\n <path\n d="m 132.42396,58.605208 m 0.99219,-1.718519 0.29766,-0.515556"\n style="fill:none;stroke:#22242a;stroke-width:0.264583px;stroke-linecap:round;stroke-linejoin:round"\n id="path16" />\n <path\n d="m 132.42396,58.605208 m 1.71852,-0.992187 0.51555,-0.297657"\n style="fill:none;stroke:#22242a;stroke-width:0.264583px;stroke-linecap:round;stroke-linejoin:round"\n id="path17" />\n <path\n d="m 132.42396,58.605208 m 1.98437,0 h 0.59532"\n style="fill:none;stroke:#22242a;stroke-width:0.264583px;stroke-linecap:round;stroke-linejoin:round"\n id="path18" />\n <path\n d="m 132.42396,58.605208 m 1.71852,0.992188 0.51555,0.297656"\n style="fill:none;stroke:#22242a;stroke-width:0.264583px;stroke-linecap:round;stroke-linejoin:round"\n id="path19" />\n <path\n d="m 132.42396,58.605208 m 0.99218,1.718519 0.29766,0.515556"\n style="fill:none;stroke:#22242a;stroke-width:0.264583px;stroke-linecap:round;stroke-linejoin:round"\n id="path20" />\n </g>\n </g>\n</svg>\n',"center",i_.Dimensions.ICON_SIZE_LARGE)}addConditionalStartEvent(t){return this.addElement(new Fx(t,new Jx)).addIcon('<?xml version="1.0" encoding="UTF-8" standalone="no"?>\n\x3c!-- Created with Inkscape (http://www.inkscape.org/) --\x3e\n\n<svg\n width="4.1010432mm"\n height="5.0270829mm"\n viewBox="0 0 4.1010433 5.0270831"\n version="1.1"\n id="svg1"\n inkscape:version="1.4 (86a8ad7, 2024-10-11)"\n sodipodi:docname="conditional.svg"\n xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"\n xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"\n xmlns="http://www.w3.org/2000/svg"\n xmlns:svg="http://www.w3.org/2000/svg">\n <sodipodi:namedview\n id="namedview1"\n pagecolor="#505050"\n bordercolor="#eeeeee"\n borderopacity="1"\n inkscape:showpageshadow="0"\n inkscape:pageopacity="0"\n inkscape:pagecheckerboard="0"\n inkscape:deskcolor="#505050"\n inkscape:document-units="mm"\n inkscape:zoom="8.1336326"\n inkscape:cx="2.3359796"\n inkscape:cy="13.216727"\n inkscape:window-width="2560"\n inkscape:window-height="1009"\n inkscape:window-x="-8"\n inkscape:window-y="-8"\n inkscape:window-maximized="1"\n inkscape:current-layer="layer1" />\n <defs\n id="defs1" />\n <g\n inkscape:label="Layer 1"\n inkscape:groupmode="layer"\n id="layer1"\n transform="translate(-156.23646,-112.58021)">\n <path\n d="m 156.36875,112.7125 h 3.83646 v 4.7625 h -3.83646 z m 0.52917,0.79375 h 2.77813 M 156.89792,114.3 h 2.77813 m -2.77813,0.79375 h 2.77813 m -2.77813,0.79375 h 2.77813 m -2.77813,0.79375 h 2.77813 m -2.77813,0.79375 h 2.77813"\n style="fill:none;stroke:#22242a;stroke-width:0.264583px;stroke-linecap:round;stroke-linejoin:round"\n id="path22" />\n </g>\n</svg>\n',"center",i_.Dimensions.ICON_SIZE_MEDIUM)}addSignalStartEvent(t){return this.addElement(new Fx(t,new Jx)).addIcon('<?xml version="1.0" encoding="UTF-8" standalone="no"?>\n\x3c!-- Created with Inkscape (http://www.inkscape.org/) --\x3e\n\n<svg\n width="5.0270643mm"\n height="4.5508189mm"\n viewBox="0 0 5.0270645 4.550819"\n version="1.1"\n id="svg1"\n inkscape:version="1.4 (86a8ad7, 2024-10-11)"\n sodipodi:docname="signal-start.svg"\n xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"\n xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"\n xmlns="http://www.w3.org/2000/svg"\n xmlns:svg="http://www.w3.org/2000/svg">\n <sodipodi:namedview\n id="namedview1"\n pagecolor="#505050"\n bordercolor="#eeeeee"\n borderopacity="1"\n inkscape:showpageshadow="0"\n inkscape:pageopacity="0"\n inkscape:pagecheckerboard="0"\n inkscape:deskcolor="#505050"\n inkscape:document-units="mm"\n inkscape:zoom="8.1336326"\n inkscape:cx="3.31955"\n inkscape:cy="27.72439"\n inkscape:window-width="2560"\n inkscape:window-height="1009"\n inkscape:window-x="-8"\n inkscape:window-y="-8"\n inkscape:window-maximized="1"\n inkscape:current-layer="layer1" />\n <defs\n id="defs1" />\n <g\n inkscape:label="Layer 1"\n inkscape:groupmode="layer"\n id="layer1"\n transform="translate(-122.5021,-95.038348)">\n <path\n d="m 125.01563,95.170625 2.38125,4.28625 h -4.7625 z"\n style="fill:none;stroke:#22242a;stroke-width:0.264583px;stroke-linecap:round;stroke-linejoin:round"\n id="path40" />\n </g>\n</svg>\n',"center",i_.Dimensions.ICON_SIZE_MEDIUM)}addIntermediateEvent(t){return this.addElement(new Fx(t,new Jx)).addIcon('<?xml version="1.0" encoding="UTF-8" standalone="no"?>\n\x3c!-- Created with Inkscape (http://www.inkscape.org/) --\x3e\n\n<svg\n width="8.3343754mm"\n height="8.3343754mm"\n viewBox="0 0 8.3343756 8.3343756"\n version="1.1"\n id="svg1"\n inkscape:version="1.4 (86a8ad7, 2024-10-11)"\n sodipodi:docname="intermediate.svg"\n xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"\n xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"\n xmlns="http://www.w3.org/2000/svg"\n xmlns:svg="http://www.w3.org/2000/svg">\n <sodipodi:namedview\n id="namedview1"\n pagecolor="#505050"\n bordercolor="#eeeeee"\n borderopacity="1"\n inkscape:showpageshadow="0"\n inkscape:pageopacity="0"\n inkscape:pagecheckerboard="0"\n inkscape:deskcolor="#505050"\n inkscape:document-units="mm"\n inkscape:zoom="16.267265"\n inkscape:cx="12.663468"\n inkscape:cy="14.35398"\n inkscape:window-width="2560"\n inkscape:window-height="1009"\n inkscape:window-x="-8"\n inkscape:window-y="-8"\n inkscape:window-maximized="1"\n inkscape:current-layer="layer1" />\n <defs\n id="defs1" />\n <g\n inkscape:label="Layer 1"\n inkscape:groupmode="layer"\n id="layer1"\n transform="translate(207.23489,-211.8651)">\n <circle\n cx="-203.0677"\n cy="216.03229"\n r="3.96875"\n style="fill:none;stroke:#22242a;stroke-width:0.396875px;stroke-linecap:round;stroke-linejoin:round"\n id="circle50" />\n </g>\n</svg>\n',"center",i_.Dimensions.ICON_SIZE_LARGE)}addIntermediateMessageCatchEvent(t){return this.addElement(new Fx(t,new Jx)).addIcon('<?xml version="1.0" encoding="UTF-8" standalone="no"?>\n\x3c!-- Created with Inkscape (http://www.inkscape.org/) --\x3e\n\n<svg\n width="8.3343754mm"\n height="8.3343754mm"\n viewBox="0 0 8.3343756 8.3343756"\n version="1.1"\n id="svg1"\n inkscape:version="1.4 (86a8ad7, 2024-10-11)"\n sodipodi:docname="intermediate-receive.svg"\n xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"\n xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"\n xmlns="http://www.w3.org/2000/svg"\n xmlns:svg="http://www.w3.org/2000/svg">\n <sodipodi:namedview\n id="namedview1"\n pagecolor="#505050"\n bordercolor="#eeeeee"\n borderopacity="1"\n inkscape:showpageshadow="0"\n inkscape:pageopacity="0"\n inkscape:pagecheckerboard="0"\n inkscape:deskcolor="#505050"\n inkscape:document-units="mm"\n inkscape:zoom="11.502694"\n inkscape:cx="21.386294"\n inkscape:cy="10.301934"\n inkscape:window-width="2560"\n inkscape:window-height="1009"\n inkscape:window-x="-8"\n inkscape:window-y="-8"\n inkscape:window-maximized="1"\n inkscape:current-layer="layer1" />\n <defs\n id="defs1" />\n <g\n inkscape:label="Layer 1"\n inkscape:groupmode="layer"\n id="layer1"\n transform="translate(-75.075519,-224.82968)">\n <circle\n cx="79.242706"\n cy="228.99687"\n r="3.96875"\n style="fill:none;stroke:#22242a;stroke-width:0.396875px;stroke-linecap:round;stroke-linejoin:round"\n id="circle53" />\n <path\n d="m 76.718582,227.23474 v 3.33375 h 5.000625 v -3.33375 z m 0,0 2.500312,1.42875 2.500313,-1.42875"\n style="fill:none;stroke:#22242a;stroke-width:0.264583px;stroke-linecap:round;stroke-linejoin:round"\n id="path53" />\n </g>\n</svg>\n',"center",i_.Dimensions.ICON_SIZE_LARGE)}addIntermediateMessageThrowEvent(t){return this.addElement(new Fx(t,new Jx)).addIcon('<?xml version="1.0" encoding="UTF-8" standalone="no"?>\n\x3c!-- Created with Inkscape (http://www.inkscape.org/) --\x3e\n\n<svg\n width="8.3343754mm"\n height="8.3343754mm"\n viewBox="0 0 8.3343756 8.3343756"\n version="1.1"\n id="svg1"\n inkscape:version="1.4 (86a8ad7, 2024-10-11)"\n sodipodi:docname="intermediate-send.svg"\n xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"\n xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"\n xmlns="http://www.w3.org/2000/svg"\n xmlns:svg="http://www.w3.org/2000/svg">\n <sodipodi:namedview\n id="namedview1"\n pagecolor="#505050"\n bordercolor="#eeeeee"\n borderopacity="1"\n inkscape:showpageshadow="0"\n inkscape:pageopacity="0"\n inkscape:pagecheckerboard="0"\n inkscape:deskcolor="#505050"\n inkscape:document-units="mm"\n inkscape:zoom="16"\n inkscape:cx="-5.25"\n inkscape:cy="14.84375"\n inkscape:window-width="2560"\n inkscape:window-height="1009"\n inkscape:window-x="-8"\n inkscape:window-y="-8"\n inkscape:window-maximized="1"\n inkscape:current-layer="path56" />\n <defs\n id="defs1" />\n <g\n inkscape:label="Layer 1"\n inkscape:groupmode="layer"\n id="layer1"\n transform="translate(-232.76718,-160.00678)">\n <circle\n cx="236.93437"\n cy="164.17397"\n r="3.96875"\n style="fill:none;stroke:#22242a;stroke-width:0.396875px;stroke-linecap:round;stroke-linejoin:round"\n id="circle56" />\n <g\n id="path56">\n <path\n style="fill:none;stroke-linecap:round;stroke-linejoin:round;stroke:none"\n d="m 234.41024,162.41183 v 3.33375 h 5.00063 v -3.33375 z m 0,0 2.50032,1.42875"\n id="path1"\n sodipodi:nodetypes="ccccccc" />\n <g\n id="g4"\n transform="translate(201.87036,-55.570754)">\n <path\n d="m 32.666222,218.20322 v 2.97242 h 4.736145 v -2.97242 l -2.302701,1.31413 a 0.13230472,0.13230472 0 0 1 -0.130742,0 z"\n style="baseline-shift:baseline;display:inline;overflow:visible;vector-effect:none;fill:#22242a;fill-opacity:1;stroke-linecap:round;stroke-linejoin:round;enable-background:accumulate;stop-color:#000000;stop-opacity:1"\n id="path4" />\n <path\n d="m 33.033125,218.10761 1.999878,1.14257 2.001945,-1.14257 z"\n style="baseline-shift:baseline;display:inline;overflow:visible;vector-effect:none;fill:#22242a;fill-opacity:1;stroke-linecap:round;stroke-linejoin:round;enable-background:accumulate;stop-color:#000000;stop-opacity:1"\n id="path3" />\n </g>\n </g>\n </g>\n</svg>\n',"center",i_.Dimensions.ICON_SIZE_LARGE)}addIntermediateTimerEvent(t){return this.addElement(new Fx(t,new Jx)).addIcon('<?xml version="1.0" encoding="UTF-8" standalone="no"?>\n\x3c!-- Created with Inkscape (http://www.inkscape.org/) --\x3e\n\n<svg\n width="8.3343754mm"\n height="8.3343754mm"\n viewBox="0 0 8.3343756 8.3343756"\n version="1.1"\n id="svg1"\n inkscape:version="1.4 (86a8ad7, 2024-10-11)"\n sodipodi:docname="intermediate-timer.svg"\n xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"\n xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"\n xmlns="http://www.w3.org/2000/svg"\n xmlns:svg="http://www.w3.org/2000/svg">\n <sodipodi:namedview\n id="namedview1"\n pagecolor="#505050"\n bordercolor="#eeeeee"\n borderopacity="1"\n inkscape:showpageshadow="0"\n inkscape:pageopacity="0"\n inkscape:pagecheckerboard="0"\n inkscape:deskcolor="#505050"\n inkscape:document-units="mm"\n inkscape:zoom="11.502694"\n inkscape:cx="25.298421"\n inkscape:cy="14.561806"\n inkscape:window-width="2560"\n inkscape:window-height="1009"\n inkscape:window-x="-8"\n inkscape:window-y="-8"\n inkscape:window-maximized="1"\n inkscape:current-layer="layer1" />\n <defs\n id="defs1" />\n <g\n inkscape:label="Layer 1"\n inkscape:groupmode="layer"\n id="layer1"\n transform="translate(28.111983,-209.21927)">\n <circle\n cx="-23.944796"\n cy="213.38646"\n r="3.96875"\n style="fill:none;stroke:#22242a;stroke-width:0.396875px;stroke-linecap:round;stroke-linejoin:round"\n id="circle59" />\n <circle\n cx="-23.944796"\n cy="213.38646"\n r="2.9104166"\n style="fill:none;stroke:#22242a;stroke-width:0.529167px;stroke-linecap:round;stroke-linejoin:round"\n id="circle60" />\n <path\n d="m -23.944795,213.38646 0.595312,-1.98438 m -0.595312,1.98438 1.389062,0.39687"\n style="fill:none;stroke:#22242a;stroke-width:0.529167px;stroke-linecap:round;stroke-linejoin:round"\n id="path60" />\n <path\n d="m -23.944795,213.38646 m 0,1.98437 v 0.59532"\n style="fill:none;stroke:#22242a;stroke-width:0.264583px;stroke-linecap:round;stroke-linejoin:round"\n id="path61" />\n <path\n d="m -23.944795,213.38646 m -0.992187,1.71852 -0.297657,0.51555"\n style="fill:none;stroke:#22242a;stroke-width:0.264583px;stroke-linecap:round;stroke-linejoin:round"\n id="path62" />\n <path\n d="m -23.944795,213.38646 m -1.718519,0.99218 -0.515556,0.29766"\n style="fill:none;stroke:#22242a;stroke-width:0.264583px;stroke-linecap:round;stroke-linejoin:round"\n id="path63" />\n <path\n d="m -23.944795,213.38646 m -1.984375,0 h -0.595312"\n style="fill:none;stroke:#22242a;stroke-width:0.264583px;stroke-linecap:round;stroke-linejoin:round"\n id="path64" />\n <path\n d="m -23.944795,213.38646 m -1.718519,-0.99219 -0.515556,-0.29766"\n style="fill:none;stroke:#22242a;stroke-width:0.264583px;stroke-linecap:round;stroke-linejoin:round"\n id="path65" />\n <path\n d="m -23.944795,213.38646 m -0.992187,-1.71852 -0.297657,-0.51555"\n style="fill:none;stroke:#22242a;stroke-width:0.264583px;stroke-linecap:round;stroke-linejoin:round"\n id="path66" />\n <path\n d="m -23.944795,213.38646 m 0,-1.98437 v -0.59532"\n style="fill:none;stroke:#22242a;stroke-width:0.264583px;stroke-linecap:round;stroke-linejoin:round"\n id="path67" />\n <path\n d="m -23.944795,213.38646 m 0.992187,-1.71852 0.297657,-0.51555"\n style="fill:none;stroke:#22242a;stroke-width:0.264583px;stroke-linecap:round;stroke-linejoin:round"\n id="path68" />\n <path\n d="m -23.944795,213.38646 m 1.718519,-0.99218 0.515556,-0.29766"\n style="fill:none;stroke:#22242a;stroke-width:0.264583px;stroke-linecap:round;stroke-linejoin:round"\n id="path69" />\n <path\n d="m -23.944795,213.38646 m 1.984375,0 h 0.595312"\n style="fill:none;stroke:#22242a;stroke-width:0.264583px;stroke-linecap:round;stroke-linejoin:round"\n id="path70" />\n <path\n d="m -23.944795,213.38646 m 1.718519,0.99219 0.515556,0.29766"\n style="fill:none;stroke:#22242a;stroke-width:0.264583px;stroke-linecap:round;stroke-linejoin:round"\n id="path71" />\n <path\n d="m -23.944795,213.38646 m 0.992187,1.71852 0.297657,0.51555"\n style="fill:none;stroke:#22242a;stroke-width:0.264583px;stroke-linecap:round;stroke-linejoin:round"\n id="path72" />\n </g>\n</svg>\n',"center",i_.Dimensions.ICON_SIZE_LARGE)}addIntermediateEscalationEvent(t){return this.addElement(new Fx(t,new Jx)).addIcon('<?xml version="1.0" encoding="UTF-8" standalone="no"?>\n\x3c!-- Created with Inkscape (http://www.inkscape.org/) --\x3e\n\n<svg\n width="8.3343754mm"\n height="8.3343754mm"\n viewBox="0 0 8.3343756 8.3343756"\n version="1.1"\n id="svg1"\n inkscape:version="1.4 (86a8ad7, 2024-10-11)"\n sodipodi:docname="intermediate-escalation.svg"\n xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"\n xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"\n xmlns="http://www.w3.org/2000/svg"\n xmlns:svg="http://www.w3.org/2000/svg">\n <sodipodi:namedview\n id="namedview1"\n pagecolor="#505050"\n bordercolor="#eeeeee"\n borderopacity="1"\n inkscape:showpageshadow="0"\n inkscape:pageopacity="0"\n inkscape:pagecheckerboard="0"\n inkscape:deskcolor="#505050"\n inkscape:document-units="mm"\n inkscape:zoom="11.502694"\n inkscape:cx="-12.779615"\n inkscape:cy="20.386529"\n inkscape:window-width="2560"\n inkscape:window-height="1009"\n inkscape:window-x="-8"\n inkscape:window-y="-8"\n inkscape:window-maximized="1"\n inkscape:current-layer="layer1" />\n <defs\n id="defs1" />\n <g\n inkscape:label="Layer 1"\n inkscape:groupmode="layer"\n id="layer1"\n transform="translate(-371.14427,-181.43802)">\n <circle\n cx="375.31146"\n cy="185.60521"\n r="3.96875"\n style="fill:none;stroke:#22242a;stroke-width:0.396875px;stroke-linecap:round;stroke-linejoin:round"\n id="circle75" />\n <path\n d="m 375.31146,182.74771 2.11667,5.29167 -2.11667,-1.85209 -2.11667,1.85209 z"\n style="fill:#22242a;stroke:#22242a;stroke-width:0.264583px;stroke-linecap:round;stroke-linejoin:round"\n id="path75" />\n </g>\n</svg>\n',"center",i_.Dimensions.ICON_SIZE_LARGE)}addIntermediateConditionalEvent(t){return this.addElement(new Fx(t,new Jx)).addIcon('<?xml version="1.0" encoding="UTF-8" standalone="no"?>\n\x3c!-- Created with Inkscape (http://www.inkscape.org/) --\x3e\n\n<svg\n width="8.3343754mm"\n height="8.3343754mm"\n viewBox="0 0 8.3343756 8.3343756"\n version="1.1"\n id="svg1"\n inkscape:version="1.4 (86a8ad7, 2024-10-11)"\n sodipodi:docname="intermediate-conditional.svg"\n xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"\n xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"\n xmlns="http://www.w3.org/2000/svg"\n xmlns:svg="http://www.w3.org/2000/svg">\n <sodipodi:namedview\n id="namedview1"\n pagecolor="#505050"\n bordercolor="#eeeeee"\n borderopacity="1"\n inkscape:showpageshadow="0"\n inkscape:pageopacity="0"\n inkscape:pagecheckerboard="0"\n inkscape:deskcolor="#505050"\n inkscape:document-units="mm"\n inkscape:zoom="11.502694"\n inkscape:cx="17.561104"\n inkscape:cy="19.864912"\n inkscape:window-width="2560"\n inkscape:window-height="1009"\n inkscape:window-x="-8"\n inkscape:window-y="-8"\n inkscape:window-maximized="1"\n inkscape:current-layer="layer1" />\n <defs\n id="defs1" />\n <g\n inkscape:label="Layer 1"\n inkscape:groupmode="layer"\n id="layer1"\n transform="translate(-91.215099,-208.95468)">\n <circle\n cx="95.382286"\n cy="213.12187"\n r="3.96875"\n style="fill:none;stroke:#22242a;stroke-width:0.396875px;stroke-linecap:round;stroke-linejoin:round"\n id="circle78" />\n <path\n d="m 93.397914,210.60833 h 3.836458 v 4.7625 h -3.836458 z m 0.529167,0.79375 h 2.778125 m -2.778125,0.79375 h 2.778125 m -2.778125,0.79375 h 2.778125 m -2.778125,0.79375 h 2.778125 m -2.778125,0.79375 h 2.778125 m -2.778125,0.79375 h 2.778125"\n style="fill:none;stroke:#22242a;stroke-width:0.264583px;stroke-linecap:round;stroke-linejoin:round"\n id="path78" />\n </g>\n</svg>\n',"center",i_.Dimensions.ICON_SIZE_LARGE)}addIntermediateLinkCatchEvent(t){return this.addElement(new Fx(t,new Jx)).addIcon('<?xml version="1.0" encoding="UTF-8" standalone="no"?>\n\x3c!-- Created with Inkscape (http://www.inkscape.org/) --\x3e\n\n<svg\n width="8.3343754mm"\n height="8.3343754mm"\n viewBox="0 0 8.3343756 8.3343756"\n version="1.1"\n id="svg1"\n inkscape:version="1.4 (86a8ad7, 2024-10-11)"\n sodipodi:docname="intermediate-link-catch.svg"\n xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"\n xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"\n xmlns="http://www.w3.org/2000/svg"\n xmlns:svg="http://www.w3.org/2000/svg">\n <sodipodi:namedview\n id="namedview1"\n pagecolor="#505050"\n bordercolor="#eeeeee"\n borderopacity="1"\n inkscape:showpageshadow="0"\n inkscape:pageopacity="0"\n inkscape:pagecheckerboard="0"\n inkscape:deskcolor="#505050"\n inkscape:document-units="mm"\n inkscape:zoom="11.502694"\n inkscape:cx="-16.343997"\n inkscape:cy="17.778444"\n inkscape:window-width="2560"\n inkscape:window-height="1009"\n inkscape:window-x="-8"\n inkscape:window-y="-8"\n inkscape:window-maximized="1"\n inkscape:current-layer="layer1" />\n <defs\n id="defs1" />\n <g\n inkscape:label="Layer 1"\n inkscape:groupmode="layer"\n id="layer1"\n transform="translate(-235.14843,-194.93177)">\n <circle\n cx="239.31561"\n cy="199.09895"\n r="3.96875"\n style="fill:none;stroke:#22242a;stroke-width:0.396875px;stroke-linecap:round;stroke-linejoin:round"\n id="circle81" />\n <path\n d="m 239.98237,196.84153 v 1.17409 h -3.57188 v 1.78594 h 3.57188 v 1.17409 l 2.60449,-2.06706 z"\n style="fill:none;stroke:#22242a;stroke-width:0.264583px;stroke-linecap:round;stroke-linejoin:round"\n id="path81" />\n </g>\n</svg>\n',"center",i_.Dimensions.ICON_SIZE_LARGE)}addIntermediateLinkThrowEvent(t){return this.addElement(new Fx(t,new Jx)).addIcon('<?xml version="1.0" encoding="UTF-8" standalone="no"?>\n\x3c!-- Created with Inkscape (http://www.inkscape.org/) --\x3e\n\n<svg\n width="8.3343754mm"\n height="8.3343754mm"\n viewBox="0 0 8.3343756 8.3343756"\n version="1.1"\n id="svg1"\n inkscape:version="1.4 (86a8ad7, 2024-10-11)"\n sodipodi:docname="intermediate-link-throw.svg"\n xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"\n xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"\n xmlns="http://www.w3.org/2000/svg"\n xmlns:svg="http://www.w3.org/2000/svg">\n <sodipodi:namedview\n id="namedview1"\n pagecolor="#505050"\n bordercolor="#eeeeee"\n borderopacity="1"\n inkscape:showpageshadow="0"\n inkscape:pageopacity="0"\n inkscape:pagecheckerboard="0"\n inkscape:deskcolor="#505050"\n inkscape:document-units="mm"\n inkscape:zoom="11.502694"\n inkscape:cx="32.687996"\n inkscape:cy="14.127126"\n inkscape:window-width="2560"\n inkscape:window-height="1009"\n inkscape:window-x="-8"\n inkscape:window-y="-8"\n inkscape:window-maximized="1"\n inkscape:current-layer="layer1" />\n <defs\n id="defs1" />\n <g\n inkscape:label="Layer 1"\n inkscape:groupmode="layer"\n id="layer1"\n transform="translate(119.65781,-208.95468)">\n <circle\n cx="-115.49062"\n cy="213.12187"\n r="3.96875"\n style="fill:none;stroke:#22242a;stroke-width:0.396875px;stroke-linecap:round;stroke-linejoin:round"\n id="circle84" />\n <path\n d="m -114.82387,210.86444 v 1.17409 h -3.57188 v 1.78594 h 3.57188 v 1.17409 l 2.60449,-2.06706 z"\n style="fill:#22242a;stroke:#22242a;stroke-width:0.264583px;stroke-linecap:round;stroke-linejoin:round"\n id="path84" />\n </g>\n</svg>\n',"center",i_.Dimensions.ICON_SIZE_LARGE)}addIntermediateCompensationEvent(t){return this.addElement(new Fx(t,new Jx)).addIcon('<?xml version="1.0" encoding="UTF-8" standalone="no"?>\n\x3c!-- Created with Inkscape (http://www.inkscape.org/) --\x3e\n\n<svg\n width="8.3343754mm"\n height="8.3343754mm"\n viewBox="0 0 8.3343756 8.3343756"\n version="1.1"\n id="svg1"\n inkscape:version="1.4 (86a8ad7, 2024-10-11)"\n sodipodi:docname="intermediate-compensation.svg"\n xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"\n xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"\n xmlns="http://www.w3.org/2000/svg"\n xmlns:svg="http://www.w3.org/2000/svg">\n <sodipodi:namedview\n id="namedview1"\n pagecolor="#505050"\n bordercolor="#eeeeee"\n borderopacity="1"\n inkscape:showpageshadow="0"\n inkscape:pageopacity="0"\n inkscape:pagecheckerboard="0"\n inkscape:deskcolor="#505050"\n inkscape:document-units="mm"\n inkscape:zoom="11.502694"\n inkscape:cx="55.46527"\n inkscape:cy="20.212657"\n inkscape:window-width="2560"\n inkscape:window-height="1009"\n inkscape:window-x="-8"\n inkscape:window-y="-8"\n inkscape:window-maximized="1"\n inkscape:current-layer="layer1" />\n <defs\n id="defs1" />\n <g\n inkscape:label="Layer 1"\n inkscape:groupmode="layer"\n id="layer1"\n transform="translate(69.65157,-208.95468)">\n <circle\n cx="-65.484383"\n cy="213.12187"\n r="3.96875"\n style="fill:none;stroke:#22242a;stroke-width:0.396875px;stroke-linecap:round;stroke-linejoin:round"\n id="circle87" />\n <path\n d="m -68.151379,213.12187 2.38125,-1.71979 v 3.43958 z m 2.460625,-0.10583 2.301875,-1.61396 v 3.43958 l -2.301875,-1.61396 z"\n style="fill:#22242a;stroke:#22242a;stroke-width:0.264583px;stroke-linecap:round;stroke-linejoin:round"\n id="path87" />\n </g>\n</svg>\n',"center",i_.Dimensions.ICON_SIZE_LARGE)}addIntermediateSignalCatchEvent(t){return this.addElement(new Fx(t,new Jx)).addIcon('<?xml version="1.0" encoding="UTF-8" standalone="no"?>\n\x3c!-- Created with Inkscape (http://www.inkscape.org/) --\x3e\n\n<svg\n width="8.3343754mm"\n height="8.3343754mm"\n viewBox="0 0 8.3343756 8.3343756"\n version="1.1"\n id="svg1"\n inkscape:version="1.4 (86a8ad7, 2024-10-11)"\n sodipodi:docname="intermediate-signal-catch.svg"\n xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"\n xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"\n xmlns="http://www.w3.org/2000/svg"\n xmlns:svg="http://www.w3.org/2000/svg">\n <sodipodi:namedview\n id="namedview1"\n pagecolor="#505050"\n bordercolor="#eeeeee"\n borderopacity="1"\n inkscape:showpageshadow="0"\n inkscape:pageopacity="0"\n inkscape:pagecheckerboard="0"\n inkscape:deskcolor="#505050"\n inkscape:document-units="mm"\n inkscape:zoom="11.502694"\n inkscape:cx="40.164504"\n inkscape:cy="13.083891"\n inkscape:window-width="2560"\n inkscape:window-height="1009"\n inkscape:window-x="-8"\n inkscape:window-y="-8"\n inkscape:window-maximized="1"\n inkscape:current-layer="layer1" />\n <defs\n id="defs1" />\n <g\n inkscape:label="Layer 1"\n inkscape:groupmode="layer"\n id="layer1"\n transform="translate(-0.19843645,-215.30468)">\n <circle\n cx="4.365624"\n cy="219.47186"\n r="3.96875"\n style="fill:none;stroke:#22242a;stroke-width:0.396875px;stroke-linecap:round;stroke-linejoin:round"\n id="circle90" />\n <path\n d="m 4.3656239,216.61437 2.38125,4.28625 h -4.7625 z"\n style="fill:none;stroke:#22242a;stroke-width:0.264583px;stroke-linecap:round;stroke-linejoin:round"\n id="path90" />\n </g>\n</svg>\n',"center",i_.Dimensions.ICON_SIZE_LARGE)}addIntermediateSignalThrowEvent(t){return this.addElement(new Fx(t,new Jx)).addIcon('<?xml version="1.0" encoding="UTF-8" standalone="no"?>\n\x3c!-- Created with Inkscape (http://www.inkscape.org/) --\x3e\n\n<svg\n width="8.3343754mm"\n height="8.3343754mm"\n viewBox="0 0 8.3343756 8.3343756"\n version="1.1"\n id="svg1"\n inkscape:version="1.4 (86a8ad7, 2024-10-11)"\n sodipodi:docname="intermediate-signal-throw.svg"\n xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"\n xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"\n xmlns="http://www.w3.org/2000/svg"\n xmlns:svg="http://www.w3.org/2000/svg">\n <sodipodi:namedview\n id="namedview1"\n pagecolor="#505050"\n bordercolor="#eeeeee"\n borderopacity="1"\n inkscape:showpageshadow="0"\n inkscape:pageopacity="0"\n inkscape:pagecheckerboard="0"\n inkscape:deskcolor="#505050"\n inkscape:document-units="mm"\n inkscape:zoom="8.1336326"\n inkscape:cx="32.334876"\n inkscape:cy="-6.7005731"\n inkscape:window-width="2560"\n inkscape:window-height="1009"\n inkscape:window-x="-8"\n inkscape:window-y="-8"\n inkscape:window-maximized="1"\n inkscape:current-layer="layer1" />\n <defs\n id="defs1" />\n <g\n inkscape:label="Layer 1"\n inkscape:groupmode="layer"\n id="layer1"\n transform="translate(-53.115108,-210.80677)">\n <circle\n cx="57.282295"\n cy="214.97395"\n r="3.96875"\n style="fill:none;stroke:#22242a;stroke-width:0.396875px;stroke-linecap:round;stroke-linejoin:round"\n id="circle93" />\n <path\n d="m 57.282297,212.11646 2.38125,4.28625 h -4.7625 z"\n style="fill:#22242a;stroke:#22242a;stroke-width:0.264583px;stroke-linecap:round;stroke-linejoin:round"\n id="path93" />\n </g>\n</svg>\n',"center",i_.Dimensions.ICON_SIZE_LARGE)}addEndEvent(t){return this.addElement(new Fx(t,new Jx(i_.Dimensions.END_EVENT_LINE_WIDTH)))}addMessageEndEvent(t){return this.addElement(new Fx(t,new Jx(i_.Dimensions.END_EVENT_LINE_WIDTH))).addIcon('<?xml version="1.0" encoding="UTF-8" standalone="no"?>\n\x3c!-- Created with Inkscape (http://www.inkscape.org/) --\x3e\n\n<svg\n width="13.49375mm"\n height="13.49375mm"\n viewBox="0 0 13.49375 13.49375"\n version="1.1"\n id="svg1"\n inkscape:version="1.4 (86a8ad7, 2024-10-11)"\n sodipodi:docname="message-end.svg"\n xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"\n xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"\n xmlns="http://www.w3.org/2000/svg"\n xmlns:svg="http://www.w3.org/2000/svg">\n <sodipodi:namedview\n id="namedview1"\n pagecolor="#505050"\n bordercolor="#eeeeee"\n borderopacity="1"\n inkscape:showpageshadow="0"\n inkscape:pageopacity="0"\n inkscape:pagecheckerboard="0"\n inkscape:deskcolor="#505050"\n inkscape:document-units="mm"\n inkscape:zoom="32.53453"\n inkscape:cx="25.972405"\n inkscape:cy="22.453067"\n inkscape:window-width="2560"\n inkscape:window-height="1009"\n inkscape:window-x="-8"\n inkscape:window-y="-8"\n inkscape:window-maximized="1"\n inkscape:current-layer="layer1" />\n <defs\n id="defs1" />\n <g\n inkscape:label="Layer 1"\n inkscape:groupmode="layer"\n id="layer1"\n transform="translate(-28.310416,-212.98958)">\n <g\n id="g4">\n <path\n d="m 32.666222,218.20322 v 2.97242 h 4.736145 v -2.97242 l -2.302701,1.31413 a 0.13230472,0.13230472 0 0 1 -0.130742,0 z"\n style="baseline-shift:baseline;display:inline;overflow:visible;vector-effect:none;fill:#22242a;stroke-linecap:round;stroke-linejoin:round;enable-background:accumulate;stop-color:#000000;stop-opacity:1;fill-opacity:1"\n id="path4" />\n <path\n d="m 33.033125,218.10761 1.999878,1.14257 2.001945,-1.14257 z"\n style="baseline-shift:baseline;display:inline;overflow:visible;vector-effect:none;fill:#22242a;stroke-linecap:round;stroke-linejoin:round;enable-background:accumulate;stop-color:#000000;stop-opacity:1;fill-opacity:1"\n id="path3" />\n </g>\n </g>\n</svg>\n',"center",i_.Dimensions.ICON_SIZE_MEDIUM)}addEscalationEndEvent(t){return this.addElement(new Fx(t,new Jx(i_.Dimensions.END_EVENT_LINE_WIDTH))).addIcon('<?xml version="1.0" encoding="UTF-8" standalone="no"?>\n\x3c!-- Created with Inkscape (http://www.inkscape.org/) --\x3e\n\n<svg\n width="4.4978838mm"\n height="5.5561948mm"\n viewBox="0 0 4.4978839 5.5561949"\n version="1.1"\n id="svg1"\n inkscape:version="1.4 (86a8ad7, 2024-10-11)"\n sodipodi:docname="escalation.svg"\n xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"\n xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"\n xmlns="http://www.w3.org/2000/svg"\n xmlns:svg="http://www.w3.org/2000/svg">\n <sodipodi:namedview\n id="namedview1"\n pagecolor="#505050"\n bordercolor="#eeeeee"\n borderopacity="1"\n inkscape:showpageshadow="0"\n inkscape:pageopacity="0"\n inkscape:pagecheckerboard="0"\n inkscape:deskcolor="#505050"\n inkscape:document-units="mm"\n inkscape:zoom="11.502694"\n inkscape:cx="11.040892"\n inkscape:cy="10.910488"\n inkscape:window-width="2560"\n inkscape:window-height="1009"\n inkscape:window-x="-8"\n inkscape:window-y="-8"\n inkscape:window-maximized="1"\n inkscape:current-layer="layer1" />\n <defs\n id="defs1" />\n <g\n inkscape:label="Layer 1"\n inkscape:groupmode="layer"\n id="layer1"\n transform="translate(-152.92918,-91.334188)">\n <path\n d="m 155.17812,91.466457 2.11667,5.291667 -2.11667,-1.852084 -2.11667,1.852084 z"\n style="fill:#22242a;stroke:#22242a;stroke-width:0.264583px;stroke-linecap:round;stroke-linejoin:round"\n id="path31" />\n </g>\n</svg>\n',"center",i_.Dimensions.ICON_SIZE_MEDIUM)}addErrorEndEvent(t){return this.addElement(new Fx(t,new Jx(i_.Dimensions.END_EVENT_LINE_WIDTH))).addIcon('<?xml version="1.0" encoding="UTF-8" standalone="no"?>\n\x3c!-- Created with Inkscape (http://www.inkscape.org/) --\x3e\n\n<svg\n width="5.5032949mm"\n height="5.2628441mm"\n viewBox="0 0 5.5032951 5.2628442"\n version="1.1"\n id="svg1"\n inkscape:version="1.4 (86a8ad7, 2024-10-11)"\n sodipodi:docname="error.svg"\n xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"\n xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"\n xmlns="http://www.w3.org/2000/svg"\n xmlns:svg="http://www.w3.org/2000/svg">\n <sodipodi:namedview\n id="namedview1"\n pagecolor="#505050"\n bordercolor="#eeeeee"\n borderopacity="1"\n inkscape:showpageshadow="0"\n inkscape:pageopacity="0"\n inkscape:pagecheckerboard="0"\n inkscape:deskcolor="#505050"\n inkscape:document-units="mm"\n inkscape:zoom="11.502694"\n inkscape:cx="40.859995"\n inkscape:cy="8.737084"\n inkscape:window-width="2560"\n inkscape:window-height="1009"\n inkscape:window-x="-8"\n inkscape:window-y="-8"\n inkscape:window-maximized="1"\n inkscape:current-layer="layer1" />\n <defs\n id="defs1" />\n <g\n inkscape:label="Layer 1"\n inkscape:groupmode="layer"\n id="layer1"\n transform="translate(24.288738,-155.33712)">\n <path\n d="m -24.156455,160.46768 0.02474,-0.007 1.941829,-2.54284 2.028561,2.37229 1.243621,-4.82082 -1.553289,3.08242 -1.931353,-2.53613 z"\n style="fill:#22242a;stroke:#22242a;stroke-width:0.264583px;stroke-linecap:round;stroke-linejoin:round"\n id="path34" />\n </g>\n</svg>\n',"center",i_.Dimensions.ICON_SIZE_MEDIUM)}addCompensateEndEvent(t){return this.addElement(new Fx(t,new Jx(i_.Dimensions.END_EVENT_LINE_WIDTH))).addIcon('<?xml version="1.0" encoding="UTF-8" standalone="no"?>\n\x3c!-- Created with Inkscape (http://www.inkscape.org/) --\x3e\n\n<svg\n width="5.0270739mm"\n height="3.7041385mm"\n viewBox="0 0 5.027074 3.7041386"\n version="1.1"\n id="svg1"\n inkscape:version="1.4 (86a8ad7, 2024-10-11)"\n sodipodi:docname="compensation.svg"\n xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"\n xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"\n xmlns="http://www.w3.org/2000/svg"\n xmlns:svg="http://www.w3.org/2000/svg">\n <sodipodi:namedview\n id="namedview1"\n pagecolor="#505050"\n bordercolor="#eeeeee"\n borderopacity="1"\n inkscape:showpageshadow="0"\n inkscape:pageopacity="0"\n inkscape:pagecheckerboard="0"\n inkscape:deskcolor="#505050"\n inkscape:document-units="mm"\n inkscape:zoom="8.1336326"\n inkscape:cx="34.547909"\n inkscape:cy="4.3645935"\n inkscape:window-width="2560"\n inkscape:window-height="1009"\n inkscape:window-x="-8"\n inkscape:window-y="-8"\n inkscape:window-maximized="1"\n inkscape:current-layer="layer1" />\n <defs\n id="defs1" />\n <g\n inkscape:label="Layer 1"\n inkscape:groupmode="layer"\n id="layer1"\n transform="translate(-29.347596,-154.91356)">\n <path\n d="m 29.479878,156.76563 2.38125,-1.71979 v 3.43958 z m 2.460625,-0.10583 2.301875,-1.61396 v 3.43958 l -2.301875,-1.61396 z"\n style="fill:#22242a;stroke:#22242a;stroke-width:0.264583px;stroke-linecap:round;stroke-linejoin:round"\n id="path37" />\n </g>\n</svg>\n',"center",i_.Dimensions.ICON_SIZE_MEDIUM)}addSignalEndEvent(t){return this.addElement(new Fx(t,new Jx(i_.Dimensions.END_EVENT_LINE_WIDTH))).addIcon('<?xml version="1.0" encoding="UTF-8" standalone="no"?>\n\x3c!-- Created with Inkscape (http://www.inkscape.org/) --\x3e\n\n<svg\n width="5.0270643mm"\n height="4.5508189mm"\n viewBox="0 0 5.0270645 4.550819"\n version="1.1"\n id="svg1"\n inkscape:version="1.4 (86a8ad7, 2024-10-11)"\n sodipodi:docname="signal-end.svg"\n xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"\n xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"\n xmlns="http://www.w3.org/2000/svg"\n xmlns:svg="http://www.w3.org/2000/svg">\n <sodipodi:namedview\n id="namedview1"\n pagecolor="#505050"\n bordercolor="#eeeeee"\n borderopacity="1"\n inkscape:showpageshadow="0"\n inkscape:pageopacity="0"\n inkscape:pagecheckerboard="0"\n inkscape:deskcolor="#505050"\n inkscape:document-units="mm"\n inkscape:zoom="11.502694"\n inkscape:cx="11.562509"\n inkscape:cy="10.128063"\n inkscape:window-width="2560"\n inkscape:window-height="1009"\n inkscape:window-x="-8"\n inkscape:window-y="-8"\n inkscape:window-maximized="1"\n inkscape:current-layer="layer1" />\n <defs\n id="defs1" />\n <g\n inkscape:label="Layer 1"\n inkscape:groupmode="layer"\n id="layer1"\n transform="translate(-93.92709,-150.86543)">\n <path\n d="m 96.440622,150.99771 2.38125,4.28625 h -4.7625 z"\n style="fill:#22242a;stroke:#22242a;stroke-width:0.264583px;stroke-linecap:round;stroke-linejoin:round"\n id="path43" />\n </g>\n</svg>\n',"center",i_.Dimensions.ICON_SIZE_MEDIUM)}addTerminateEndEvent(t){return this.addElement(new Fx(t,new Jx(i_.Dimensions.END_EVENT_LINE_WIDTH))).addIcon('<?xml version="1.0" encoding="UTF-8" standalone="no"?>\n\x3c!-- Created with Inkscape (http://www.inkscape.org/) --\x3e\n\n<svg\n width="6.3499966mm"\n height="6.3499966mm"\n viewBox="0 0 6.3499967 6.3499967"\n version="1.1"\n id="svg1"\n inkscape:version="1.4 (86a8ad7, 2024-10-11)"\n sodipodi:docname="terminate.svg"\n xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"\n xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"\n xmlns="http://www.w3.org/2000/svg"\n xmlns:svg="http://www.w3.org/2000/svg">\n <sodipodi:namedview\n id="namedview1"\n pagecolor="#505050"\n bordercolor="#eeeeee"\n borderopacity="1"\n inkscape:showpageshadow="0"\n inkscape:pageopacity="0"\n inkscape:pagecheckerboard="0"\n inkscape:deskcolor="#505050"\n inkscape:document-units="mm"\n inkscape:zoom="16.267265"\n inkscape:cx="0.67620462"\n inkscape:cy="9.6820208"\n inkscape:window-width="2560"\n inkscape:window-height="1009"\n inkscape:window-x="-8"\n inkscape:window-y="-8"\n inkscape:window-maximized="1"\n inkscape:current-layer="layer1" />\n <defs\n id="defs1" />\n <g\n inkscape:label="Layer 1"\n inkscape:groupmode="layer"\n id="layer1"\n transform="translate(-148.82811,-151.73855)">\n <circle\n cx="152.00311"\n cy="154.91354"\n r="2.6458333"\n style="fill:#22242a;stroke:#22242a;stroke-width:1.05833px;stroke-linecap:round;stroke-linejoin:round"\n id="circle47" />\n </g>\n</svg>\n',"center",i_.Dimensions.ICON_SIZE_MEDIUM)}addTask(t){return this.addElement(new Fx(t,new $x))}addManualTask(t){return this.addElement(new Fx(t,new $x)).addIcon('<?xml version="1.0" encoding="UTF-8" standalone="no"?>\n<svg\n xmlns:dc="http://purl.org/dc/elements/1.1/"\n xmlns:cc="http://creativecommons.org/ns#"\n xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"\n xmlns:svg="http://www.w3.org/2000/svg"\n xmlns="http://www.w3.org/2000/svg"\n version="1.1"\n id="svg2"\n viewBox="0 0 2000 2000"\n height="2000"\n width="2000">\n <defs\n id="defs4" />\n <metadata\n id="metadata7">\n <rdf:RDF>\n <cc:Work\n rdf:about="">\n <dc:format>image/svg+xml</dc:format>\n <dc:type\n rdf:resource="http://purl.org/dc/dcmitype/StillImage" />\n <dc:title></dc:title>\n <cc:license\n rdf:resource="https://github.com/bpmn-io/bpmn-font/blob/master/LICENSE" />\n <dc:creator>\n <cc:Agent>\n <dc:title>Jörg Dotzki</dc:title>\n </cc:Agent>\n </dc:creator>\n <dc:subject>\n <rdf:Bag>\n <rdf:li>BPMN</rdf:li>\n <rdf:li>bpmn-io</rdf:li>\n <rdf:li>bpmn.io</rdf:li>\n <rdf:li>Font</rdf:li>\n </rdf:Bag>\n </dc:subject>\n </cc:Work>\n </rdf:RDF>\n </metadata>\n <g\n transform="translate(0,947.63784)"\n id="layer1">\n <path\n id="path4135"\n transform="translate(0,-947.63784)"\n d="M 919.37891 382.98828 C 897.07985 382.99534 876.42602 391.24619 858.8125 402.60352 L 858.7832 402.62109 L 858.75586 402.64062 C 764.06211 463.96011 439.8885 688.93075 368.62891 737.8418 L 368.62695 737.84375 L 368.625 737.84375 C 304.25376 782.03986 260.89214 848.74751 235.96289 927.7793 L 235.95898 927.79492 L 235.95508 927.80859 C 210.0027 1010.3241 213.33304 1100.2119 213.58398 1175.4941 L 213.58594 1175.5137 L 213.58594 1175.5332 C 213.84074 1232.2188 215.19212 1281.6884 229.89453 1341.6816 C 229.89553 1341.6866 229.89744 1341.692 229.89844 1341.6973 C 251.2713 1429.4993 292.66639 1493.0333 351.12891 1531.9824 C 409.58875 1570.9297 481.74302 1584.75 562.70312 1585 C 854.98652 1586.0972 1147.4442 1586.4897 1439.8848 1585 L 1439.9102 1585 L 1439.9355 1585 C 1472.1442 1584.7888 1502.8949 1571.2476 1522.0703 1547.3223 C 1541.2443 1523.3988 1549.087 1492.4573 1549.5 1458.5117 C 1549.7909 1435.7437 1546.5893 1414.2247 1539.1934 1395 L 1571.5684 1395 C 1603.0995 1395 1632.0021 1386.016 1652.7207 1367.084 C 1673.4323 1348.1584 1684.0251 1322.4631 1689.5293 1295.4043 L 1689.5293 1295.3965 C 1697.2116 1257.7567 1693.5837 1220.59 1678.6133 1189.4004 C 1711.5589 1186.7389 1740.6465 1174.2976 1759.3535 1151.4941 C 1780.3767 1125.8673 1786.5009 1093.2887 1786.6094 1058.7734 C 1786.7238 1022.74 1777.9802 988.35302 1757.7969 961.00781 C 1737.6137 933.6626 1704.0255 915.05176 1666.2305 914.99805 L 1666.2207 914.99805 L 1666.209 914.99805 C 1652.4498 914.98657 1640.0493 915.00635 1624.4277 914.99805 C 1631.9444 896.25389 1635.2488 875.17154 1635.1797 852.99219 L 1635.1797 852.93555 L 1635.1797 852.87891 C 1634.9519 817.10655 1625.9288 782.92541 1605.6445 755.75195 C 1585.3606 728.57897 1551.8364 709.9987 1514.0586 709.99805 C 1289.6388 709.11253 1067.8072 712.155 879.15625 711.20117 C 888.98683 701.31624 898.53379 691.67619 909.02734 681.24023 C 941.50862 648.93721 972.72655 618.49752 988.85352 597.62891 C 1027.4086 548.00648 1033.1613 480.77723 1000.7031 431.32422 C 983.59029 405.18088 958.49595 387.49228 931.55273 383.81055 C 928.18377 383.35019 924.8448 383.0899 921.54102 383.01172 L 921.54102 383.01367 C 920.81831 382.99657 920.09823 382.98805 919.37891 382.98828 z M 919.92578 453.01562 C 920.69385 453.02416 921.41106 453.07733 922.07422 453.16797 C 927.37949 453.89292 933.05983 455.78817 942.14453 469.67383 L 942.16211 469.69922 L 942.17773 469.72461 C 954.86945 489.05096 954.30896 528.02989 933.55469 554.7168 L 933.51953 554.76172 L 933.48438 554.80664 C 925.93786 564.57639 892.03049 599.42252 859.66602 631.60938 C 827.30154 663.79624 796.53208 693.50491 781.30859 712.05078 C 766.75168 729.78466 772.09283 744.6981 776.04102 754.0332 C 779.9892 763.3683 784.5057 774.26988 804.63867 779.05273 C 810.66655 780.48469 810.99854 780.07253 812.92773 780.20508 C 814.85693 780.33763 816.85106 780.42902 819.19531 780.51367 C 823.88381 780.68297 829.88273 780.81106 837.28906 780.91992 C 1063.754 782.29908 1287.7116 779.67931 1513.998 780 L 1514.0293 780 L 1514.0605 780 C 1531.2724 780 1540.6175 785.65704 1549.5527 797.62695 C 1558.482 809.58885 1565.0212 829.44025 1565.1816 853.2793 C 1565.2476 878.00948 1559.325 893.09925 1552.125 901.41211 C 1544.925 909.72493 1535.2797 914.9327 1514.6504 915 L 1030 915 L 1030 985 L 1514.7422 985 L 1514.791 985 C 1581.2694 985.0062 1616.3318 984.95843 1666.1543 985 C 1683.4616 985.02951 1692.6831 990.66165 1701.4785 1002.5781 C 1710.2778 1014.4998 1716.688 1034.4049 1716.6113 1058.5527 L 1716.6113 1058.5547 C 1716.5303 1084.3774 1711.2652 1099.7505 1705.2363 1107.0996 C 1699.2075 1114.4487 1690.5982 1119.8316 1665.7539 1120.002 C 1657.3241 1120.0598 1596.946 1120.0156 1571.8906 1120.0449 C 1571.4936 1120.0399 1571.105 1120.0032 1570.707 1120.002 C 1390.4805 1119.1514 1210.2524 1120 1030.0254 1120 L 1030 1120 L 1029.9746 1190 L 1030 1190 C 1030.043 1190 1412.5167 1190.2386 1571.3301 1190.0469 C 1591.0301 1190.326 1602.841 1198.2575 1612.2637 1213.6484 C 1621.8272 1229.2694 1626.5869 1253.7579 1620.9434 1281.4043 L 1620.9434 1281.418 L 1620.9434 1281.4316 C 1617.207 1299.8121 1611.5308 1309.9046 1605.5078 1315.4082 C 1599.4848 1320.9118 1591.1733 1325 1571.5742 1325 C 1391.0507 1324.9139 1210.5297 1324.5478 1030.0059 1325 L 1029.9141 1325 L 1030.0059 1395 L 1030.0977 1395 L 1439.4043 1395 L 1439.4199 1395 C 1454.127 1395.0958 1460.6667 1399.0084 1467.3809 1407.9766 C 1474.0951 1416.9447 1479.8203 1433.619 1479.5117 1457.6289 L 1479.5117 1457.6426 L 1479.5117 1457.6543 C 1479.2276 1481.0659 1473.56 1495.9259 1467.4551 1503.543 C 1461.3503 1511.16 1455.0501 1514.8999 1439.4824 1515.002 C 1147.359 1516.4898 855.12644 1516.0987 562.97266 1515.002 L 562.95898 1515.002 L 562.94727 1515.002 C 489.89431 1514.7789 432.49137 1502.0704 389.94727 1473.7266 C 347.39676 1445.3826 316.33958 1400.8581 297.9082 1325.1289 L 297.90039 1325.0996 L 297.89453 1325.0703 C 285.02432 1272.5777 283.83532 1231.06 283.58398 1175.2598 L 283.58398 1175.2188 C 283.32833 1098.6482 281.8595 1015.1692 302.73047 948.81055 C 324.12233 881.00932 358.71817 829.5583 408.24219 795.55469 L 408.24609 795.55273 C 480.37064 746.04796 806.47508 519.89392 896.74609 461.43359 L 896.75 461.43164 C 905.22608 455.9669 912.24926 453.64295 917.46875 453.12891 C 918.3388 453.04322 919.15772 453.00709 919.92578 453.01562 z "\n style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:70;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />\n </g>\n</svg>\n',"top-left",i_.Dimensions.ICON_SIZE_SMALL)}addUserTask(t){return this.addElement(new Fx(t,new $x)).addIcon('<?xml version="1.0" encoding="UTF-8" standalone="no"?>\n<svg\n xmlns:dc="http://purl.org/dc/elements/1.1/"\n xmlns:cc="http://creativecommons.org/ns#"\n xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"\n xmlns:svg="http://www.w3.org/2000/svg"\n xmlns="http://www.w3.org/2000/svg"\n version="1.1"\n id="svg2"\n viewBox="0 0 2000 2000"\n height="2000"\n width="2000">\n <defs\n id="defs4" />\n <metadata\n id="metadata7">\n <rdf:RDF>\n <cc:Work\n rdf:about="">\n <dc:format>image/svg+xml</dc:format>\n <dc:type\n rdf:resource="http://purl.org/dc/dcmitype/StillImage" />\n <dc:title></dc:title>\n <cc:license\n rdf:resource="https://github.com/bpmn-io/bpmn-font/blob/master/LICENSE" />\n <dc:creator>\n <cc:Agent>\n <dc:title>Jörg Dotzki</dc:title>\n </cc:Agent>\n </dc:creator>\n <dc:subject>\n <rdf:Bag>\n <rdf:li>BPMN</rdf:li>\n <rdf:li>bpmn-io</rdf:li>\n <rdf:li>bpmn.io</rdf:li>\n <rdf:li>Font</rdf:li>\n </rdf:Bag>\n </dc:subject>\n </cc:Work>\n </rdf:RDF>\n </metadata>\n <g\n style="display:inline"\n id="layer9">\n <path\n id="path8979-3"\n d="M 991.75,365 C 814.47261,365 687.65259,501.28069 687.29688,656.51367 l 0,0.0449 0,0.043 c 0.0112,46.94485 12.71406,96.48986 32.56054,141.17774 14.33025,32.26709 32.14702,61.93151 53.85742,85.69531 C 644.68593,927.61788 493.52222,1000.2699 417.11719,1143.5293 L 413,1151.25 l 0,463.75 1157.5,0 0,-463.75 -4.1172,-7.7207 c -75.3061,-141.1989 -223.1988,-213.74978 -350.9805,-258.07618 62.3794,-63.43263 80.7808,-145.30578 80.8008,-228.85156 l 0,-0.043 0,-0.0449 C 1295.8474,501.2807 1169.0274,365 991.75,365 Z M 870.70898,530.29883 c 8.19443,0.0206 17.19117,0.29432 27.10938,0.8789 79.02308,4.65771 105.61894,18.88222 126.06254,32.37305 20.4435,13.49083 34.8553,26.33317 88.8828,27.9082 l 0.016,0 0.018,0 c 42.1017,-1.5748 62.3491,-9.0811 76.8691,-17.58398 5.8837,-3.44545 10.8241,-7.02722 15.8867,-10.44727 13.3814,28.68227 20.5671,60.38893 20.6485,93.20313 -0.028,93.43999 -16.0919,158.87652 -101.7676,212.42383 l 8.3809,63.16992 c 17.8327,5.41537 36.2658,11.35733 54.9746,17.87305 2.6128,10.90011 5.6316,25.19633 7.6621,40.39453 2.1271,15.92241 2.9637,32.48881 1.6523,44.92771 -1.3114,12.4389 -5.1734,19.1539 -5.8515,19.8321 -43.5469,43.5468 -120.8464,68.9433 -199.252,68.9433 -78.40557,0 -155.70507,-25.3965 -199.25195,-68.9433 -0.67811,-0.6782 -4.54017,-7.3932 -5.85157,-19.8321 -1.31139,-12.4389 -0.47481,-29.0053 1.65235,-44.92771 2.04162,-15.28211 5.08445,-29.66261 7.70703,-40.58399 18.52194,-6.44112 36.76978,-12.32071 54.42969,-17.68359 l 4.99609,-67.6875 c -4.068,-5.21708 -8.21297,-8.67324 -13.16016,-12.38477 -19.12128,-14.34532 -42.30994,-45.90379 -58.68945,-82.78515 -16.37367,-36.86821 -26.51791,-79.00946 -26.5332,-112.74414 0.10174,-40.44431 10.98577,-79.211 30.97656,-112.69727 3.57689,-1.33139 7.34871,-2.73853 11.58789,-4.13281 14.90781,-4.90324 35.33655,-9.58342 70.8457,-9.49414 z M 719.36133,979.85547 c -0.0629,0.45883 -0.13379,0.90664 -0.19531,1.36719 -2.58689,19.36354 -4.10696,40.44054 -1.88282,61.53714 2.22414,21.0966 7.79068,43.8102 25.96875,61.9882 62.04773,62.0478 155.95092,89.4473 248.74805,89.4473 92.7971,0 186.7003,-27.3995 248.748,-89.4473 18.1781,-18.178 23.7447,-40.8916 25.9688,-61.9882 2.2241,-21.0967 0.7041,-42.1736 -1.8828,-61.53714 -0.051,-0.38161 -0.1102,-0.75238 -0.1621,-1.13282 94.3337,41.36896 185.5148,100.61546 235.8281,189.07426 l 0,375.8359 -167.5,0 0,-265 -70,0 0,265 -544,0 0,-265 -70,0 0,265 -166,0 0,-375.8359 c 50.40811,-88.6256 141.83798,-147.9292 236.36133,-189.30863 z"\n style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:70;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:2.29999995;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />\n </g>\n</svg>\n',"top-left",i_.Dimensions.ICON_SIZE_SMALL)}addScriptTask(t){return this.addElement(new Fx(t,new $x)).addIcon('<?xml version="1.0" encoding="UTF-8" standalone="no"?>\n<svg\n xmlns:dc="http://purl.org/dc/elements/1.1/"\n xmlns:cc="http://creativecommons.org/ns#"\n xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"\n xmlns:svg="http://www.w3.org/2000/svg"\n xmlns="http://www.w3.org/2000/svg"\n version="1.1"\n id="svg2"\n viewBox="0 0 2000 2000"\n height="2000"\n width="2000">\n <defs\n id="defs4" />\n <metadata\n id="metadata7">\n <rdf:RDF>\n <cc:Work\n rdf:about="">\n <dc:format>image/svg+xml</dc:format>\n <dc:type\n rdf:resource="http://purl.org/dc/dcmitype/StillImage" />\n <dc:title></dc:title>\n <cc:license\n rdf:resource="https://github.com/bpmn-io/bpmn-font/blob/master/LICENSE" />\n <dc:creator>\n <cc:Agent>\n <dc:title>Jörg Dotzki</dc:title>\n </cc:Agent>\n </dc:creator>\n <dc:subject>\n <rdf:Bag>\n <rdf:li>BPMN</rdf:li>\n <rdf:li>bpmn-io</rdf:li>\n <rdf:li>bpmn.io</rdf:li>\n <rdf:li>Font</rdf:li>\n </rdf:Bag>\n </dc:subject>\n </cc:Work>\n </rdf:RDF>\n </metadata>\n <g\n style="display:inline"\n transform="translate(0,947.63784)"\n id="layer1" />\n <g\n style="display:inline"\n id="layer3">\n <path\n id="path7110"\n d="M 759.41016 378 L 751.14844 382.9043 L 748.44922 384.50781 C 631.65776 453.72038 551.2844 517.18548 498.22852 579.16016 C 445.09916 641.22062 419.412 703.70808 418.68164 763.94727 C 417.22817 883.82775 505.65392 973.66586 584.10742 1054.0137 C 662.50124 1134.3003 732.43001 1210.0155 739.01172 1272.6777 C 742.36637 1304.6164 734.81689 1336.6966 699.99219 1380.6211 C 665.314 1424.3609 602.37552 1476.7493 501.75195 1535.4062 L 353.19336 1622 L 1270.0469 1622 L 1280.8965 1615.6875 L 1280.9082 1615.6777 C 1387.5436 1553.5161 1459.3849 1496.0867 1505.1621 1438.3477 C 1551.0758 1380.4366 1569.7557 1319.8482 1563.7812 1262.9688 C 1551.9436 1150.2668 1460.136 1068.1422 1382.9531 989.0957 C 1305.7103 909.98783 1243.1007 835.37489 1243.9531 765.07227 C 1244.3835 729.58122 1258.0249 689.98786 1301.1719 639.58789 C 1344.245 589.27401 1416.8675 530.40674 1528.2031 464.42969 L 1528.2031 464.42773 L 1674.0449 378 L 759.41016 378 z M 785.25195 470.91797 L 1349.8945 470.91797 C 1300.1653 507.99629 1260.8461 543.81554 1230.5879 579.16016 C 1177.4586 641.22061 1151.7714 703.70807 1151.041 763.94727 C 1149.5876 883.82876 1238.0176 973.66632 1316.4707 1054.0137 C 1394.8641 1134.2998 1464.7873 1210.0143 1471.3691 1272.6777 C 1474.7238 1304.6165 1467.1762 1336.6966 1432.3516 1380.6211 C 1398.9553 1422.7439 1338.8961 1473.0068 1244.5625 1529.082 L 678.47266 1529.082 C 717.74278 1498.4553 748.94092 1468.4466 772.80273 1438.3496 C 818.71647 1380.4385 837.39619 1319.8501 831.42188 1262.9707 C 819.58425 1150.2687 727.77664 1068.1442 650.59375 989.09766 C 573.35098 909.9898 510.74334 835.37687 511.5957 765.07422 C 512.02602 729.58325 525.66558 689.98982 568.8125 639.58984 C 610.43918 590.96566 680.08673 534.2435 785.25195 470.91797 z M 653.13086 629.39258 L 653.13086 672.3125 L 1094.5293 672.3125 L 1094.5293 629.39258 L 653.13086 629.39258 z M 636.72852 860.56836 L 636.72852 903.48633 L 1093.1133 903.48633 L 1093.1133 860.56836 L 636.72852 860.56836 z M 843.52344 1091.7383 L 843.52344 1134.6562 L 1285.5117 1134.6562 L 1285.5117 1091.7383 L 843.52344 1091.7383 z M 906.7207 1322.9121 L 906.7207 1365.8301 L 1364.707 1365.8301 L 1364.707 1322.9121 L 906.7207 1322.9121 z "\n style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:70;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />\n </g>\n</svg>\n',"top-left",i_.Dimensions.ICON_SIZE_SMALL)}addBusinessRuleTask(t){return this.addElement(new Fx(t,new $x)).addIcon('<?xml version="1.0" encoding="UTF-8" standalone="no"?>\n\x3c!-- Created with Inkscape (http://www.inkscape.org/) --\x3e\n\n<svg\n xmlns:dc="http://purl.org/dc/elements/1.1/"\n xmlns:cc="http://creativecommons.org/ns#"\n xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"\n xmlns:svg="http://www.w3.org/2000/svg"\n xmlns="http://www.w3.org/2000/svg"\n xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"\n xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"\n width="2000"\n height="2000"\n viewBox="0 0 2000 2000"\n id="svg2"\n version="1.1"\n inkscape:version="0.91 r"\n sodipodi:docname="business-rule.svg">\n <defs\n id="defs4" />\n <sodipodi:namedview\n id="base"\n pagecolor="#ffffff"\n bordercolor="#666666"\n borderopacity="1.0"\n inkscape:pageopacity="0.0"\n inkscape:pageshadow="2"\n inkscape:zoom="0.45254834"\n inkscape:cx="811.70031"\n inkscape:cy="1077.9584"\n inkscape:document-units="px"\n inkscape:current-layer="layer1"\n showgrid="true"\n units="px"\n showguides="false"\n inkscape:window-width="1920"\n inkscape:window-height="1028"\n inkscape:window-x="0"\n inkscape:window-y="0"\n inkscape:window-maximized="1">\n <inkscape:grid\n type="xygrid"\n id="grid4008"\n empspacing="20"\n dotted="false" />\n </sodipodi:namedview>\n <metadata\n id="metadata7">\n <rdf:RDF>\n <cc:Work\n rdf:about="">\n <dc:format>image/svg+xml</dc:format>\n <dc:type\n rdf:resource="http://purl.org/dc/dcmitype/StillImage" />\n <dc:title />\n <cc:license\n rdf:resource="https://github.com/bpmn-io/bpmn-font/blob/master/LICENSE" />\n <dc:creator>\n <cc:Agent>\n <dc:title>Jörg Dotzki</dc:title>\n </cc:Agent>\n </dc:creator>\n <dc:subject>\n <rdf:Bag>\n <rdf:li>BPMN</rdf:li>\n <rdf:li>bpmn-io</rdf:li>\n <rdf:li>bpmn.io</rdf:li>\n <rdf:li>Font</rdf:li>\n </rdf:Bag>\n </dc:subject>\n </cc:Work>\n </rdf:RDF>\n </metadata>\n <g\n inkscape:label="Ebene 1"\n inkscape:groupmode="layer"\n id="layer1"\n transform="translate(0,947.63784)">\n <path\n style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:10;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none"\n id="path4135"\n d="m 212.27677,-529.63785 0,382.36913 1574.78513,0 0,-382.36913 z"\n inkscape:connector-curvature="0"\n sodipodi:nodetypes="ccccc" />\n <path\n style="opacity:1;fill:none;fill-opacity:0.28037385;stroke:#000000;stroke-width:70;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none"\n d="m 213.10529,52.362159 0,-581.999999 1573.78941,0 0,581.999999 0,582.000001 -1186.8947,0 0,-790.394 0,790.394 -386.89471,0 0,-401.56446 1573.78941,0 -1573.78941,0 z"\n id="rect4139"\n inkscape:connector-curvature="0"\n sodipodi:nodetypes="ccccccccccscc" />\n </g>\n</svg>\n',"top-left",i_.Dimensions.ICON_SIZE_SMALL)}addServiceTask(t){return this.addElement(new Fx(t,new $x)).addIcon('<?xml version="1.0" encoding="UTF-8" standalone="no"?>\n<svg\n xmlns:dc="http://purl.org/dc/elements/1.1/"\n xmlns:cc="http://creativecommons.org/ns#"\n xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"\n xmlns:svg="http://www.w3.org/2000/svg"\n xmlns="http://www.w3.org/2000/svg"\n width="2000"\n height="2000"\n viewBox="0 0 2000 2000"\n id="svg2"\n version="1.1">\n <defs\n id="defs4" />\n <metadata\n id="metadata7">\n <rdf:RDF>\n <cc:Work\n rdf:about="">\n <dc:format>image/svg+xml</dc:format>\n <dc:type\n rdf:resource="http://purl.org/dc/dcmitype/StillImage" />\n <dc:title></dc:title>\n <cc:license\n rdf:resource="https://github.com/bpmn-io/bpmn-font/blob/master/LICENSE" />\n <dc:creator>\n <cc:Agent>\n <dc:title>Jörg Dotzki</dc:title>\n </cc:Agent>\n </dc:creator>\n <dc:subject>\n <rdf:Bag>\n <rdf:li>BPMN</rdf:li>\n <rdf:li>bpmn-io</rdf:li>\n <rdf:li>bpmn.io</rdf:li>\n <rdf:li>Font</rdf:li>\n </rdf:Bag>\n </dc:subject>\n </cc:Work>\n </rdf:RDF>\n </metadata>\n <g\n id="layer6"\n style="display:inline">\n <path\n id="path4170"\n d="M 825.74609 438.17383 C 825.69979 475.1723 825.7563 512.17163 825.85156 549.16992 C 794.29829 558.09661 765.46524 570.55412 738.23633 585.81445 L 658.6543 507.18945 L 509.84766 656.85742 L 589.42383 735.46875 C 574.05216 763.02029 562.04871 792.29945 553.67188 822.71094 L 440.94727 822.91602 L 440.94727 1033.7051 L 554.84961 1033.2949 C 565.26551 1074.5933 587.93422 1111.7201 610.51172 1144.918 L 610.51172 963.09375 L 510.94727 963.45117 L 510.94727 892.78906 L 610.01562 892.60938 L 615.57617 864.4375 C 623.68569 823.35291 639.74603 784.18805 662.82031 749.14453 L 678.60547 725.17188 L 609.00195 656.41016 L 659.0957 606.02539 L 728.82617 674.91797 L 752.55664 659.08203 C 788.8205 635.15649 828.48451 619.11851 868.03711 610.76562 L 895.99609 604.96094 L 895.74609 508.17578 L 967.71289 508.17578 L 967.15625 604.45703 L 995.58398 604.45703 L 1155.9902 604.45703 C 1138.2768 583.31338 1064.8698 555.79938 1037.4824 548.13281 L 1038.1172 438.17578 C 959.71716 438.17378 898.25174 438.18016 825.74609 438.17383 z M 1024.9043 639.83203 L 1025.1914 750.82422 C 993.63698 759.75091 964.80383 772.20673 937.57422 787.46875 L 857.99023 708.84375 L 709.18359 858.51172 L 788.76172 937.12305 C 773.38937 964.67608 761.38462 993.9543 753.00781 1024.3672 L 640.28516 1024.5703 L 640.28516 1235.3594 L 754.18555 1234.9512 C 763.15098 1266.2082 775.57969 1294.751 790.81055 1321.6973 L 709.31641 1402.873 L 859.78125 1550.752 L 940.98242 1469.9277 C 968.79672 1485.3724 998.3629 1497.3637 1029.0156 1505.709 L 1029.0684 1620.4219 C 1101.4601 1621.0557 1178.5354 1620.7292 1240.4043 1620.7227 L 1240.4043 1504.6523 C 1271.9821 1495.7485 1300.9053 1483.2014 1328.1406 1467.9473 L 1409.2754 1547.9434 L 1558.1797 1398.4629 L 1476.875 1318.3398 C 1492.282 1290.7142 1504.2874 1261.3861 1512.6738 1230.9414 L 1623.0527 1230.2598 L 1623.0527 1019.6738 L 1511.4355 1020.3535 C 1502.4631 989.06652 1490.2142 960.71674 1474.7812 933.5918 L 1551.9023 856.27344 L 1401.5215 708.14258 L 1324.5 785.42773 C 1296.7997 770.10877 1267.3537 758.14537 1236.8203 749.78906 L 1237.4531 639.83203 L 1024.9043 639.83203 z M 1095.084 709.83203 L 1167.0508 709.83203 L 1166.4961 806.11523 L 1194.9219 811.69336 C 1236.1943 819.79239 1275.7525 835.83275 1310.9375 858.76562 L 1334.7617 874.29492 L 1401.9785 806.84961 L 1452.5957 856.71094 L 1385.2852 924.19336 L 1401.4805 948.09961 C 1425.2452 983.9725 1441.0088 1022.7495 1449.9082 1062.6797 L 1455.7637 1090.6914 L 1553.0449 1090.0996 L 1553.0449 1160.6895 L 1456.3066 1161.2852 L 1450.75 1189.2969 C 1442.5902 1230.4276 1426.5649 1269.591 1403.4512 1304.6953 L 1387.6484 1328.7012 L 1458.9062 1398.9238 L 1408.8203 1449.2031 L 1337.5547 1378.9375 L 1313.8652 1394.6758 C 1277.59 1418.3823 1238.2406 1434.7985 1198.541 1442.8867 L 1170.3965 1448.5078 L 1170.3965 1550.7227 C 1151.1555 1550.7694 1130.1656 1550.7393 1099.0273 1550.6953 L 1098.9824 1449.2461 L 1070.7109 1443.7246 C 1029.3808 1435.6538 989.8877 1419.6871 954.76367 1396.6582 L 931.00977 1381.084 L 859.46875 1452.2949 L 808.84375 1402.5371 L 880.48438 1331.1758 L 864.13672 1307.1719 C 840.34989 1271.3777 824.61382 1232.5596 815.69922 1192.6758 L 809.84961 1164.75 L 710.28516 1165.1055 L 710.28516 1094.4453 L 809.35352 1094.2637 L 814.91406 1066.0957 C 823.02364 1025.0108 839.08423 985.84383 862.1582 950.80078 L 877.94336 926.82617 L 808.33789 858.06445 L 858.43164 807.67969 L 928.16406 876.57227 L 951.89453 860.73828 C 988.20439 836.96856 1026.7354 821.19689 1067.375 812.42383 L 1095.3359 806.61914 L 1095.084 709.83203 z M 1132.25 967.03516 C 1045.6031 967.03516 974.61133 1038.0288 974.61133 1124.6758 C 974.61133 1211.3228 1045.6031 1282.3125 1132.25 1282.3125 C 1218.8969 1282.3125 1289.8887 1211.3228 1289.8887 1124.6758 C 1289.8887 1038.0288 1218.8969 967.03516 1132.25 967.03516 z M 1132.25 1037.0352 C 1181.0662 1037.0352 1219.8887 1075.8597 1219.8887 1124.6758 C 1219.8887 1173.4919 1181.0662 1212.3125 1132.25 1212.3125 C 1083.4338 1212.3125 1044.6133 1173.4919 1044.6133 1124.6758 C 1044.6133 1075.8597 1083.4338 1037.0352 1132.25 1037.0352 z "\n style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:70;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />\n </g>\n <g\n id="layer1"\n transform="translate(0,949.63784)"\n style="display:inline">\n <g\n id="g4137"\n transform="matrix(1.1161206,0,0,1.1161228,91.593841,25.188891)" />\n </g>\n</svg>\n',"top-left",i_.Dimensions.ICON_SIZE_SMALL)}addSendTask(t){return this.addElement(new Fx(t,new $x)).addIcon('<?xml version="1.0" encoding="UTF-8" standalone="no"?>\n\x3c!-- Created with Inkscape (http://www.inkscape.org/) --\x3e\n\n<svg\n xmlns:dc="http://purl.org/dc/elements/1.1/"\n xmlns:cc="http://creativecommons.org/ns#"\n xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"\n xmlns:svg="http://www.w3.org/2000/svg"\n xmlns="http://www.w3.org/2000/svg"\n xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"\n xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"\n width="2000"\n height="2000"\n viewBox="0 0 2000 2000"\n id="svg2"\n version="1.1"\n inkscape:version="0.91 r"\n sodipodi:docname="send.svg">\n <defs\n id="defs4" />\n <sodipodi:namedview\n id="base"\n pagecolor="#ffffff"\n bordercolor="#666666"\n borderopacity="1.0"\n inkscape:pageopacity="0.0"\n inkscape:pageshadow="2"\n inkscape:zoom="0.22627417"\n inkscape:cx="1062.5989"\n inkscape:cy="892.16496"\n inkscape:document-units="px"\n inkscape:current-layer="layer4"\n showgrid="true"\n units="px"\n showguides="false"\n inkscape:window-width="1920"\n inkscape:window-height="1028"\n inkscape:window-x="0"\n inkscape:window-y="0"\n inkscape:window-maximized="1"\n inkscape:snap-grids="true"\n inkscape:snap-object-midpoints="false">\n <inkscape:grid\n type="xygrid"\n id="grid4008"\n empspacing="20"\n dotted="false" />\n </sodipodi:namedview>\n <metadata\n id="metadata7">\n <rdf:RDF>\n <cc:Work\n rdf:about="">\n <dc:format>image/svg+xml</dc:format>\n <dc:type\n rdf:resource="http://purl.org/dc/dcmitype/StillImage" />\n <dc:title></dc:title>\n <cc:license\n rdf:resource="https://github.com/bpmn-io/bpmn-font/blob/master/LICENSE" />\n <dc:creator>\n <cc:Agent>\n <dc:title>Jörg Dotzki</dc:title>\n </cc:Agent>\n </dc:creator>\n <dc:subject>\n <rdf:Bag>\n <rdf:li>BPMN</rdf:li>\n <rdf:li>bpmn-io</rdf:li>\n <rdf:li>bpmn.io</rdf:li>\n <rdf:li>Font</rdf:li>\n </rdf:Bag>\n </dc:subject>\n </cc:Work>\n </rdf:RDF>\n </metadata>\n <g\n inkscape:groupmode="layer"\n id="layer4"\n inkscape:label="Ebene 1"\n style="display:inline">\n <path\n style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"\n d="M 198 484 L 1000 938 L 1802 484 L 198 484 z M 200 652 L 200 1548 L 1804 1548 L 1804 652 L 1000 1100 L 200 652 z "\n id="path6822" />\n </g>\n</svg>\n',"top-left",i_.Dimensions.ICON_SIZE_SMALL)}addReceiveTask(t){return this.addElement(new Fx(t,new $x)).addIcon('<?xml version="1.0" encoding="UTF-8" standalone="no"?>\n<svg\n xmlns:dc="http://purl.org/dc/elements/1.1/"\n xmlns:cc="http://creativecommons.org/ns#"\n xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"\n xmlns:svg="http://www.w3.org/2000/svg"\n xmlns="http://www.w3.org/2000/svg"\n xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"\n xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"\n version="1.1"\n id="svg2"\n viewBox="0 0 2000 2000"\n height="2000"\n width="2000"\n inkscape:version="0.91 r"\n sodipodi:docname="receive.svg">\n <sodipodi:namedview\n pagecolor="#ffffff"\n bordercolor="#666666"\n borderopacity="1"\n objecttolerance="10"\n gridtolerance="10"\n guidetolerance="10"\n inkscape:pageopacity="0"\n inkscape:pageshadow="2"\n inkscape:window-width="1630"\n inkscape:window-height="947"\n id="namedview8"\n showgrid="false"\n inkscape:zoom="0.472"\n inkscape:cx="864.05386"\n inkscape:cy="948.4855"\n inkscape:window-x="50"\n inkscape:window-y="50"\n inkscape:window-maximized="0"\n inkscape:current-layer="layer2" />\n <defs\n id="defs4" />\n <metadata\n id="metadata7">\n <rdf:RDF>\n <cc:Work\n rdf:about="">\n <dc:format>image/svg+xml</dc:format>\n <dc:type\n rdf:resource="http://purl.org/dc/dcmitype/StillImage" />\n <dc:title></dc:title>\n <cc:license\n rdf:resource="https://github.com/bpmn-io/bpmn-font/blob/master/LICENSE" />\n <dc:creator>\n <cc:Agent>\n <dc:title>Jörg Dotzki</dc:title>\n </cc:Agent>\n </dc:creator>\n <dc:subject>\n <rdf:Bag>\n <rdf:li>BPMN</rdf:li>\n <rdf:li>bpmn-io</rdf:li>\n <rdf:li>bpmn.io</rdf:li>\n <rdf:li>Font</rdf:li>\n </rdf:Bag>\n </dc:subject>\n </cc:Work>\n </rdf:RDF>\n </metadata>\n <g\n style="display:inline"\n id="layer2">\n <g\n id="g4251">\n <path\n id="path6159"\n style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:70;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"\n d="m 189,465 0,1070 1622,0 0,-1070 -1622,0 z M 356.88086,535 1643.1191,535 1000,958.10547 356.88086,535 Z M 259,554.39648 1000,1041.8945 1741,554.39648 1741,1465 l -1482,0 0,-910.60352 z" />\n </g>\n </g>\n</svg>\n',"top-left",i_.Dimensions.ICON_SIZE_SMALL)}addGateway(t){return this.addExclusiveGateway(t)}addInclusiveGateway(t){return this.addElement(new Fx(t,new Kx)).addIcon('<?xml version="1.0" encoding="UTF-8" standalone="no"?>\n\x3c!-- Created with Inkscape (http://www.inkscape.org/) --\x3e\n\n<svg\n width="13.758311mm"\n height="13.758311mm"\n viewBox="0 0 13.758311 13.758311"\n version="1.1"\n id="svg1"\n inkscape:version="1.4 (e7c3feb1, 2024-10-09)"\n sodipodi:docname="inclusive.svg"\n xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"\n xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"\n xmlns="http://www.w3.org/2000/svg"\n xmlns:svg="http://www.w3.org/2000/svg">\n <sodipodi:namedview\n id="namedview1"\n pagecolor="#ffffff"\n bordercolor="#000000"\n borderopacity="0.25"\n inkscape:showpageshadow="2"\n inkscape:pageopacity="0.0"\n inkscape:pagecheckerboard="0"\n inkscape:deskcolor="#d1d1d1"\n inkscape:document-units="mm"\n inkscape:zoom="8.8470394"\n inkscape:cx="30.349136"\n inkscape:cy="27.636364"\n inkscape:window-width="1104"\n inkscape:window-height="784"\n inkscape:window-x="0"\n inkscape:window-y="38"\n inkscape:window-maximized="0"\n inkscape:current-layer="layer1" />\n <defs\n id="defs1" />\n <g\n inkscape:label="Layer 1"\n inkscape:groupmode="layer"\n id="layer1"\n transform="translate(-101.73231,-141.68439)">\n <path\n style="display:inline;fill:#22242a;stroke-linecap:round;stroke-linejoin:round;stroke-width:0;stroke-dasharray:none;stroke:none"\n d="m 25,10.75 c -7.855252,0 -14.25,6.394748 -14.25,14.25 0,7.855252 6.394748,14.25 14.25,14.25 7.855252,0 14.25,-6.394748 14.25,-14.25 0,-7.855252 -6.394748,-14.25 -14.25,-14.25 z m 0,2.5 c 6.504152,0 11.75,5.245848 11.75,11.75 0,6.504152 -5.245848,11.75 -11.75,11.75 -6.504152,0 -11.75,-5.245848 -11.75,-11.75 0,-6.504152 5.245848,-11.75 11.75,-11.75 z"\n id="path2"\n transform="matrix(0.26458333,0,0,0.26458333,101.99688,141.94896)" />\n <rect\n x="102.52605"\n y="142.47813"\n rx="1.0583333"\n width="12.170834"\n height="12.170834"\n class="djs-outline"\n style="fill:none;stroke-width:0.264583"\n id="rect105" />\n </g>\n</svg>\n',"center",i_.Dimensions.ICON_SIZE_LARGE)}addExclusiveGateway(t){return this.addElement(new Fx(t,new Kx)).addIcon('<?xml version="1.0" encoding="UTF-8" standalone="no"?>\n\x3c!-- Created with Inkscape (http://www.inkscape.org/) --\x3e\n\n<svg\n width="13.758311mm"\n height="13.758311mm"\n viewBox="0 0 13.758311 13.758311"\n version="1.1"\n id="svg1"\n inkscape:version="1.4 (e7c3feb1, 2024-10-09)"\n sodipodi:docname="exclusive.svg"\n xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"\n xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"\n xmlns="http://www.w3.org/2000/svg"\n xmlns:svg="http://www.w3.org/2000/svg">\n <sodipodi:namedview\n id="namedview1"\n pagecolor="#ffffff"\n bordercolor="#000000"\n borderopacity="0.25"\n inkscape:showpageshadow="2"\n inkscape:pageopacity="0.0"\n inkscape:pagecheckerboard="0"\n inkscape:deskcolor="#d1d1d1"\n inkscape:document-units="mm"\n inkscape:zoom="4.1672912"\n inkscape:cx="41.63376"\n inkscape:cy="36.714497"\n inkscape:window-width="1104"\n inkscape:window-height="719"\n inkscape:window-x="0"\n inkscape:window-y="38"\n inkscape:window-maximized="0"\n inkscape:current-layer="layer1" />\n <defs\n id="defs1" />\n <g\n inkscape:label="Layer 1"\n inkscape:groupmode="layer"\n id="layer1"\n transform="translate(-101.7323,-141.68439)">\n <path\n style="display:inline;fill:#22242a;stroke-linecap:round;stroke-linejoin:round"\n d="M 16,15 23.428571,24.714286 16,34.428571 h 3.428571 l 5.714286,-7.464228 5.714286,7.464228 h 3.428571 L 26.857143,24.714286 34.285714,15 H 30.857143 L 25.142857,22.464229 19.428571,15 Z"\n id="path1"\n transform="matrix(0.26458333,0,0,0.26458333,101.99687,141.94896)" />\n <rect\n x="102.52604"\n y="142.47813"\n rx="1.0583333"\n width="12.170834"\n height="12.170834"\n class="djs-outline"\n style="fill:none;stroke-width:0.264583"\n id="rect108" />\n </g>\n</svg>\n',"center",i_.Dimensions.ICON_SIZE_MEDIUM)}addParallelGateway(t){return this.addElement(new Fx(t,new Kx)).addIcon('<?xml version="1.0" encoding="UTF-8" standalone="no"?>\n\x3c!-- Created with Inkscape (http://www.inkscape.org/) --\x3e\n\n<svg\n width="13.758311mm"\n height="13.758311mm"\n viewBox="0 0 13.758311 13.758311"\n version="1.1"\n id="svg1"\n inkscape:version="1.4 (e7c3feb1, 2024-10-09)"\n sodipodi:docname="parallel.svg"\n xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"\n xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"\n xmlns="http://www.w3.org/2000/svg"\n xmlns:svg="http://www.w3.org/2000/svg">\n <sodipodi:namedview\n id="namedview1"\n pagecolor="#ffffff"\n bordercolor="#000000"\n borderopacity="0.25"\n inkscape:showpageshadow="2"\n inkscape:pageopacity="0.0"\n inkscape:pagecheckerboard="0"\n inkscape:deskcolor="#d1d1d1"\n inkscape:document-units="mm"\n inkscape:zoom="2.5054948"\n inkscape:cx="-2.1951752"\n inkscape:cy="20.155699"\n inkscape:window-width="1104"\n inkscape:window-height="788"\n inkscape:window-x="0"\n inkscape:window-y="38"\n inkscape:window-maximized="0"\n inkscape:current-layer="layer1" />\n <defs\n id="defs1" />\n <g\n inkscape:label="Layer 1"\n inkscape:groupmode="layer"\n id="layer1"\n transform="translate(-101.7323,-141.68439)">\n <path\n d="m 108.08229,144.59479 v 3.30729 h -3.3073 v 1.32292 h 3.3073 v 3.30729 h 1.32291 V 149.225 h 3.30729 v -1.32292 h -3.30729 v -3.30729 z"\n style="fill:#22242a;stroke:#22242a;stroke-width:0.264583px;stroke-linecap:round;stroke-linejoin:round"\n id="path109" />\n <rect\n x="102.52604"\n y="142.47813"\n rx="1.0583333"\n width="12.170834"\n height="12.170834"\n class="djs-outline"\n style="fill:none;stroke-width:0.264583"\n id="rect111" />\n </g>\n</svg>\n',"center",i_.Dimensions.ICON_SIZE_LARGE)}addEventBasedGateway(t){return this.addElement(new Fx(t,new Kx)).addIcon('<?xml version="1.0" encoding="UTF-8" standalone="no"?>\n\x3c!-- Created with Inkscape (http://www.inkscape.org/) --\x3e\n\n<svg\n width="13.758311mm"\n height="13.758311mm"\n viewBox="0 0 13.758311 13.758311"\n version="1.1"\n id="svg1"\n inkscape:version="1.4 (e7c3feb1, 2024-10-09)"\n sodipodi:docname="event-based.svg"\n xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"\n xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"\n xmlns="http://www.w3.org/2000/svg"\n xmlns:svg="http://www.w3.org/2000/svg">\n <sodipodi:namedview\n id="namedview1"\n pagecolor="#ffffff"\n bordercolor="#000000"\n borderopacity="0.25"\n inkscape:showpageshadow="2"\n inkscape:pageopacity="0.0"\n inkscape:pagecheckerboard="0"\n inkscape:deskcolor="#d1d1d1"\n inkscape:document-units="mm"\n inkscape:zoom="4.3759929"\n inkscape:cx="21.36658"\n inkscape:cy="26.16549"\n inkscape:window-width="1104"\n inkscape:window-height="786"\n inkscape:window-x="0"\n inkscape:window-y="38"\n inkscape:window-maximized="0"\n inkscape:current-layer="layer1" />\n <defs\n id="defs1" />\n <g\n inkscape:label="Layer 1"\n inkscape:groupmode="layer"\n id="layer1"\n transform="translate(-1969.426,-2186.3844)">\n <circle\n cx="1976.3052"\n cy="2193.2637"\n r="3.96875"\n style="fill:none;stroke:#22242a;stroke-width:0.264583px;stroke-linecap:round;stroke-linejoin:round"\n id="circle112" />\n <circle\n cx="1976.3052"\n cy="2193.2637"\n r="3.175"\n style="fill:none;stroke:#22242a;stroke-width:0.264583px;stroke-linecap:round;stroke-linejoin:round"\n id="circle113" />\n <path\n d="m 1974.4531,2192.4698 1.9483,-1.2988 1.9483,1.2988 -0.6494,2.5978 h -2.5978 z"\n style="fill:none;stroke:#22242a;stroke-width:0.529167px;stroke-linecap:round;stroke-linejoin:round"\n id="path113" />\n <rect\n x="1970.2197"\n y="2187.1782"\n rx="1.0583333"\n width="12.170834"\n height="12.170834"\n class="djs-outline"\n style="fill:none;stroke-width:0.264583"\n id="rect114" />\n </g>\n</svg>\n',"center",i_.Dimensions.ICON_SIZE_LARGE)}addComplexGateway(t){return this.addElement(new Fx(t,new Kx)).addIcon('<?xml version="1.0" encoding="UTF-8" standalone="no"?>\n\x3c!-- Created with Inkscape (http://www.inkscape.org/) --\x3e\n\n<svg\n width="13.758311mm"\n height="13.758311mm"\n viewBox="0 0 13.758311 13.758311"\n version="1.1"\n id="svg1"\n inkscape:version="1.4 (e7c3feb1, 2024-10-09)"\n sodipodi:docname="complex.svg"\n xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"\n xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"\n xmlns="http://www.w3.org/2000/svg"\n xmlns:svg="http://www.w3.org/2000/svg">\n <sodipodi:namedview\n id="namedview1"\n pagecolor="#ffffff"\n bordercolor="#000000"\n borderopacity="0.25"\n inkscape:showpageshadow="2"\n inkscape:pageopacity="0.0"\n inkscape:pagecheckerboard="0"\n inkscape:deskcolor="#d1d1d1"\n inkscape:document-units="mm"\n inkscape:zoom="4.8390424"\n inkscape:cx="39.987251"\n inkscape:cy="19.218679"\n inkscape:window-width="1104"\n inkscape:window-height="827"\n inkscape:window-x="0"\n inkscape:window-y="38"\n inkscape:window-maximized="0"\n inkscape:current-layer="layer1" />\n <defs\n id="defs1" />\n <g\n inkscape:label="Layer 1"\n inkscape:groupmode="layer"\n id="layer1"\n transform="translate(-101.73231,-141.68439)">\n <g\n id="path115"\n style="fill:#22242a;fill-opacity:1;stroke:none;stroke-width:0;stroke-dasharray:none"\n transform="matrix(0.26458333,0,0,0.26458333,-13.62604,-21.563537)">\n <path\n style="fill:#22242a;fill-opacity:1;stroke:none;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"\n d="m 460,631 v 7.11679 l -5.01825,-5.01825 -3.10219,3.10219 5.01825,5.01825 h -7.11679 v 4.37956 h 7.11679 l -5.01825,5.01825 3.10219,3.10219 L 460,648.70073 v 7.11679 h 4.37956 v -7.11679 l 5.01825,5.01825 3.10219,-3.10219 -5.01825,-5.01825 h 7.11679 v -4.37956 h -7.11679 l 5.01825,-5.01825 -3.10219,-3.10219 -5.01825,5.01825 V 631 Z"\n id="path211" />\n </g>\n <rect\n x="102.52604"\n y="142.47813"\n rx="1.0583333"\n width="12.170834"\n height="12.170834"\n class="djs-outline"\n style="fill:none;stroke-width:0.264583"\n id="rect117" />\n </g>\n</svg>\n',"center",i_.Dimensions.ICON_SIZE_MEDIUM)}addFlowConnector(t,e){return this.addConnector(new Ox(t,new Ux(e)))}import(t){if(!t)return void console.error("No file provided for import.");const e=new FileReader;e.onload=e=>{if(t.name.endsWith(".bpmn")){const t=(new DOMParser).parseFromString(e.target.result,"text/xml");console.log(t),this.buildDiagram(t)}else console.warn("File format not supported.")},e.readAsText(t)}buildDiagram(t){const e="http://www.omg.org/spec/BPMN/20100524/MODEL",n="http://www.omg.org/spec/BPMN/20100524/DI",i="http://www.omg.org/spec/DD/20100524/DC",r=t.getElementsByTagNameNS(e,"startEvent");for(let M=0;M<r.length;M++){const t=r[M].getAttribute("id");console.log("startEventId:",t);const n=r[M].getElementsByTagNameNS(e,"name");console.log("name:",n);const i=r[M].getElementsByTagNameNS(e,"incoming");console.log("incoming:",i);for(let e=0;e<i.length;e++)console.log("incoming:",i[e].textContent);const s=r[M].getElementsByTagNameNS(e,"outgoing");console.log("outgoing:",s);for(let e=0;e<s.length;e++)console.log("outgoing:",s[e].textContent);r[M].getElementsByTagNameNS(e,"messageEventDefinition").length>0?this.addMessageStartEvent(t):r[M].getElementsByTagNameNS(e,"timerEventDefinition").length>0?this.addTimerStartEvent(t):r[M].getElementsByTagNameNS(e,"conditionalEventDefinition").length>0?this.addConditionalStartEvent(t):r[M].getElementsByTagNameNS(e,"signalEventDefinition").length>0?this.addSignalStartEvent(t):this.addStartEvent(t)}const s=t.getElementsByTagNameNS(e,"endEvent");for(let M=0;M<s.length;M++){const t=s[M].getAttribute("id");console.log("endEventId:",t);const n=s[M].getElementsByTagNameNS(e,"name");console.log("name:",n);const i=s[M].getElementsByTagNameNS(e,"incoming");console.log("incoming:",i);for(let e=0;e<i.length;e++)console.log("incoming:",i[e].textContent);const r=s[M].getElementsByTagNameNS(e,"outgoing");console.log("outgoing:",r);for(let e=0;e<r.length;e++)console.log("outgoing:",r[e].textContent);s[M].getElementsByTagNameNS(e,"messageEventDefinition").length>0?this.addMessageEndEvent(t):s[M].getElementsByTagNameNS(e,"escalationEventDefinition").length>0?this.addEscalationEndEvent(t):s[M].getElementsByTagNameNS(e,"errorEventDefinition").length>0?this.addErrorEndEvent(t):s[M].getElementsByTagNameNS(e,"compensateEventDefinition").length>0?this.addCompensateEndEvent(t):s[M].getElementsByTagNameNS(e,"signalEventDefinition").length>0?this.addSignalEndEvent(t):s[M].getElementsByTagNameNS(e,"terminateEventDefinition").length>0?this.addTerminateEndEvent(t):this.addEndEvent(t)}const a=t.getElementsByTagNameNS(e,"intermediateCatchEvent");for(let M=0;M<a.length;M++){const t=a[M].getAttribute("id");console.log("intermediateCatchEventId:",t);const n=a[M].getElementsByTagNameNS(e,"name");console.log("name:",n);const i=a[M].getElementsByTagNameNS(e,"incoming");console.log("incoming:",i);for(let e=0;e<i.length;e++)console.log("incoming:",i[e].textContent);const r=a[M].getElementsByTagNameNS(e,"outgoing");console.log("outgoing:",r);for(let e=0;e<r.length;e++)console.log("outgoing:",r[e].textContent);a[M].getElementsByTagNameNS(e,"messageEventDefinition").length>0?this.addIntermediateMessageCatchEvent(t):a[M].getElementsByTagNameNS(e,"timerEventDefinition").length>0?this.addIntermediateTimerEvent(t):a[M].getElementsByTagNameNS(e,"conditionalEventDefinition").length>0?this.addIntermediateConditionalEvent(t):a[M].getElementsByTagNameNS(e,"linkEventDefinition").length>0?this.addIntermediateLinkCatchEvent(t):a[M].getElementsByTagNameNS(e,"signalEventDefinition").length>0?this.addIntermediateSignalCatchEvent(t):this.addIntermediateEvent(t)}const o=t.getElementsByTagNameNS(e,"intermediateThrowEvent");for(let M=0;M<o.length;M++){const t=o[M].getAttribute("id");console.log("intermediateThrowEventId:",t);const n=o[M].getElementsByTagNameNS(e,"name");console.log("name:",n);const i=o[M].getElementsByTagNameNS(e,"incoming");console.log("incoming:",i);for(let e=0;e<i.length;e++)console.log("incoming:",i[e].textContent);const r=o[M].getElementsByTagNameNS(e,"outgoing");console.log("outgoing:",r);for(let e=0;e<r.length;e++)console.log("outgoing:",r[e].textContent);o[M].getElementsByTagNameNS(e,"messageEventDefinition").length>0?this.addIntermediateMessageThrowEvent(t):o[M].getElementsByTagNameNS(e,"escalationEventDefinition").length>0?this.addIntermediateEscalationEvent(t):o[M].getElementsByTagNameNS(e,"linkEventDefinition").length>0?this.addIntermediateLinkThrowEvent(t):o[M].getElementsByTagNameNS(e,"compensateEventDefinition").length>0?this.addIntermediateCompensationEvent(t):o[M].getElementsByTagNameNS(e,"signalEventDefinition").length>0?this.addIntermediateSignalThrowEvent(t):this.addIntermediateEvent(t)}const l=t.getElementsByTagNameNS(e,"task");for(let M=0;M<l.length;M++){const t=l[M].getAttribute("id");console.log("taskId:",t);const n=l[M].getAttribute("name");console.log("name:",n);const i=l[M].getElementsByTagNameNS(e,"incoming");console.log("incoming:",i);for(let e=0;e<i.length;e++)console.log("incoming:",i[e].textContent);const r=l[M].getElementsByTagNameNS(e,"outgoing");console.log("outgoing:",r);for(let e=0;e<r.length;e++)console.log("outgoing:",r[e].textContent);this.addTask(t).addWrappedText(n)}const h=t.getElementsByTagNameNS(e,"manualTask");for(let M=0;M<h.length;M++){const t=h[M].getAttribute("id");console.log("manualTaskId:",t);const n=h[M].getAttribute("name");console.log("name:",n);const i=h[M].getElementsByTagNameNS(e,"incoming");console.log("incoming:",i);for(let e=0;e<i.length;e++)console.log("incoming:",i[e].textContent);const r=h[M].getElementsByTagNameNS(e,"outgoing");console.log("outgoing:",r);for(let e=0;e<r.length;e++)console.log("outgoing:",r[e].textContent);this.addManualTask(t).addWrappedText(n)}const c=t.getElementsByTagNameNS(e,"userTask");for(let M=0;M<c.length;M++){const t=c[M].getAttribute("id");console.log("userTaskId:",t);const n=c[M].getAttribute("name");console.log("name:",n);const i=c[M].getElementsByTagNameNS(e,"incoming");console.log("incoming:",i);for(let e=0;e<i.length;e++)console.log("incoming:",i[e].textContent);const r=c[M].getElementsByTagNameNS(e,"outgoing");console.log("outgoing:",r);for(let e=0;e<r.length;e++)console.log("outgoing:",r[e].textContent);this.addUserTask(t).addWrappedText(n)}const q=t.getElementsByTagNameNS(e,"scriptTask");for(let M=0;M<q.length;M++){const t=q[M].getAttribute("id");console.log("scriptTaskId:",t);const n=q[M].getAttribute("name");console.log("name:",n);const i=q[M].getElementsByTagNameNS(e,"incoming");console.log("incoming:",i);for(let e=0;e<i.length;e++)console.log("incoming:",i[e].textContent);const r=q[M].getElementsByTagNameNS(e,"outgoing");console.log("outgoing:",r);for(let e=0;e<r.length;e++)console.log("outgoing:",r[e].textContent);this.addScriptTask(t).addWrappedText(n)}const u=t.getElementsByTagNameNS(e,"businessRuleTask");for(let M=0;M<u.length;M++){const t=u[M].getAttribute("id");console.log("businessRuleTaskId:",t);const n=u[M].getAttribute("name");console.log("name:",n);const i=u[M].getElementsByTagNameNS(e,"incoming");console.log("incoming:",i);for(let e=0;e<i.length;e++)console.log("incoming:",i[e].textContent);const r=u[M].getElementsByTagNameNS(e,"outgoing");console.log("outgoing:",r);for(let e=0;e<r.length;e++)console.log("outgoing:",r[e].textContent);this.addBusinessRuleTask(t).addWrappedText(n)}const d=t.getElementsByTagNameNS(e,"serviceTask");for(let M=0;M<d.length;M++){const t=d[M].getAttribute("id");console.log("serviceTaskId:",t);const n=d[M].getAttribute("name");console.log("name:",n);const i=d[M].getElementsByTagNameNS(e,"incoming");console.log("incoming:",i);for(let e=0;e<i.length;e++)console.log("incoming:",i[e].textContent);const r=d[M].getElementsByTagNameNS(e,"outgoing");console.log("outgoing:",r);for(let e=0;e<r.length;e++)console.log("outgoing:",r[e].textContent);this.addServiceTask(t).addWrappedText(n)}const m=t.getElementsByTagNameNS(e,"sendTask");for(let M=0;M<m.length;M++){const t=m[M].getAttribute("id");console.log("sendTaskId:",t);const n=m[M].getAttribute("name");console.log("name:",n);const i=m[M].getElementsByTagNameNS(e,"incoming");console.log("incoming:",i);for(let e=0;e<i.length;e++)console.log("incoming:",i[e].textContent);const r=m[M].getElementsByTagNameNS(e,"outgoing");console.log("outgoing:",r);for(let e=0;e<r.length;e++)console.log("outgoing:",r[e].textContent);this.addSendTask(t).addWrappedText(n)}const p=t.getElementsByTagNameNS(e,"receiveTask");for(let M=0;M<p.length;M++){const t=p[M].getAttribute("id");console.log("receiveTaskId:",t);const n=p[M].getAttribute("name");console.log("name:",n);const i=p[M].getElementsByTagNameNS(e,"incoming");console.log("incoming:",i);for(let e=0;e<i.length;e++)console.log("incoming:",i[e].textContent);const r=p[M].getElementsByTagNameNS(e,"outgoing");console.log("outgoing:",r);for(let e=0;e<r.length;e++)console.log("outgoing:",r[e].textContent);this.addReceiveTask(t).addWrappedText(n)}const f=t.getElementsByTagNameNS(e,"inclusiveGateway");for(let M=0;M<f.length;M++){const t=f[M].getAttribute("id");console.log("gatewayId:",t);const n=f[M].getAttribute("name");console.log("name:",n);const i=f[M].getElementsByTagNameNS(e,"incoming");console.log("incoming:",i);for(let e=0;e<i.length;e++)console.log("incoming:",i[e].textContent);const r=f[M].getElementsByTagNameNS(e,"outgoing");console.log("outgoing:",r);for(let e=0;e<r.length;e++)console.log("outgoing:",r[e].textContent);this.addInclusiveGateway(t)}const g=t.getElementsByTagNameNS(e,"exclusiveGateway");for(let M=0;M<g.length;M++){const t=g[M].getAttribute("id");console.log("gatewayId:",t);const n=g[M].getAttribute("name");console.log("name:",n);const i=g[M].getElementsByTagNameNS(e,"incoming");console.log("incoming:",i);for(let e=0;e<i.length;e++)console.log("incoming:",i[e].textContent);const r=g[M].getElementsByTagNameNS(e,"outgoing");console.log("outgoing:",r);for(let e=0;e<r.length;e++)console.log("outgoing:",r[e].textContent);this.addExclusiveGateway(t)}const x=t.getElementsByTagNameNS(e,"parallelGateway");for(let M=0;M<x.length;M++){const t=x[M].getAttribute("id");console.log("gatewayId:",t);const n=x[M].getAttribute("name");console.log("name:",n);const i=x[M].getElementsByTagNameNS(e,"incoming");console.log("incoming:",i);for(let e=0;e<i.length;e++)console.log("incoming:",i[e].textContent);const r=x[M].getElementsByTagNameNS(e,"outgoing");console.log("outgoing:",r);for(let e=0;e<r.length;e++)console.log("outgoing:",r[e].textContent);this.addParallelGateway(t)}const _=t.getElementsByTagNameNS(e,"eventBasedGateway");for(let M=0;M<_.length;M++){const t=_[M].getAttribute("id");console.log("gatewayId:",t);const n=_[M].getAttribute("name");console.log("name:",n);const i=_[M].getElementsByTagNameNS(e,"incoming");console.log("incoming:",i);for(let e=0;e<i.length;e++)console.log("incoming:",i[e].textContent);const r=_[M].getElementsByTagNameNS(e,"outgoing");console.log("outgoing:",r);for(let e=0;e<r.length;e++)console.log("outgoing:",r[e].textContent);this.addEventBasedGateway(t)}const y=t.getElementsByTagNameNS(e,"complexGateway");for(let M=0;M<y.length;M++){const t=y[M].getAttribute("id");console.log("gatewayId:",t);const n=y[M].getAttribute("name");console.log("name:",n);const i=y[M].getElementsByTagNameNS(e,"incoming");console.log("incoming:",i);for(let e=0;e<i.length;e++)console.log("incoming:",i[e].textContent);const r=y[M].getElementsByTagNameNS(e,"outgoing");console.log("outgoing:",r);for(let e=0;e<r.length;e++)console.log("outgoing:",r[e].textContent);this.addComplexGateway(t)}const v=t.getElementsByTagNameNS(e,"sequenceFlow");for(let M=0;M<v.length;M++){const t=v[M].getAttribute("id");console.log("sequenceFlowId:",t);const e=v[M].getAttribute("name");console.log("name:",e);const n=v[M].getAttribute("sourceRef");console.log("sourceRef:",n);const i=v[M].getAttribute("targetRef");console.log("targetRef:",i)}const w=t.getElementsByTagNameNS(n,"BPMNShape");for(let M=0;M<w.length;M++){const e=w[M],r=e.getAttribute("id"),s=e.getAttribute("bpmnElement"),a=e.getElementsByTagNameNS(i,"Bounds")[0];if(a){const o=parseFloat(a.getAttribute("x")),l=-1*parseFloat(a.getAttribute("y")),h=parseFloat(a.getAttribute("width")),c=parseFloat(a.getAttribute("height"));console.log(`BPMNShape: ${r}, ${s}, x: ${o}, y: ${l}, width: ${h}, height: ${c}`);const q=new un(o+h/2,l-c/2,0),u=this.getElementById(s);let d,m,p,f;u?u.positionAt(q):console.warn(`Element with id ${s} not found.`);const g=e.getElementsByTagNameNS(n,"BPMNLabel");if(g.length>0){const e=g[0].getElementsByTagNameNS(i,"Bounds")[0];if(e){d=parseFloat(e.getAttribute("x")),m=-1*parseFloat(e.getAttribute("y")),p=parseFloat(e.getAttribute("width")),f=parseFloat(e.getAttribute("height")),console.log(`Label position (Shape): x: ${d}, y: ${m}, width: ${p}, height: ${f}`);const n=t.getElementById(s).getAttribute("name");if(console.log(`bpmnElementName: ${n}`),n){const t=new un(d+p/2,m-f/2,0);this.addElement(new Fx("t1",new wx(n))).positionAt(t)}}}}}const b=t.getElementsByTagNameNS(n,"BPMNEdge");for(let M=0;M<b.length;M++){const t=b[M],e=t.getAttribute("id"),r=t.getAttribute("bpmnElement"),s=Array.from(v).find((t=>t.getAttribute("id")===r)),a=s?s.getAttribute("name"):null,o=t.getElementsByTagNameNS("http://www.omg.org/spec/DD/20100524/DI","waypoint"),l=[];for(let n=0;n<o.length;n++){const t=o[n],e=parseFloat(t.getAttribute("x")),i=-1*parseFloat(t.getAttribute("y"));l.push(new ke(e,i)),console.log(`BPMNEdge: ${r}, x: ${e}, y: ${i}`)}let h,c,q,u;console.log("connectorPoints:",l),this.addConnector(this.addFlowConnector(e,l));const d=t.getElementsByTagNameNS(n,"BPMNLabel");if(d.length>0){const t=d[0].getElementsByTagNameNS(i,"Bounds")[0];t&&(h=parseFloat(t.getAttribute("x")),c=-1*parseFloat(t.getAttribute("y")),q=parseFloat(t.getAttribute("width")),u=parseFloat(t.getAttribute("height")),console.log(`Label position: x: ${h}, y: ${c}, width: ${q}, height: ${u}`))}if(a){const t=new un(h+q/2,c-u/2,0);this.addElement(new Fx("t1",new wx(a))).positionAt(t)}}this.arrange()}}t.BpmnDiagram=i_,Object.defineProperty(t,Symbol.toStringTag,{value:"Module"})}));
13
- //# sourceMappingURL=bpmn-diagram.umd.js.map