@jdultra/threedtiles 13.2.1 → 13.2.3
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.
- package/README.md +1 -0
- package/dist/assets/{PointsManager.worker-5fpGpVvf.js → PointsManager.worker-dH1fNyu8.js} +142 -112
- package/dist/assets/PointsManager.worker-dH1fNyu8.js.map +1 -0
- package/dist/splats/PointsManager.d.ts +7 -3
- package/dist/splats/SplatsMesh.d.ts +6 -2
- package/dist/threedtiles.cjs.js +22 -17
- package/dist/threedtiles.cjs.js.map +1 -1
- package/dist/threedtiles.es.js +2108 -2088
- package/dist/threedtiles.es.js.map +1 -1
- package/dist/threedtiles.umd.js +22 -17
- package/dist/threedtiles.umd.js.map +1 -1
- package/dist/tileset/OGC3DTile.d.ts +10 -1
- package/package.json +1 -1
- package/dist/assets/PointsManager.worker-5fpGpVvf.js.map +0 -1
package/dist/threedtiles.umd.js
CHANGED
|
@@ -1,32 +1,32 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(ve,E){typeof exports=="object"&&typeof module<"u"?E(exports,require("three")):typeof define=="function"&&define.amd?define(["exports","three"],E):E((ve=typeof globalThis<"u"?globalThis:ve||self).threedtiles={},ve.THREE)})(this,function(ve,E){"use strict";var Vc=Object.defineProperty;var Wc=(ve,E,Rt)=>E in ve?Vc(ve,E,{enumerable:!0,configurable:!0,writable:!0,value:Rt}):ve[E]=Rt;var St=(ve,E,Rt)=>Wc(ve,typeof E!="symbol"?E+"":E,Rt);function Rt(r){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(r){for(const t in r)if(t!=="default"){const a=Object.getOwnPropertyDescriptor(r,t);Object.defineProperty(e,t,a.get?a:{enumerable:!0,get:()=>r[t]})}}return e.default=r,Object.freeze(e)}const G=Rt(E),Xe=new E.Matrix3,_e=new E.Vector3,Tr=new E.Vector3,Nr=new E.Box3,na=new E.Matrix4,Ur=new E.Matrix4,Lr=new E.Ray;class at{constructor(e){this.center=new E.Vector3(e[0],e[1],e[2]),this.e1=new E.Vector3(e[3],e[4],e[5]),this.e2=new E.Vector3(e[6],e[7],e[8]),this.e3=new E.Vector3(e[9],e[10],e[11]),this.halfSize=new E.Vector3(this.e1.length(),this.e2.length(),this.e3.length()),this.e1.normalize(),this.e2.normalize(),this.e3.normalize(),this.rotationMatrix=new E.Matrix3,this.rotationMatrix.set(this.e1.x,this.e2.x,this.e3.x,this.e1.y,this.e2.y,this.e3.y,this.e1.z,this.e2.z,this.e3.z)}copy(e){this.center.copy(e.center),this.rotationMatrix.copy(e.rotationMatrix),this.halfSize.copy(e.halfSize),this.e1.copy(e.e1),this.e2.copy(e.e2),this.e3.copy(e.e3)}getSize(e){return e.copy(this.halfSize).multiplyScalar(2)}applyMatrix4(e){const t=e.elements;let a=_e.set(t[0],t[1],t[2]).length();const n=_e.set(t[4],t[5],t[6]).length(),i=_e.set(t[8],t[9],t[10]).length();e.determinant()<0&&(a=-a),Xe.setFromMatrix4(e);const o=1/a,s=1/n,A=1/i;return Xe.elements[0]*=o,Xe.elements[1]*=o,Xe.elements[2]*=o,Xe.elements[3]*=s,Xe.elements[4]*=s,Xe.elements[5]*=s,Xe.elements[6]*=A,Xe.elements[7]*=A,Xe.elements[8]*=A,this.rotationMatrix.premultiply(Xe),this.halfSize.x*=a,this.halfSize.y*=n,this.halfSize.z*=i,this.center.applyMatrix4(e),this.rotationMatrix.extractBasis(this.e1,this.e2,this.e3),this}intersectRay(e,t){return this.getSize(Tr),Nr.setFromCenterAndSize(_e.set(0,0,0),Tr),na.setFromMatrix3(this.rotationMatrix),na.setPosition(this.center),Ur.copy(na).invert(),Lr.copy(e).applyMatrix4(Ur),Lr.intersectBox(Nr,t)?t.applyMatrix4(na):null}intersectsRay(e){return this.intersectRay(e,_e)!==null}insidePlane(e){e.normal.normalize();const t=this.halfSize.x*Math.abs(e.normal.dot(this.e1))+this.halfSize.y*Math.abs(e.normal.dot(this.e2))+this.halfSize.z*Math.abs(e.normal.dot(this.e3));return e.distanceToPoint(this.center)>-t}inFrustum(e){for(let t=0;t<6;t++){const a=e.planes[t];if(!this.insidePlane(a))return!1}return!0}distanceToPoint(e){_e.copy(e),_e.sub(this.center),_e.applyMatrix3(this.rotationMatrix);let t=Math.max(0,Math.max(-this.halfSize.x-_e.x,_e.x-this.halfSize.x)),a=Math.max(0,Math.max(-this.halfSize.y-_e.y,_e.y-this.halfSize.y)),n=Math.max(0,Math.max(-this.halfSize.z-_e.z,_e.z-this.halfSize.z));return Math.sqrt(t*t+a*a+n*n)}helper(){const e=this.halfSize,t=this.center,a=this.e1,n=this.e2,i=this.e3,o=[new E.Vector3().copy(t).add(a.clone().multiplyScalar(e.x)).add(n.clone().multiplyScalar(e.y)).add(i.clone().multiplyScalar(e.z)),new E.Vector3().copy(t).add(a.clone().multiplyScalar(-e.x)).add(n.clone().multiplyScalar(e.y)).add(i.clone().multiplyScalar(e.z)),new E.Vector3().copy(t).add(a.clone().multiplyScalar(-e.x)).add(n.clone().multiplyScalar(-e.y)).add(i.clone().multiplyScalar(e.z)),new E.Vector3().copy(t).add(a.clone().multiplyScalar(e.x)).add(n.clone().multiplyScalar(-e.y)).add(i.clone().multiplyScalar(e.z)),new E.Vector3().copy(t).add(a.clone().multiplyScalar(e.x)).add(n.clone().multiplyScalar(e.y)).add(i.clone().multiplyScalar(-e.z)),new E.Vector3().copy(t).add(a.clone().multiplyScalar(-e.x)).add(n.clone().multiplyScalar(e.y)).add(i.clone().multiplyScalar(-e.z)),new E.Vector3().copy(t).add(a.clone().multiplyScalar(-e.x)).add(n.clone().multiplyScalar(-e.y)).add(i.clone().multiplyScalar(-e.z)),new E.Vector3().copy(t).add(a.clone().multiplyScalar(e.x)).add(n.clone().multiplyScalar(-e.y)).add(i.clone().multiplyScalar(-e.z))],s=new E.BufferGeometry().setFromPoints(o);s.setIndex([0,1,1,2,2,3,3,0,4,5,5,6,6,7,7,4,0,4,1,5,2,6,3,7]),s.computeBoundingSphere();const A=new E.LineBasicMaterial({color:16711680}),u=new E.LineSegments(s,A);return u.dispose=()=>{A.dispose(),s.dispose()},u}}/**
|
|
2
2
|
* @copyright 2021 Aaron Zhao <yujianzhao2013@gmail.com>
|
|
3
3
|
* @license MIT
|
|
4
4
|
* Linked hash map data structure
|
|
5
5
|
* @class LinkedHashMap
|
|
6
|
-
*/class Gr{constructor(){this._data=new Map,this._link=new Map,this._head=void 0,this._tail=void 0}put(e,t,a=!1){this.has(e)?this._data.set(e,t):(this._data.set(e,t),this._link.set(e,{previous:void 0,next:void 0}),this._head==null?(this._head=e,this._tail=e):a?(this._link.get(this._head).previous=e,this._link.get(e).next=this._head,this._head=e):(this._link.get(this._tail).next=e,this._link.get(e).previous=this._tail,this._tail=e))}head(){return{key:this._head,value:this.get(this._head),next:()=>this.next(this._head),previous:()=>null}}tail(){return{key:this._tail,value:this.get(this._tail),next:()=>null,previous:()=>this.previous(this._tail)}}get(e){return this._data.get(e)}previousKey(e){const t=this._link.get(e);return t!=null?t.previous:void 0}previousValue(e){return this.get(this.previousKey(e))}previous(e){const t=this.previousKey(e);return{key:t,value:this.get(t),next:()=>this.next(t),previous:()=>this.previous(t)}}nextKey(e){const t=this._link.get(e);return t!=null?t.next:void 0}nextValue(e){return this.get(this.nextKey(e))}next(e){const t=this.nextKey(e);return{key:t,value:this.get(t),next:()=>this.next(t),previous:()=>this.previous(t)}}remove(e){const t=this._data.get(e);if(t!=null)if(this.size()===1)this.reset();else{if(e===this._head){const a=this._link.get(this._head);this._link.get(a.next).previous=null,this._head=a.next}else if(e===this._tail){const a=this._link.get(this._tail);this._link.get(a.previous).next=null,this._tail=a.previous}else{const a=this._link.get(e),n=this._link.get(a.previous),i=this._link.get(a.next);n.next=a.next,i.previous=a.previous}this._link.delete(e),this._data.delete(e)}return t}has(e){return this._data.has(e)}size(){return this._data.size}reset(){this._data.clear(),this._link.clear(),this._head=void 0,this._tail=void 0}keys(){return this._data.keys()}values(){return this._data.values()}entries(){return this._data.entries()}toArray(e="orderByInsert"){if(e!=="orderByInsert"){const t=[];let a=this._head;for(;a!=null;)t.push({key:a,value:this.get(a)}),a=this.nextKey(a);return t}return Array.from(this.keys()).map(t=>({key:t,value:this.get(t)}))}}const Xi=new TextDecoder;class _r{constructor(e,t,a,n){this.buffer=e,this.binOffset=t+a,this.binLength=n;let i=null;if(a!==0)try{const o=new Uint8Array(e,t,a);i=JSON.parse(Xi.decode(o))}catch{i={}}else i={};this.header=i}getKeys(){return Object.keys(this.header)}getData(e,t,a=null,n=null){const i=this.header;if(!(e in i))return null;const o=i[e];if(o instanceof Object){if(Array.isArray(o))return o;{const{buffer:s,binOffset:A,binLength:u}=this,c=o.byteOffset||0,d=o.type||n,l=o.componentType||a;if("type"in o&&n&&o.type!==n)throw new Error("FeatureTable: Specified type does not match expected type.");let h,b;switch(d){case"SCALAR":h=1;break;case"VEC2":h=2;break;case"VEC3":h=3;break;case"VEC4":h=4;break;default:throw new Error(`FeatureTable : Feature type not provided for "${e}".`)}const g=A+c,f=t*h;switch(l){case"BYTE":b=new Int8Array(s,g,f);break;case"UNSIGNED_BYTE":b=new Uint8Array(s,g,f);break;case"SHORT":b=new Int16Array(s,g,f);break;case"UNSIGNED_SHORT":b=new Uint16Array(s,g,f);break;case"INT":b=new Int32Array(s,g,f);break;case"UNSIGNED_INT":b=new Uint32Array(s,g,f);break;case"FLOAT":b=new Float32Array(s,g,f);break;case"DOUBLE":b=new Float64Array(s,g,f);break;default:throw new Error(`FeatureTable : Feature component type not provided for "${e}".`)}if(g+f*b.BYTES_PER_ELEMENT>A+u)throw new Error("FeatureTable: Feature data read outside binary body length.");return b}}return o}}class Zi extends _r{constructor(e,t,a,n,i){super(e,a,n,i),this.batchSize=t}getData(e,t=null,a=null){return super.getData(e,this.batchSize,t,a)}}function Hr(r){let e,t,a,n=-1,i=0;for(let u=0;u<r.length;++u){const c=r[u];if(e===void 0&&(e=c.array.constructor),e!==c.array.constructor)return console.error("THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.array must be of consistent array types across matching attributes."),null;if(t===void 0&&(t=c.itemSize),t!==c.itemSize)return console.error("THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.itemSize must be consistent across matching attributes."),null;if(a===void 0&&(a=c.normalized),a!==c.normalized)return console.error("THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.normalized must be consistent across matching attributes."),null;if(n===-1&&(n=c.gpuType),n!==c.gpuType)return console.error("THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.gpuType must be consistent across matching attributes."),null;i+=c.count*t}const o=new e(i),s=new E.BufferAttribute(o,t,a);let A=0;for(let u=0;u<r.length;++u){const c=r[u];if(c.isInterleavedBufferAttribute){const d=A/t;for(let l=0,h=c.count;l<h;l++)for(let b=0;b<t;b++){const g=c.getComponent(l,b);s.setComponent(l+d,b,g)}}else o.set(c.array,A);A+=c.count*t}return n!==void 0&&(s.gpuType=n),s}function Or(r,e){if(e===E.TrianglesDrawMode)return console.warn("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles."),r;if(e===E.TriangleFanDrawMode||e===E.TriangleStripDrawMode){let t=r.getIndex();if(t===null){const o=[],s=r.getAttribute("position");if(s===void 0)return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible."),r;for(let A=0;A<s.count;A++)o.push(A);r.setIndex(o),t=r.getIndex()}const a=t.count-2,n=[];if(e===E.TriangleFanDrawMode)for(let o=1;o<=a;o++)n.push(t.getX(0)),n.push(t.getX(o)),n.push(t.getX(o+1));else for(let o=0;o<a;o++)o%2==0?(n.push(t.getX(o)),n.push(t.getX(o+1)),n.push(t.getX(o+2))):(n.push(t.getX(o+2)),n.push(t.getX(o+1)),n.push(t.getX(o)));n.length/3!==a&&console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unable to generate correct amount of triangles.");const i=r.clone();return i.setIndex(n),i.clearGroups(),i}return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:",e),r}class zr{constructor(e){St(this,"checkLoaderInitialized",async()=>new Promise(e=>{const t=setInterval(()=>{this.gltfLoader.hasDracoLoader&&!this.gltfLoader.dracoLoader||this.gltfLoader.hasKTX2Loader&&!this.gltfLoader.ktx2Loader||(clearInterval(t),e())},10)}));this.gltfLoader=e,this.tempMatrix=new G.Matrix4,this.zUpToYUpMatrix=new G.Matrix4,this.zUpToYUpMatrix.set(1,0,0,0,0,0,-1,0,0,1,0,0,0,0,0,1)}parseB3DM(e,t,a,n){const i=this,o=new DataView(e),s=String.fromCharCode(o.getUint8(0))+String.fromCharCode(o.getUint8(1))+String.fromCharCode(o.getUint8(2))+String.fromCharCode(o.getUint8(3));console.assert(s==="b3dm");const A=o.getUint32(8,!0);console.assert(A===e.byteLength);const u=o.getUint32(12,!0),c=o.getUint32(16,!0),d=o.getUint32(20,!0),l=o.getUint32(24,!0),h=new _r(e,28,u,c),b=28+u+c;new Zi(e,h.getData("BATCH_LENGTH"),b,d,l);const g=b+d+l,f=new Uint8Array(e,g,A-g).slice().buffer;return new Promise(async(m,p)=>{await this.checkLoaderInitialized(),this.gltfLoader.parse(f,null,C=>{const I=h.getData("RTC_CENTER");I?(this.tempMatrix.makeTranslation(I[0],I[1],I[2]),C.scene.applyMatrix4(this.tempMatrix)):C.userData.gltfExtensions&&C.userData.gltfExtensions.CESIUM_RTC&&(this.tempMatrix.makeTranslation(C.userData.gltfExtensions.CESIUM_RTC.center[0],C.userData.gltfExtensions.CESIUM_RTC.center[1],C.userData.gltfExtensions.CESIUM_RTC.center[2]),C.scene.applyMatrix4(this.tempMatrix)),a&&C.scene.applyMatrix4(i.zUpToYUpMatrix),C.scene.asset=C.asset,C.scene.traverse(x=>{x.isMesh&&(n&&x.applyMatrix4(i.zUpToYUpMatrix),t&&t(x))}),m(C.scene)},C=>{console.error(C)})})}parseB3DMInstanced(e,t,a,n,i){return this.parseB3DM(e,t,n,i).then(o=>{let s,A=[],u=[];o.updateWorldMatrix(!1,!0),o.traverse(d=>{d.isMesh&&(d.geometry.applyMatrix4(d.matrixWorld),A.push(d.geometry),u.push(d.material))});let c=function(d){let l=new Set;return d.forEach(b=>{for(let g in b.attributes)l.add(g)}),d.forEach(b=>{l.forEach(g=>{if(!b.attributes[g]){const f=function(p){switch(p){case"position":case"normal":case"color":return 3;case"uv":case"uv2":return 2;default:throw new Error(`Unknown attribute ${p}`)}}(g),m=new Float32Array(f*b.getAttribute("position").count).fill(0);b.setAttribute(g,new G.BufferAttribute(m,f))}})}),function(b,g=!1){const f=b[0].index!==null,m=new Set(Object.keys(b[0].attributes)),p=new Set(Object.keys(b[0].morphAttributes)),C={},I={},x=b[0].morphTargetsRelative,y=new E.BufferGeometry;let F=0;for(let D=0;D<b.length;++D){const Q=b[D];let M=0;if(f!==(Q.index!==null))return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+D+". All geometries must have compatible attributes; make sure index attribute exists among all geometries, or in none of them."),null;for(const S in Q.attributes){if(!m.has(S))return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+D+'. All geometries must have compatible attributes; make sure "'+S+'" attribute exists among all geometries, or in none of them.'),null;C[S]===void 0&&(C[S]=[]),C[S].push(Q.attributes[S]),M++}if(M!==m.size)return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+D+". Make sure all geometries have the same number of attributes."),null;if(x!==Q.morphTargetsRelative)return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+D+". .morphTargetsRelative must be consistent throughout all geometries."),null;for(const S in Q.morphAttributes){if(!p.has(S))return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+D+". .morphAttributes must be consistent throughout all geometries."),null;I[S]===void 0&&(I[S]=[]),I[S].push(Q.morphAttributes[S])}if(g){let S;if(f)S=Q.index.count;else{if(Q.attributes.position===void 0)return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+D+". The geometry must have either an index or a position attribute"),null;S=Q.attributes.position.count}y.addGroup(F,S,D),F+=S}}if(f){let D=0;const Q=[];for(let M=0;M<b.length;++M){const S=b[M].index;for(let O=0;O<S.count;++O)Q.push(S.getX(O)+D);D+=b[M].attributes.position.count}y.setIndex(Q)}for(const D in C){const Q=Hr(C[D]);if(!Q)return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed while trying to merge the "+D+" attribute."),null;y.setAttribute(D,Q)}for(const D in I){const Q=I[D][0].length;if(Q===0)break;y.morphAttributes=y.morphAttributes||{},y.morphAttributes[D]=[];for(let M=0;M<Q;++M){const S=[];for(let P=0;P<I[D].length;++P)S.push(I[D][P][M]);const O=Hr(S);if(!O)return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed while trying to merge the "+D+" morphAttribute."),null;y.morphAttributes[D].push(O)}}return y}(d,!0)}(A);return s=new G.InstancedMesh(c,u,a),s.baseMatrix=new G.Matrix4().identity(),s})}}const Me=[];for(let r=0;r<256;++r)Me.push((r+256).toString(16).slice(1));let Ta;const $i=new Uint8Array(16),Pr={randomUUID:typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function qr(r,e,t){var n;if(Pr.randomUUID&&!r)return Pr.randomUUID();const a=(r=r||{}).random??((n=r.rng)==null?void 0:n.call(r))??function(){if(!Ta){if(typeof crypto>"u"||!crypto.getRandomValues)throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");Ta=crypto.getRandomValues.bind(crypto)}return Ta($i)}();if(a.length<16)throw new Error("Random bytes length must be >= 16");return a[6]=15&a[6]|64,a[8]=63&a[8]|128,function(i,o=0){return(Me[i[o+0]]+Me[i[o+1]]+Me[i[o+2]]+Me[i[o+3]]+"-"+Me[i[o+4]]+Me[i[o+5]]+"-"+Me[i[o+6]]+Me[i[o+7]]+"-"+Me[i[o+8]]+Me[i[o+9]]+"-"+Me[i[o+10]]+Me[i[o+11]]+Me[i[o+12]]+Me[i[o+13]]+Me[i[o+14]]+Me[i[o+15]]).toLowerCase()}(a)}class eo{constructor(e,t){St(this,"checkLoaderInitialized",async()=>{const e=this;return new Promise(t=>{const a=setInterval(()=>{e.gltfLoader.hasDracoLoader&&!e.gltfLoader.dracoLoader||e.gltfLoader.hasKTX2Loader&&!e.gltfLoader.ktx2Loader||(clearInterval(a),t())},10)})});this.renderer=t,this.gltfLoader=e}parseSplats(e,t,a,n){const i=this;return new Promise(async(o,s)=>{await i.checkLoaderInitialized(),i.gltfLoader.parse(e,null,A=>{A.scene;const u=A.scene.children[0],c=u.geometry.attributes.position,d=u.geometry.attributes.color,l=u.geometry.attributes.cov_0,h=u.geometry.attributes.cov_1,b=n.addSplatsTile(c,d,l,h);A.scene.traverse(g=>{g.dispose&&g.dispose()}),o(b)},A=>{console.error(A)})})}}class Jr extends E.Loader{constructor(e){super(e),this.dracoLoader=null,this.ktx2Loader=null,this.meshoptDecoder=null,this.pluginCallbacks=[],this.register(function(t){return new io(t)}),this.register(function(t){return new oo(t)}),this.register(function(t){return new fo(t)}),this.register(function(t){return new po(t)}),this.register(function(t){return new mo(t)}),this.register(function(t){return new Ao(t)}),this.register(function(t){return new co(t)}),this.register(function(t){return new uo(t)}),this.register(function(t){return new ho(t)}),this.register(function(t){return new no(t)}),this.register(function(t){return new bo(t)}),this.register(function(t){return new so(t)}),this.register(function(t){return new go(t)}),this.register(function(t){return new lo(t)}),this.register(function(t){return new ao(t)}),this.register(function(t){return new Eo(t)}),this.register(function(t){return new Co(t)})}load(e,t,a,n){const i=this;let o;if(this.resourcePath!=="")o=this.resourcePath;else if(this.path!==""){const u=E.LoaderUtils.extractUrlBase(e);o=E.LoaderUtils.resolveURL(u,this.path)}else o=E.LoaderUtils.extractUrlBase(e);this.manager.itemStart(e);const s=function(u){n?n(u):console.error(u),i.manager.itemError(e),i.manager.itemEnd(e)},A=new E.FileLoader(this.manager);A.setPath(this.path),A.setResponseType("arraybuffer"),A.setRequestHeader(this.requestHeader),A.setWithCredentials(this.withCredentials),A.load(e,function(u){try{i.parse(u,o,function(c){t(c),i.manager.itemEnd(e)},s)}catch(c){s(c)}},a,s)}setDRACOLoader(e){return this.dracoLoader=e,this}setKTX2Loader(e){return this.ktx2Loader=e,this}setMeshoptDecoder(e){return this.meshoptDecoder=e,this}register(e){return this.pluginCallbacks.indexOf(e)===-1&&this.pluginCallbacks.push(e),this}unregister(e){return this.pluginCallbacks.indexOf(e)!==-1&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(e),1),this}parse(e,t,a,n){let i;const o={},s={},A=new TextDecoder;if(typeof e=="string")i=JSON.parse(e);else if(e instanceof ArrayBuffer)if(A.decode(new Uint8Array(e,0,4))===Kr){try{o[te.KHR_BINARY_GLTF]=new Do(e)}catch(c){return void(n&&n(c))}i=JSON.parse(o[te.KHR_BINARY_GLTF].content)}else i=JSON.parse(A.decode(e));else i=e;if(i.asset===void 0||i.asset.version[0]<2)return void(n&&n(new Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported.")));const u=new No(i,{path:t||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});u.fileLoader.setRequestHeader(this.requestHeader);for(let c=0;c<this.pluginCallbacks.length;c++){const d=this.pluginCallbacks[c](u);d.name||console.error("THREE.GLTFLoader: Invalid plugin found: missing name"),s[d.name]=d,o[d.name]=!0}if(i.extensionsUsed)for(let c=0;c<i.extensionsUsed.length;++c){const d=i.extensionsUsed[c],l=i.extensionsRequired||[];switch(d){case te.KHR_MATERIALS_UNLIT:o[d]=new ro;break;case te.KHR_DRACO_MESH_COMPRESSION:o[d]=new yo(i,this.dracoLoader);break;case te.KHR_TEXTURE_TRANSFORM:o[d]=new wo;break;case te.KHR_MESH_QUANTIZATION:o[d]=new xo;break;default:l.indexOf(d)>=0&&s[d]===void 0&&console.warn('THREE.GLTFLoader: Unknown extension "'+d+'".')}}u.setExtensions(o),u.setPlugins(s),u.parse(a,n)}parseAsync(e,t){const a=this;return new Promise(function(n,i){a.parse(e,t,n,i)})}}function to(){let r={};return{get:function(e){return r[e]},add:function(e,t){r[e]=t},remove:function(e){delete r[e]},removeAll:function(){r={}}}}const te={KHR_BINARY_GLTF:"KHR_binary_glTF",KHR_DRACO_MESH_COMPRESSION:"KHR_draco_mesh_compression",KHR_LIGHTS_PUNCTUAL:"KHR_lights_punctual",KHR_MATERIALS_CLEARCOAT:"KHR_materials_clearcoat",KHR_MATERIALS_DISPERSION:"KHR_materials_dispersion",KHR_MATERIALS_IOR:"KHR_materials_ior",KHR_MATERIALS_SHEEN:"KHR_materials_sheen",KHR_MATERIALS_SPECULAR:"KHR_materials_specular",KHR_MATERIALS_TRANSMISSION:"KHR_materials_transmission",KHR_MATERIALS_IRIDESCENCE:"KHR_materials_iridescence",KHR_MATERIALS_ANISOTROPY:"KHR_materials_anisotropy",KHR_MATERIALS_UNLIT:"KHR_materials_unlit",KHR_MATERIALS_VOLUME:"KHR_materials_volume",KHR_TEXTURE_BASISU:"KHR_texture_basisu",KHR_TEXTURE_TRANSFORM:"KHR_texture_transform",KHR_MESH_QUANTIZATION:"KHR_mesh_quantization",KHR_MATERIALS_EMISSIVE_STRENGTH:"KHR_materials_emissive_strength",EXT_MATERIALS_BUMP:"EXT_materials_bump",EXT_TEXTURE_WEBP:"EXT_texture_webp",EXT_TEXTURE_AVIF:"EXT_texture_avif",EXT_MESHOPT_COMPRESSION:"EXT_meshopt_compression",EXT_MESH_GPU_INSTANCING:"EXT_mesh_gpu_instancing"};class ao{constructor(e){this.parser=e,this.name=te.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){const e=this.parser,t=this.parser.json.nodes||[];for(let a=0,n=t.length;a<n;a++){const i=t[a];i.extensions&&i.extensions[this.name]&&i.extensions[this.name].light!==void 0&&e._addNodeRef(this.cache,i.extensions[this.name].light)}}_loadLight(e){const t=this.parser,a="light:"+e;let n=t.cache.get(a);if(n)return n;const i=t.json,o=((i.extensions&&i.extensions[this.name]||{}).lights||[])[e];let s;const A=new E.Color(16777215);o.color!==void 0&&A.setRGB(o.color[0],o.color[1],o.color[2],E.LinearSRGBColorSpace);const u=o.range!==void 0?o.range:0;switch(o.type){case"directional":s=new E.DirectionalLight(A),s.target.position.set(0,0,-1),s.add(s.target);break;case"point":s=new E.PointLight(A),s.distance=u;break;case"spot":s=new E.SpotLight(A),s.distance=u,o.spot=o.spot||{},o.spot.innerConeAngle=o.spot.innerConeAngle!==void 0?o.spot.innerConeAngle:0,o.spot.outerConeAngle=o.spot.outerConeAngle!==void 0?o.spot.outerConeAngle:Math.PI/4,s.angle=o.spot.outerConeAngle,s.penumbra=1-o.spot.innerConeAngle/o.spot.outerConeAngle,s.target.position.set(0,0,-1),s.add(s.target);break;default:throw new Error("THREE.GLTFLoader: Unexpected light type: "+o.type)}return s.position.set(0,0,0),At(s,o),o.intensity!==void 0&&(s.intensity=o.intensity),s.name=t.createUniqueName(o.name||"light_"+e),n=Promise.resolve(s),t.cache.add(a,n),n}getDependency(e,t){if(e==="light")return this._loadLight(t)}createNodeAttachment(e){const t=this,a=this.parser,n=a.json.nodes[e],i=(n.extensions&&n.extensions[this.name]||{}).light;return i===void 0?null:this._loadLight(i).then(function(o){return a._getNodeRef(t.cache,i,o)})}}class ro{constructor(){this.name=te.KHR_MATERIALS_UNLIT}getMaterialType(){return E.MeshBasicMaterial}extendParams(e,t,a){const n=[];e.color=new E.Color(1,1,1),e.opacity=1;const i=t.pbrMetallicRoughness;if(i){if(Array.isArray(i.baseColorFactor)){const o=i.baseColorFactor;e.color.setRGB(o[0],o[1],o[2],E.LinearSRGBColorSpace),e.opacity=o[3]}i.baseColorTexture!==void 0&&n.push(a.assignTexture(e,"map",i.baseColorTexture,E.SRGBColorSpace))}return Promise.all(n)}}class no{constructor(e){this.parser=e,this.name=te.KHR_MATERIALS_EMISSIVE_STRENGTH}extendMaterialParams(e,t){const a=this.parser.json.materials[e];if(!a.extensions||!a.extensions[this.name])return Promise.resolve();const n=a.extensions[this.name].emissiveStrength;return n!==void 0&&(t.emissiveIntensity=n),Promise.resolve()}}class io{constructor(e){this.parser=e,this.name=te.KHR_MATERIALS_CLEARCOAT}getMaterialType(e){const t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?E.MeshPhysicalMaterial:null}extendMaterialParams(e,t){const a=this.parser,n=a.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();const i=[],o=n.extensions[this.name];if(o.clearcoatFactor!==void 0&&(t.clearcoat=o.clearcoatFactor),o.clearcoatTexture!==void 0&&i.push(a.assignTexture(t,"clearcoatMap",o.clearcoatTexture)),o.clearcoatRoughnessFactor!==void 0&&(t.clearcoatRoughness=o.clearcoatRoughnessFactor),o.clearcoatRoughnessTexture!==void 0&&i.push(a.assignTexture(t,"clearcoatRoughnessMap",o.clearcoatRoughnessTexture)),o.clearcoatNormalTexture!==void 0&&(i.push(a.assignTexture(t,"clearcoatNormalMap",o.clearcoatNormalTexture)),o.clearcoatNormalTexture.scale!==void 0)){const s=o.clearcoatNormalTexture.scale;t.clearcoatNormalScale=new E.Vector2(s,s)}return Promise.all(i)}}class oo{constructor(e){this.parser=e,this.name=te.KHR_MATERIALS_DISPERSION}getMaterialType(e){const t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?E.MeshPhysicalMaterial:null}extendMaterialParams(e,t){const a=this.parser.json.materials[e];if(!a.extensions||!a.extensions[this.name])return Promise.resolve();const n=a.extensions[this.name];return t.dispersion=n.dispersion!==void 0?n.dispersion:0,Promise.resolve()}}class so{constructor(e){this.parser=e,this.name=te.KHR_MATERIALS_IRIDESCENCE}getMaterialType(e){const t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?E.MeshPhysicalMaterial:null}extendMaterialParams(e,t){const a=this.parser,n=a.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();const i=[],o=n.extensions[this.name];return o.iridescenceFactor!==void 0&&(t.iridescence=o.iridescenceFactor),o.iridescenceTexture!==void 0&&i.push(a.assignTexture(t,"iridescenceMap",o.iridescenceTexture)),o.iridescenceIor!==void 0&&(t.iridescenceIOR=o.iridescenceIor),t.iridescenceThicknessRange===void 0&&(t.iridescenceThicknessRange=[100,400]),o.iridescenceThicknessMinimum!==void 0&&(t.iridescenceThicknessRange[0]=o.iridescenceThicknessMinimum),o.iridescenceThicknessMaximum!==void 0&&(t.iridescenceThicknessRange[1]=o.iridescenceThicknessMaximum),o.iridescenceThicknessTexture!==void 0&&i.push(a.assignTexture(t,"iridescenceThicknessMap",o.iridescenceThicknessTexture)),Promise.all(i)}}class Ao{constructor(e){this.parser=e,this.name=te.KHR_MATERIALS_SHEEN}getMaterialType(e){const t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?E.MeshPhysicalMaterial:null}extendMaterialParams(e,t){const a=this.parser,n=a.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();const i=[];t.sheenColor=new E.Color(0,0,0),t.sheenRoughness=0,t.sheen=1;const o=n.extensions[this.name];if(o.sheenColorFactor!==void 0){const s=o.sheenColorFactor;t.sheenColor.setRGB(s[0],s[1],s[2],E.LinearSRGBColorSpace)}return o.sheenRoughnessFactor!==void 0&&(t.sheenRoughness=o.sheenRoughnessFactor),o.sheenColorTexture!==void 0&&i.push(a.assignTexture(t,"sheenColorMap",o.sheenColorTexture,E.SRGBColorSpace)),o.sheenRoughnessTexture!==void 0&&i.push(a.assignTexture(t,"sheenRoughnessMap",o.sheenRoughnessTexture)),Promise.all(i)}}class co{constructor(e){this.parser=e,this.name=te.KHR_MATERIALS_TRANSMISSION}getMaterialType(e){const t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?E.MeshPhysicalMaterial:null}extendMaterialParams(e,t){const a=this.parser,n=a.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();const i=[],o=n.extensions[this.name];return o.transmissionFactor!==void 0&&(t.transmission=o.transmissionFactor),o.transmissionTexture!==void 0&&i.push(a.assignTexture(t,"transmissionMap",o.transmissionTexture)),Promise.all(i)}}class uo{constructor(e){this.parser=e,this.name=te.KHR_MATERIALS_VOLUME}getMaterialType(e){const t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?E.MeshPhysicalMaterial:null}extendMaterialParams(e,t){const a=this.parser,n=a.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();const i=[],o=n.extensions[this.name];t.thickness=o.thicknessFactor!==void 0?o.thicknessFactor:0,o.thicknessTexture!==void 0&&i.push(a.assignTexture(t,"thicknessMap",o.thicknessTexture)),t.attenuationDistance=o.attenuationDistance||1/0;const s=o.attenuationColor||[1,1,1];return t.attenuationColor=new E.Color().setRGB(s[0],s[1],s[2],E.LinearSRGBColorSpace),Promise.all(i)}}class ho{constructor(e){this.parser=e,this.name=te.KHR_MATERIALS_IOR}getMaterialType(e){const t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?E.MeshPhysicalMaterial:null}extendMaterialParams(e,t){const a=this.parser.json.materials[e];if(!a.extensions||!a.extensions[this.name])return Promise.resolve();const n=a.extensions[this.name];return t.ior=n.ior!==void 0?n.ior:1.5,Promise.resolve()}}class bo{constructor(e){this.parser=e,this.name=te.KHR_MATERIALS_SPECULAR}getMaterialType(e){const t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?E.MeshPhysicalMaterial:null}extendMaterialParams(e,t){const a=this.parser,n=a.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();const i=[],o=n.extensions[this.name];t.specularIntensity=o.specularFactor!==void 0?o.specularFactor:1,o.specularTexture!==void 0&&i.push(a.assignTexture(t,"specularIntensityMap",o.specularTexture));const s=o.specularColorFactor||[1,1,1];return t.specularColor=new E.Color().setRGB(s[0],s[1],s[2],E.LinearSRGBColorSpace),o.specularColorTexture!==void 0&&i.push(a.assignTexture(t,"specularColorMap",o.specularColorTexture,E.SRGBColorSpace)),Promise.all(i)}}class lo{constructor(e){this.parser=e,this.name=te.EXT_MATERIALS_BUMP}getMaterialType(e){const t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?E.MeshPhysicalMaterial:null}extendMaterialParams(e,t){const a=this.parser,n=a.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();const i=[],o=n.extensions[this.name];return t.bumpScale=o.bumpFactor!==void 0?o.bumpFactor:1,o.bumpTexture!==void 0&&i.push(a.assignTexture(t,"bumpMap",o.bumpTexture)),Promise.all(i)}}class go{constructor(e){this.parser=e,this.name=te.KHR_MATERIALS_ANISOTROPY}getMaterialType(e){const t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?E.MeshPhysicalMaterial:null}extendMaterialParams(e,t){const a=this.parser,n=a.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();const i=[],o=n.extensions[this.name];return o.anisotropyStrength!==void 0&&(t.anisotropy=o.anisotropyStrength),o.anisotropyRotation!==void 0&&(t.anisotropyRotation=o.anisotropyRotation),o.anisotropyTexture!==void 0&&i.push(a.assignTexture(t,"anisotropyMap",o.anisotropyTexture)),Promise.all(i)}}class fo{constructor(e){this.parser=e,this.name=te.KHR_TEXTURE_BASISU}loadTexture(e){const t=this.parser,a=t.json,n=a.textures[e];if(!n.extensions||!n.extensions[this.name])return null;const i=n.extensions[this.name],o=t.options.ktx2Loader;if(!o){if(a.extensionsRequired&&a.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures");return null}return t.loadTextureImage(e,i.source,o)}}class po{constructor(e){this.parser=e,this.name=te.EXT_TEXTURE_WEBP}loadTexture(e){const t=this.name,a=this.parser,n=a.json,i=n.textures[e];if(!i.extensions||!i.extensions[t])return null;const o=i.extensions[t],s=n.images[o.source];let A=a.textureLoader;if(s.uri){const u=a.options.manager.getHandler(s.uri);u!==null&&(A=u)}return a.loadTextureImage(e,o.source,A)}}class mo{constructor(e){this.parser=e,this.name=te.EXT_TEXTURE_AVIF}loadTexture(e){const t=this.name,a=this.parser,n=a.json,i=n.textures[e];if(!i.extensions||!i.extensions[t])return null;const o=i.extensions[t],s=n.images[o.source];let A=a.textureLoader;if(s.uri){const u=a.options.manager.getHandler(s.uri);u!==null&&(A=u)}return a.loadTextureImage(e,o.source,A)}}class Eo{constructor(e){this.name=te.EXT_MESHOPT_COMPRESSION,this.parser=e}loadBufferView(e){const t=this.parser.json,a=t.bufferViews[e];if(a.extensions&&a.extensions[this.name]){const n=a.extensions[this.name],i=this.parser.getDependency("buffer",n.buffer),o=this.parser.options.meshoptDecoder;if(!o||!o.supported){if(t.extensionsRequired&&t.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files");return null}return i.then(function(s){const A=n.byteOffset||0,u=n.byteLength||0,c=n.count,d=n.byteStride,l=new Uint8Array(s,A,u);return o.decodeGltfBufferAsync?o.decodeGltfBufferAsync(c,d,l,n.mode,n.filter).then(function(h){return h.buffer}):o.ready.then(function(){const h=new ArrayBuffer(c*d);return o.decodeGltfBuffer(new Uint8Array(h),c,d,l,n.mode,n.filter),h})})}return null}}class Co{constructor(e){this.name=te.EXT_MESH_GPU_INSTANCING,this.parser=e}createNodeMesh(e){const t=this.parser.json,a=t.nodes[e];if(!a.extensions||!a.extensions[this.name]||a.mesh===void 0)return null;const n=t.meshes[a.mesh];for(const A of n.primitives)if(A.mode!==Ke.TRIANGLES&&A.mode!==Ke.TRIANGLE_STRIP&&A.mode!==Ke.TRIANGLE_FAN&&A.mode!==void 0)return null;const i=a.extensions[this.name].attributes,o=[],s={};for(const A in i)o.push(this.parser.getDependency("accessor",i[A]).then(u=>(s[A]=u,s[A])));return o.length<1?null:(o.push(this.parser.createNodeMesh(e)),Promise.all(o).then(A=>{const u=A.pop(),c=u.isGroup?u.children:[u],d=A[0].count,l=[];for(const h of c){const b=new E.Matrix4,g=new E.Vector3,f=new E.Quaternion,m=new E.Vector3(1,1,1),p=new E.InstancedMesh(h.geometry,h.material,d);for(let C=0;C<d;C++)s.TRANSLATION&&g.fromBufferAttribute(s.TRANSLATION,C),s.ROTATION&&f.fromBufferAttribute(s.ROTATION,C),s.SCALE&&m.fromBufferAttribute(s.SCALE,C),p.setMatrixAt(C,b.compose(g,f,m));for(const C in s)if(C==="_COLOR_0"){const I=s[C];p.instanceColor=new E.InstancedBufferAttribute(I.array,I.itemSize,I.normalized)}else C!=="TRANSLATION"&&C!=="ROTATION"&&C!=="SCALE"&&h.geometry.setAttribute(C,s[C]);E.Object3D.prototype.copy.call(p,h),this.parser.assignFinalMaterial(p),l.push(p)}return u.isGroup?(u.clear(),u.add(...l),u):l[0]}))}}const Kr="glTF",Io=1313821514,Bo=5130562;class Do{constructor(e){this.name=te.KHR_BINARY_GLTF,this.content=null,this.body=null;const t=new DataView(e,0,12),a=new TextDecoder;if(this.header={magic:a.decode(new Uint8Array(e.slice(0,4))),version:t.getUint32(4,!0),length:t.getUint32(8,!0)},this.header.magic!==Kr)throw new Error("THREE.GLTFLoader: Unsupported glTF-Binary header.");if(this.header.version<2)throw new Error("THREE.GLTFLoader: Legacy binary file detected.");const n=this.header.length-12,i=new DataView(e,12);let o=0;for(;o<n;){const s=i.getUint32(o,!0);o+=4;const A=i.getUint32(o,!0);if(o+=4,A===Io){const u=new Uint8Array(e,12+o,s);this.content=a.decode(u)}else if(A===Bo){const u=12+o;this.body=e.slice(u,u+s)}o+=s}if(this.content===null)throw new Error("THREE.GLTFLoader: JSON content not found.")}}class yo{constructor(e,t){if(!t)throw new Error("THREE.GLTFLoader: No DRACOLoader instance provided.");this.name=te.KHR_DRACO_MESH_COMPRESSION,this.json=e,this.dracoLoader=t,this.dracoLoader.preload()}decodePrimitive(e,t){const a=this.json,n=this.dracoLoader,i=e.extensions[this.name].bufferView,o=e.extensions[this.name].attributes,s={},A={},u={};for(const c in o){const d=Ua[c]||c.toLowerCase();s[d]=o[c]}for(const c in e.attributes){const d=Ua[c]||c.toLowerCase();if(o[c]!==void 0){const l=a.accessors[e.attributes[c]],h=Tt[l.componentType];u[d]=h.name,A[d]=l.normalized===!0}}return t.getDependency("bufferView",i).then(function(c){return new Promise(function(d,l){n.decodeDracoFile(c,function(h){for(const b in h.attributes){const g=h.attributes[b],f=A[b];f!==void 0&&(g.normalized=f)}d(h)},s,u,E.LinearSRGBColorSpace,l)})})}}class wo{constructor(){this.name=te.KHR_TEXTURE_TRANSFORM}extendTexture(e,t){return(t.texCoord!==void 0&&t.texCoord!==e.channel||t.offset!==void 0||t.rotation!==void 0||t.scale!==void 0)&&(e=e.clone(),t.texCoord!==void 0&&(e.channel=t.texCoord),t.offset!==void 0&&e.offset.fromArray(t.offset),t.rotation!==void 0&&(e.rotation=t.rotation),t.scale!==void 0&&e.repeat.fromArray(t.scale),e.needsUpdate=!0),e}}class xo{constructor(){this.name=te.KHR_MESH_QUANTIZATION}}class Vr extends E.Interpolant{constructor(e,t,a,n){super(e,t,a,n)}copySampleValue_(e){const t=this.resultBuffer,a=this.sampleValues,n=this.valueSize,i=e*n*3+n;for(let o=0;o!==n;o++)t[o]=a[i+o];return t}interpolate_(e,t,a,n){const i=this.resultBuffer,o=this.sampleValues,s=this.valueSize,A=2*s,u=3*s,c=n-t,d=(a-t)/c,l=d*d,h=l*d,b=e*u,g=b-u,f=-2*h+3*l,m=h-l,p=1-f,C=m-l+d;for(let I=0;I!==s;I++){const x=o[g+I+s],y=o[g+I+A]*c,F=o[b+I+s],D=o[b+I]*c;i[I]=p*x+C*y+f*F+m*D}return i}}const Fo=new E.Quaternion;class Qo extends Vr{interpolate_(e,t,a,n){const i=super.interpolate_(e,t,a,n);return Fo.fromArray(i).normalize().toArray(i),i}}const Ke={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6},Tt={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},Wr={9728:E.NearestFilter,9729:E.LinearFilter,9984:E.NearestMipmapNearestFilter,9985:E.LinearMipmapNearestFilter,9986:E.NearestMipmapLinearFilter,9987:E.LinearMipmapLinearFilter},Yr={33071:E.ClampToEdgeWrapping,33648:E.MirroredRepeatWrapping,10497:E.RepeatWrapping},Na={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},Ua={POSITION:"position",NORMAL:"normal",TANGENT:"tangent",TEXCOORD_0:"uv",TEXCOORD_1:"uv1",TEXCOORD_2:"uv2",TEXCOORD_3:"uv3",COLOR_0:"color",WEIGHTS_0:"skinWeight",JOINTS_0:"skinIndex"},gt={scale:"scale",translation:"position",rotation:"quaternion",weights:"morphTargetInfluences"},vo={CUBICSPLINE:void 0,LINEAR:E.InterpolateLinear,STEP:E.InterpolateDiscrete},ko="OPAQUE",jo="MASK",Mo="BLEND";function wt(r,e,t){for(const a in t.extensions)r[a]===void 0&&(e.userData.gltfExtensions=e.userData.gltfExtensions||{},e.userData.gltfExtensions[a]=t.extensions[a])}function At(r,e){e.extras!==void 0&&(typeof e.extras=="object"?Object.assign(r.userData,e.extras):console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, "+e.extras))}function So(r,e){if(r.updateMorphTargets(),e.weights!==void 0)for(let t=0,a=e.weights.length;t<a;t++)r.morphTargetInfluences[t]=e.weights[t];if(e.extras&&Array.isArray(e.extras.targetNames)){const t=e.extras.targetNames;if(r.morphTargetInfluences.length===t.length){r.morphTargetDictionary={};for(let a=0,n=t.length;a<n;a++)r.morphTargetDictionary[t[a]]=a}else console.warn("THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.")}}function Ro(r){let e;const t=r.extensions&&r.extensions[te.KHR_DRACO_MESH_COMPRESSION];if(e=t?"draco:"+t.bufferView+":"+t.indices+":"+La(t.attributes):r.indices+":"+La(r.attributes)+":"+r.mode,r.targets!==void 0)for(let a=0,n=r.targets.length;a<n;a++)e+=":"+La(r.targets[a]);return e}function La(r){let e="";const t=Object.keys(r).sort();for(let a=0,n=t.length;a<n;a++)e+=t[a]+":"+r[t[a]]+";";return e}function Ga(r){switch(r){case Int8Array:return 1/127;case Uint8Array:return 1/255;case Int16Array:return 1/32767;case Uint16Array:return 1/65535;default:throw new Error("THREE.GLTFLoader: Unsupported normalized accessor component type.")}}const To=new E.Matrix4;class No{constructor(e={},t={}){this.json=e,this.extensions={},this.plugins={},this.options=t,this.cache=new to,this.associations=new Map,this.primitiveCache={},this.nodeCache={},this.meshCache={refs:{},uses:{}},this.cameraCache={refs:{},uses:{}},this.lightCache={refs:{},uses:{}},this.sourceCache={},this.textureCache={},this.nodeNamesUsed={};let a=!1,n=-1,i=!1,o=-1;if(typeof navigator<"u"){const s=navigator.userAgent;a=/^((?!chrome|android).)*safari/i.test(s)===!0;const A=s.match(/Version\/(\d+)/);n=a&&A?parseInt(A[1],10):-1,i=s.indexOf("Firefox")>-1,o=i?s.match(/Firefox\/([0-9]+)\./)[1]:-1}typeof createImageBitmap>"u"||a&&n<17||i&&o<98?this.textureLoader=new E.TextureLoader(this.options.manager):this.textureLoader=new E.ImageBitmapLoader(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new E.FileLoader(this.options.manager),this.fileLoader.setResponseType("arraybuffer"),this.options.crossOrigin==="use-credentials"&&this.fileLoader.setWithCredentials(!0)}setExtensions(e){this.extensions=e}setPlugins(e){this.plugins=e}parse(e,t){const a=this,n=this.json,i=this.extensions;this.cache.removeAll(),this.nodeCache={},this._invokeAll(function(o){return o._markDefs&&o._markDefs()}),Promise.all(this._invokeAll(function(o){return o.beforeRoot&&o.beforeRoot()})).then(function(){return Promise.all([a.getDependencies("scene"),a.getDependencies("animation"),a.getDependencies("camera")])}).then(function(o){const s={scene:o[0][n.scene||0],scenes:o[0],animations:o[1],cameras:o[2],asset:n.asset,parser:a,userData:{}};return wt(i,s,n),At(s,n),Promise.all(a._invokeAll(function(A){return A.afterRoot&&A.afterRoot(s)})).then(function(){for(const A of s.scenes)A.updateMatrixWorld();e(s)})}).catch(t)}_markDefs(){const e=this.json.nodes||[],t=this.json.skins||[],a=this.json.meshes||[];for(let n=0,i=t.length;n<i;n++){const o=t[n].joints;for(let s=0,A=o.length;s<A;s++)e[o[s]].isBone=!0}for(let n=0,i=e.length;n<i;n++){const o=e[n];o.mesh!==void 0&&(this._addNodeRef(this.meshCache,o.mesh),o.skin!==void 0&&(a[o.mesh].isSkinnedMesh=!0)),o.camera!==void 0&&this._addNodeRef(this.cameraCache,o.camera)}}_addNodeRef(e,t){t!==void 0&&(e.refs[t]===void 0&&(e.refs[t]=e.uses[t]=0),e.refs[t]++)}_getNodeRef(e,t,a){if(e.refs[t]<=1)return a;const n=a.clone(),i=(o,s)=>{const A=this.associations.get(o);A!=null&&this.associations.set(s,A);for(const[u,c]of o.children.entries())i(c,s.children[u])};return i(a,n),n.name+="_instance_"+e.uses[t]++,n}_invokeOne(e){const t=Object.values(this.plugins);t.push(this);for(let a=0;a<t.length;a++){const n=e(t[a]);if(n)return n}return null}_invokeAll(e){const t=Object.values(this.plugins);t.unshift(this);const a=[];for(let n=0;n<t.length;n++){const i=e(t[n]);i&&a.push(i)}return a}getDependency(e,t){const a=e+":"+t;let n=this.cache.get(a);if(!n){switch(e){case"scene":n=this.loadScene(t);break;case"node":n=this._invokeOne(function(i){return i.loadNode&&i.loadNode(t)});break;case"mesh":n=this._invokeOne(function(i){return i.loadMesh&&i.loadMesh(t)});break;case"accessor":n=this.loadAccessor(t);break;case"bufferView":n=this._invokeOne(function(i){return i.loadBufferView&&i.loadBufferView(t)});break;case"buffer":n=this.loadBuffer(t);break;case"material":n=this._invokeOne(function(i){return i.loadMaterial&&i.loadMaterial(t)});break;case"texture":n=this._invokeOne(function(i){return i.loadTexture&&i.loadTexture(t)});break;case"skin":n=this.loadSkin(t);break;case"animation":n=this._invokeOne(function(i){return i.loadAnimation&&i.loadAnimation(t)});break;case"camera":n=this.loadCamera(t);break;default:if(n=this._invokeOne(function(i){return i!=this&&i.getDependency&&i.getDependency(e,t)}),!n)throw new Error("Unknown type: "+e)}this.cache.add(a,n)}return n}getDependencies(e){let t=this.cache.get(e);if(!t){const a=this,n=this.json[e+(e==="mesh"?"es":"s")]||[];t=Promise.all(n.map(function(i,o){return a.getDependency(e,o)})),this.cache.add(e,t)}return t}loadBuffer(e){const t=this.json.buffers[e],a=this.fileLoader;if(t.type&&t.type!=="arraybuffer")throw new Error("THREE.GLTFLoader: "+t.type+" buffer type is not supported.");if(t.uri===void 0&&e===0)return Promise.resolve(this.extensions[te.KHR_BINARY_GLTF].body);const n=this.options;return new Promise(function(i,o){a.load(E.LoaderUtils.resolveURL(t.uri,n.path),i,void 0,function(){o(new Error('THREE.GLTFLoader: Failed to load buffer "'+t.uri+'".'))})})}loadBufferView(e){const t=this.json.bufferViews[e];return this.getDependency("buffer",t.buffer).then(function(a){const n=t.byteLength||0,i=t.byteOffset||0;return a.slice(i,i+n)})}loadAccessor(e){const t=this,a=this.json,n=this.json.accessors[e];if(n.bufferView===void 0&&n.sparse===void 0){const o=Na[n.type],s=Tt[n.componentType],A=n.normalized===!0,u=new s(n.count*o);return Promise.resolve(new E.BufferAttribute(u,o,A))}const i=[];return n.bufferView!==void 0?i.push(this.getDependency("bufferView",n.bufferView)):i.push(null),n.sparse!==void 0&&(i.push(this.getDependency("bufferView",n.sparse.indices.bufferView)),i.push(this.getDependency("bufferView",n.sparse.values.bufferView))),Promise.all(i).then(function(o){const s=o[0],A=Na[n.type],u=Tt[n.componentType],c=u.BYTES_PER_ELEMENT,d=c*A,l=n.byteOffset||0,h=n.bufferView!==void 0?a.bufferViews[n.bufferView].byteStride:void 0,b=n.normalized===!0;let g,f;if(h&&h!==d){const m=Math.floor(l/h),p="InterleavedBuffer:"+n.bufferView+":"+n.componentType+":"+m+":"+n.count;let C=t.cache.get(p);C||(g=new u(s,m*h,n.count*h/c),C=new E.InterleavedBuffer(g,h/c),t.cache.add(p,C)),f=new E.InterleavedBufferAttribute(C,A,l%h/c,b)}else g=s===null?new u(n.count*A):new u(s,l,n.count*A),f=new E.BufferAttribute(g,A,b);if(n.sparse!==void 0){const m=Na.SCALAR,p=Tt[n.sparse.indices.componentType],C=n.sparse.indices.byteOffset||0,I=n.sparse.values.byteOffset||0,x=new p(o[1],C,n.sparse.count*m),y=new u(o[2],I,n.sparse.count*A);s!==null&&(f=new E.BufferAttribute(f.array.slice(),f.itemSize,f.normalized)),f.normalized=!1;for(let F=0,D=x.length;F<D;F++){const Q=x[F];if(f.setX(Q,y[F*A]),A>=2&&f.setY(Q,y[F*A+1]),A>=3&&f.setZ(Q,y[F*A+2]),A>=4&&f.setW(Q,y[F*A+3]),A>=5)throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}f.normalized=b}return f})}loadTexture(e){const t=this.json,a=this.options,n=t.textures[e].source,i=t.images[n];let o=this.textureLoader;if(i.uri){const s=a.manager.getHandler(i.uri);s!==null&&(o=s)}return this.loadTextureImage(e,n,o)}loadTextureImage(e,t,a){const n=this,i=this.json,o=i.textures[e],s=i.images[t],A=(s.uri||s.bufferView)+":"+o.sampler;if(this.textureCache[A])return this.textureCache[A];const u=this.loadImageSource(t,a).then(function(c){c.flipY=!1,c.name=o.name||s.name||"",c.name===""&&typeof s.uri=="string"&&s.uri.startsWith("data:image/")===!1&&(c.name=s.uri);const d=(i.samplers||{})[o.sampler]||{};return c.magFilter=Wr[d.magFilter]||E.LinearFilter,c.minFilter=Wr[d.minFilter]||E.LinearMipmapLinearFilter,c.wrapS=Yr[d.wrapS]||E.RepeatWrapping,c.wrapT=Yr[d.wrapT]||E.RepeatWrapping,c.generateMipmaps=!c.isCompressedTexture&&c.minFilter!==E.NearestFilter&&c.minFilter!==E.LinearFilter,n.associations.set(c,{textures:e}),c}).catch(function(){return null});return this.textureCache[A]=u,u}loadImageSource(e,t){const a=this,n=this.json,i=this.options;if(this.sourceCache[e]!==void 0)return this.sourceCache[e].then(d=>d.clone());const o=n.images[e],s=self.URL||self.webkitURL;let A=o.uri||"",u=!1;if(o.bufferView!==void 0)A=a.getDependency("bufferView",o.bufferView).then(function(d){u=!0;const l=new Blob([d],{type:o.mimeType});return A=s.createObjectURL(l),A});else if(o.uri===void 0)throw new Error("THREE.GLTFLoader: Image "+e+" is missing URI and bufferView");const c=Promise.resolve(A).then(function(d){return new Promise(function(l,h){let b=l;t.isImageBitmapLoader===!0&&(b=function(g){const f=new E.Texture(g);f.needsUpdate=!0,l(f)}),t.load(E.LoaderUtils.resolveURL(d,i.path),b,void 0,h)})}).then(function(d){var l;return u===!0&&s.revokeObjectURL(A),At(d,o),d.userData.mimeType=o.mimeType||((l=o.uri).search(/\.jpe?g($|\?)/i)>0||l.search(/^data\:image\/jpeg/)===0?"image/jpeg":l.search(/\.webp($|\?)/i)>0||l.search(/^data\:image\/webp/)===0?"image/webp":l.search(/\.ktx2($|\?)/i)>0||l.search(/^data\:image\/ktx2/)===0?"image/ktx2":"image/png"),d}).catch(function(d){throw console.error("THREE.GLTFLoader: Couldn't load texture",A),d});return this.sourceCache[e]=c,c}assignTexture(e,t,a,n){const i=this;return this.getDependency("texture",a.index).then(function(o){if(!o)return null;if(a.texCoord!==void 0&&a.texCoord>0&&((o=o.clone()).channel=a.texCoord),i.extensions[te.KHR_TEXTURE_TRANSFORM]){const s=a.extensions!==void 0?a.extensions[te.KHR_TEXTURE_TRANSFORM]:void 0;if(s){const A=i.associations.get(o);o=i.extensions[te.KHR_TEXTURE_TRANSFORM].extendTexture(o,s),i.associations.set(o,A)}}return n!==void 0&&(o.colorSpace=n),e[t]=o,o})}assignFinalMaterial(e){const t=e.geometry;let a=e.material;const n=t.attributes.tangent===void 0,i=t.attributes.color!==void 0,o=t.attributes.normal===void 0;if(e.isPoints){const s="PointsMaterial:"+a.uuid;let A=this.cache.get(s);A||(A=new E.PointsMaterial,E.Material.prototype.copy.call(A,a),A.color.copy(a.color),A.map=a.map,A.sizeAttenuation=!1,this.cache.add(s,A)),a=A}else if(e.isLine){const s="LineBasicMaterial:"+a.uuid;let A=this.cache.get(s);A||(A=new E.LineBasicMaterial,E.Material.prototype.copy.call(A,a),A.color.copy(a.color),A.map=a.map,this.cache.add(s,A)),a=A}if(n||i||o){let s="ClonedMaterial:"+a.uuid+":";n&&(s+="derivative-tangents:"),i&&(s+="vertex-colors:"),o&&(s+="flat-shading:");let A=this.cache.get(s);A||(A=a.clone(),i&&(A.vertexColors=!0),o&&(A.flatShading=!0),n&&(A.normalScale&&(A.normalScale.y*=-1),A.clearcoatNormalScale&&(A.clearcoatNormalScale.y*=-1)),this.cache.add(s,A),this.associations.set(A,this.associations.get(a))),a=A}e.material=a}getMaterialType(){return E.MeshStandardMaterial}loadMaterial(e){const t=this,a=this.json,n=this.extensions,i=a.materials[e];let o;const s={},A=[];if((i.extensions||{})[te.KHR_MATERIALS_UNLIT]){const c=n[te.KHR_MATERIALS_UNLIT];o=c.getMaterialType(),A.push(c.extendParams(s,i,t))}else{const c=i.pbrMetallicRoughness||{};if(s.color=new E.Color(1,1,1),s.opacity=1,Array.isArray(c.baseColorFactor)){const d=c.baseColorFactor;s.color.setRGB(d[0],d[1],d[2],E.LinearSRGBColorSpace),s.opacity=d[3]}c.baseColorTexture!==void 0&&A.push(t.assignTexture(s,"map",c.baseColorTexture,E.SRGBColorSpace)),s.metalness=c.metallicFactor!==void 0?c.metallicFactor:1,s.roughness=c.roughnessFactor!==void 0?c.roughnessFactor:1,c.metallicRoughnessTexture!==void 0&&(A.push(t.assignTexture(s,"metalnessMap",c.metallicRoughnessTexture)),A.push(t.assignTexture(s,"roughnessMap",c.metallicRoughnessTexture))),o=this._invokeOne(function(d){return d.getMaterialType&&d.getMaterialType(e)}),A.push(Promise.all(this._invokeAll(function(d){return d.extendMaterialParams&&d.extendMaterialParams(e,s)})))}i.doubleSided===!0&&(s.side=E.DoubleSide);const u=i.alphaMode||ko;if(u===Mo?(s.transparent=!0,s.depthWrite=!1):(s.transparent=!1,u===jo&&(s.alphaTest=i.alphaCutoff!==void 0?i.alphaCutoff:.5)),i.normalTexture!==void 0&&o!==E.MeshBasicMaterial&&(A.push(t.assignTexture(s,"normalMap",i.normalTexture)),s.normalScale=new E.Vector2(1,1),i.normalTexture.scale!==void 0)){const c=i.normalTexture.scale;s.normalScale.set(c,c)}if(i.occlusionTexture!==void 0&&o!==E.MeshBasicMaterial&&(A.push(t.assignTexture(s,"aoMap",i.occlusionTexture)),i.occlusionTexture.strength!==void 0&&(s.aoMapIntensity=i.occlusionTexture.strength)),i.emissiveFactor!==void 0&&o!==E.MeshBasicMaterial){const c=i.emissiveFactor;s.emissive=new E.Color().setRGB(c[0],c[1],c[2],E.LinearSRGBColorSpace)}return i.emissiveTexture!==void 0&&o!==E.MeshBasicMaterial&&A.push(t.assignTexture(s,"emissiveMap",i.emissiveTexture,E.SRGBColorSpace)),Promise.all(A).then(function(){const c=new o(s);return i.name&&(c.name=i.name),At(c,i),t.associations.set(c,{materials:e}),i.extensions&&wt(n,c,i),c})}createUniqueName(e){const t=E.PropertyBinding.sanitizeNodeName(e||"");return t in this.nodeNamesUsed?t+"_"+ ++this.nodeNamesUsed[t]:(this.nodeNamesUsed[t]=0,t)}loadGeometries(e){const t=this,a=this.extensions,n=this.primitiveCache;function i(s){return a[te.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(s,t).then(function(A){return Xr(A,s,t)})}const o=[];for(let s=0,A=e.length;s<A;s++){const u=e[s],c=Ro(u),d=n[c];if(d)o.push(d.promise);else{let l;l=u.extensions&&u.extensions[te.KHR_DRACO_MESH_COMPRESSION]?i(u):Xr(new E.BufferGeometry,u,t),n[c]={primitive:u,promise:l},o.push(l)}}return Promise.all(o)}loadMesh(e){const t=this,a=this.json,n=this.extensions,i=a.meshes[e],o=i.primitives,s=[];for(let u=0,c=o.length;u<c;u++){const d=o[u].material===void 0?((A=this.cache).DefaultMaterial===void 0&&(A.DefaultMaterial=new E.MeshStandardMaterial({color:16777215,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:E.FrontSide})),A.DefaultMaterial):this.getDependency("material",o[u].material);s.push(d)}var A;return s.push(t.loadGeometries(o)),Promise.all(s).then(function(u){const c=u.slice(0,u.length-1),d=u[u.length-1],l=[];for(let b=0,g=d.length;b<g;b++){const f=d[b],m=o[b];let p;const C=c[b];if(m.mode===Ke.TRIANGLES||m.mode===Ke.TRIANGLE_STRIP||m.mode===Ke.TRIANGLE_FAN||m.mode===void 0)p=i.isSkinnedMesh===!0?new E.SkinnedMesh(f,C):new E.Mesh(f,C),p.isSkinnedMesh===!0&&p.normalizeSkinWeights(),m.mode===Ke.TRIANGLE_STRIP?p.geometry=Or(p.geometry,E.TriangleStripDrawMode):m.mode===Ke.TRIANGLE_FAN&&(p.geometry=Or(p.geometry,E.TriangleFanDrawMode));else if(m.mode===Ke.LINES)p=new E.LineSegments(f,C);else if(m.mode===Ke.LINE_STRIP)p=new E.Line(f,C);else if(m.mode===Ke.LINE_LOOP)p=new E.LineLoop(f,C);else{if(m.mode!==Ke.POINTS)throw new Error("THREE.GLTFLoader: Primitive mode unsupported: "+m.mode);p=new E.Points(f,C)}Object.keys(p.geometry.morphAttributes).length>0&&So(p,i),p.name=t.createUniqueName(i.name||"mesh_"+e),At(p,i),m.extensions&&wt(n,p,m),t.assignFinalMaterial(p),l.push(p)}for(let b=0,g=l.length;b<g;b++)t.associations.set(l[b],{meshes:e,primitives:b});if(l.length===1)return i.extensions&&wt(n,l[0],i),l[0];const h=new E.Group;i.extensions&&wt(n,h,i),t.associations.set(h,{meshes:e});for(let b=0,g=l.length;b<g;b++)h.add(l[b]);return h})}loadCamera(e){let t;const a=this.json.cameras[e],n=a[a.type];if(n)return a.type==="perspective"?t=new E.PerspectiveCamera(E.MathUtils.radToDeg(n.yfov),n.aspectRatio||1,n.znear||1,n.zfar||2e6):a.type==="orthographic"&&(t=new E.OrthographicCamera(-n.xmag,n.xmag,n.ymag,-n.ymag,n.znear,n.zfar)),a.name&&(t.name=this.createUniqueName(a.name)),At(t,a),Promise.resolve(t);console.warn("THREE.GLTFLoader: Missing camera parameters.")}loadSkin(e){const t=this.json.skins[e],a=[];for(let n=0,i=t.joints.length;n<i;n++)a.push(this._loadNodeShallow(t.joints[n]));return t.inverseBindMatrices!==void 0?a.push(this.getDependency("accessor",t.inverseBindMatrices)):a.push(null),Promise.all(a).then(function(n){const i=n.pop(),o=n,s=[],A=[];for(let u=0,c=o.length;u<c;u++){const d=o[u];if(d){s.push(d);const l=new E.Matrix4;i!==null&&l.fromArray(i.array,16*u),A.push(l)}else console.warn('THREE.GLTFLoader: Joint "%s" could not be found.',t.joints[u])}return new E.Skeleton(s,A)})}loadAnimation(e){const t=this.json,a=this,n=t.animations[e],i=n.name?n.name:"animation_"+e,o=[],s=[],A=[],u=[],c=[];for(let d=0,l=n.channels.length;d<l;d++){const h=n.channels[d],b=n.samplers[h.sampler],g=h.target,f=g.node,m=n.parameters!==void 0?n.parameters[b.input]:b.input,p=n.parameters!==void 0?n.parameters[b.output]:b.output;g.node!==void 0&&(o.push(this.getDependency("node",f)),s.push(this.getDependency("accessor",m)),A.push(this.getDependency("accessor",p)),u.push(b),c.push(g))}return Promise.all([Promise.all(o),Promise.all(s),Promise.all(A),Promise.all(u),Promise.all(c)]).then(function(d){const l=d[0],h=d[1],b=d[2],g=d[3],f=d[4],m=[];for(let p=0,C=l.length;p<C;p++){const I=l[p],x=h[p],y=b[p],F=g[p],D=f[p];if(I===void 0)continue;I.updateMatrix&&I.updateMatrix();const Q=a._createAnimationTracks(I,x,y,F,D);if(Q)for(let M=0;M<Q.length;M++)m.push(Q[M])}return new E.AnimationClip(i,void 0,m)})}createNodeMesh(e){const t=this.json,a=this,n=t.nodes[e];return n.mesh===void 0?null:a.getDependency("mesh",n.mesh).then(function(i){const o=a._getNodeRef(a.meshCache,n.mesh,i);return n.weights!==void 0&&o.traverse(function(s){if(s.isMesh)for(let A=0,u=n.weights.length;A<u;A++)s.morphTargetInfluences[A]=n.weights[A]}),o})}loadNode(e){const t=this,a=this.json.nodes[e],n=t._loadNodeShallow(e),i=[],o=a.children||[];for(let A=0,u=o.length;A<u;A++)i.push(t.getDependency("node",o[A]));const s=a.skin===void 0?Promise.resolve(null):t.getDependency("skin",a.skin);return Promise.all([n,Promise.all(i),s]).then(function(A){const u=A[0],c=A[1],d=A[2];d!==null&&u.traverse(function(l){l.isSkinnedMesh&&l.bind(d,To)});for(let l=0,h=c.length;l<h;l++)u.add(c[l]);return u})}_loadNodeShallow(e){const t=this.json,a=this.extensions,n=this;if(this.nodeCache[e]!==void 0)return this.nodeCache[e];const i=t.nodes[e],o=i.name?n.createUniqueName(i.name):"",s=[],A=n._invokeOne(function(u){return u.createNodeMesh&&u.createNodeMesh(e)});return A&&s.push(A),i.camera!==void 0&&s.push(n.getDependency("camera",i.camera).then(function(u){return n._getNodeRef(n.cameraCache,i.camera,u)})),n._invokeAll(function(u){return u.createNodeAttachment&&u.createNodeAttachment(e)}).forEach(function(u){s.push(u)}),this.nodeCache[e]=Promise.all(s).then(function(u){let c;if(c=i.isBone===!0?new E.Bone:u.length>1?new E.Group:u.length===1?u[0]:new E.Object3D,c!==u[0])for(let d=0,l=u.length;d<l;d++)c.add(u[d]);if(i.name&&(c.userData.name=i.name,c.name=o),At(c,i),i.extensions&&wt(a,c,i),i.matrix!==void 0){const d=new E.Matrix4;d.fromArray(i.matrix),c.applyMatrix4(d)}else i.translation!==void 0&&c.position.fromArray(i.translation),i.rotation!==void 0&&c.quaternion.fromArray(i.rotation),i.scale!==void 0&&c.scale.fromArray(i.scale);return n.associations.has(c)||n.associations.set(c,{}),n.associations.get(c).nodes=e,c}),this.nodeCache[e]}loadScene(e){const t=this.extensions,a=this.json.scenes[e],n=this,i=new E.Group;a.name&&(i.name=n.createUniqueName(a.name)),At(i,a),a.extensions&&wt(t,i,a);const o=a.nodes||[],s=[];for(let A=0,u=o.length;A<u;A++)s.push(n.getDependency("node",o[A]));return Promise.all(s).then(function(A){for(let u=0,c=A.length;u<c;u++)i.add(A[u]);return n.associations=(u=>{const c=new Map;for(const[d,l]of n.associations)(d instanceof E.Material||d instanceof E.Texture)&&c.set(d,l);return u.traverse(d=>{const l=n.associations.get(d);l!=null&&c.set(d,l)}),c})(i),i})}_createAnimationTracks(e,t,a,n,i){const o=[],s=e.name?e.name:e.uuid,A=[];let u;switch(gt[i.path]===gt.weights?e.traverse(function(l){l.morphTargetInfluences&&A.push(l.name?l.name:l.uuid)}):A.push(s),gt[i.path]){case gt.weights:u=E.NumberKeyframeTrack;break;case gt.rotation:u=E.QuaternionKeyframeTrack;break;case gt.translation:case gt.scale:u=E.VectorKeyframeTrack;break;default:a.itemSize===1?u=E.NumberKeyframeTrack:u=E.VectorKeyframeTrack}const c=n.interpolation!==void 0?vo[n.interpolation]:E.InterpolateLinear,d=this._getArrayFromAccessor(a);for(let l=0,h=A.length;l<h;l++){const b=new u(A[l]+"."+gt[i.path],t.array,d,c);n.interpolation==="CUBICSPLINE"&&this._createCubicSplineTrackInterpolant(b),o.push(b)}return o}_getArrayFromAccessor(e){let t=e.array;if(e.normalized){const a=Ga(t.constructor),n=new Float32Array(t.length);for(let i=0,o=t.length;i<o;i++)n[i]=t[i]*a;t=n}return t}_createCubicSplineTrackInterpolant(e){e.createInterpolant=function(t){return new(this instanceof E.QuaternionKeyframeTrack?Qo:Vr)(this.times,this.values,this.getValueSize()/3,t)},e.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline=!0}}function Xr(r,e,t){const a=e.attributes,n=[];function i(o,s){return t.getDependency("accessor",o).then(function(A){r.setAttribute(s,A)})}for(const o in a){const s=Ua[o]||o.toLowerCase();s in r.attributes||n.push(i(a[o],s))}if(e.indices!==void 0&&!r.index){const o=t.getDependency("accessor",e.indices).then(function(s){r.setIndex(s)});n.push(o)}return E.ColorManagement.workingColorSpace!==E.LinearSRGBColorSpace&&"COLOR_0"in a&&console.warn(`THREE.GLTFLoader: Converting vertex colors from "srgb-linear" to "${E.ColorManagement.workingColorSpace}" not supported.`),At(r,e),function(o,s,A){const u=s.attributes,c=new E.Box3;if(u.POSITION===void 0)return;{const h=A.json.accessors[u.POSITION],b=h.min,g=h.max;if(b===void 0||g===void 0)return void console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");if(c.set(new E.Vector3(b[0],b[1],b[2]),new E.Vector3(g[0],g[1],g[2])),h.normalized){const f=Ga(Tt[h.componentType]);c.min.multiplyScalar(f),c.max.multiplyScalar(f)}}const d=s.targets;if(d!==void 0){const h=new E.Vector3,b=new E.Vector3;for(let g=0,f=d.length;g<f;g++){const m=d[g];if(m.POSITION!==void 0){const p=A.json.accessors[m.POSITION],C=p.min,I=p.max;if(C!==void 0&&I!==void 0){if(b.setX(Math.max(Math.abs(C[0]),Math.abs(I[0]))),b.setY(Math.max(Math.abs(C[1]),Math.abs(I[1]))),b.setZ(Math.max(Math.abs(C[2]),Math.abs(I[2]))),p.normalized){const x=Ga(Tt[p.componentType]);b.multiplyScalar(x)}h.max(b)}else console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.")}}c.expandByVector(h)}o.boundingBox=c;const l=new E.Sphere;c.getCenter(l.center),l.radius=c.min.distanceTo(c.max)/2,o.boundingSphere=l}(r,e,t),Promise.all(n).then(function(){return e.targets!==void 0?function(o,s,A){let u=!1,c=!1,d=!1;for(let g=0,f=s.length;g<f;g++){const m=s[g];if(m.POSITION!==void 0&&(u=!0),m.NORMAL!==void 0&&(c=!0),m.COLOR_0!==void 0&&(d=!0),u&&c&&d)break}if(!u&&!c&&!d)return Promise.resolve(o);const l=[],h=[],b=[];for(let g=0,f=s.length;g<f;g++){const m=s[g];if(u){const p=m.POSITION!==void 0?A.getDependency("accessor",m.POSITION):o.attributes.position;l.push(p)}if(c){const p=m.NORMAL!==void 0?A.getDependency("accessor",m.NORMAL):o.attributes.normal;h.push(p)}if(d){const p=m.COLOR_0!==void 0?A.getDependency("accessor",m.COLOR_0):o.attributes.color;b.push(p)}}return Promise.all([Promise.all(l),Promise.all(h),Promise.all(b)]).then(function(g){const f=g[0],m=g[1],p=g[2];return u&&(o.morphAttributes.position=f),c&&(o.morphAttributes.normal=m),d&&(o.morphAttributes.color=p),o.morphTargetsRelative=!0,o})}(r,e.targets,t):r})}const _a=new WeakMap;class Zr extends E.Loader{constructor(e){super(e),this.decoderPath="",this.decoderConfig={},this.decoderBinary=null,this.decoderPending=null,this.workerLimit=4,this.workerPool=[],this.workerNextTaskID=1,this.workerSourceURL="",this.defaultAttributeIDs={position:"POSITION",normal:"NORMAL",color:"COLOR",uv:"TEX_COORD"},this.defaultAttributeTypes={position:"Float32Array",normal:"Float32Array",color:"Float32Array",uv:"Float32Array"}}setDecoderPath(e){return this.decoderPath=e,this}setDecoderConfig(e){return this.decoderConfig=e,this}setWorkerLimit(e){return this.workerLimit=e,this}load(e,t,a,n){const i=new E.FileLoader(this.manager);i.setPath(this.path),i.setResponseType("arraybuffer"),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),i.load(e,o=>{this.parse(o,t,n)},a,n)}parse(e,t,a=()=>{}){this.decodeDracoFile(e,t,null,null,E.SRGBColorSpace,a).catch(a)}decodeDracoFile(e,t,a,n,i=E.LinearSRGBColorSpace,o=()=>{}){const s={attributeIDs:a||this.defaultAttributeIDs,attributeTypes:n||this.defaultAttributeTypes,useUniqueIDs:!!a,vertexColorSpace:i};return this.decodeGeometry(e,s).then(t).catch(o)}decodeGeometry(e,t){const a=JSON.stringify(t);if(_a.has(e)){const A=_a.get(e);if(A.key===a)return A.promise;if(e.byteLength===0)throw new Error("THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred.")}let n;const i=this.workerNextTaskID++,o=e.byteLength,s=this._getWorker(i,o).then(A=>(n=A,new Promise((u,c)=>{n._callbacks[i]={resolve:u,reject:c},n.postMessage({type:"decode",id:i,taskConfig:t,buffer:e},[e])}))).then(A=>this._createGeometry(A.geometry));return s.catch(()=>!0).then(()=>{n&&i&&this._releaseTask(n,i)}),_a.set(e,{key:a,promise:s}),s}_createGeometry(e){const t=new E.BufferGeometry;e.index&&t.setIndex(new E.BufferAttribute(e.index.array,1));for(let a=0;a<e.attributes.length;a++){const n=e.attributes[a],i=n.name,o=n.array,s=n.itemSize,A=new E.BufferAttribute(o,s);i==="color"&&(this._assignVertexColorSpace(A,n.vertexColorSpace),A.normalized=!(o instanceof Float32Array)),t.setAttribute(i,A)}return t}_assignVertexColorSpace(e,t){if(t!==E.SRGBColorSpace)return;const a=new E.Color;for(let n=0,i=e.count;n<i;n++)a.fromBufferAttribute(e,n),E.ColorManagement.toWorkingColorSpace(a,E.SRGBColorSpace),e.setXYZ(n,a.r,a.g,a.b)}_loadLibrary(e,t){const a=new E.FileLoader(this.manager);return a.setPath(this.decoderPath),a.setResponseType(t),a.setWithCredentials(this.withCredentials),new Promise((n,i)=>{a.load(e,n,void 0,i)})}preload(){return this._initDecoder(),this}_initDecoder(){if(this.decoderPending)return this.decoderPending;const e=typeof WebAssembly!="object"||this.decoderConfig.type==="js",t=[];return e?t.push(this._loadLibrary("draco_decoder.js","text")):(t.push(this._loadLibrary("draco_wasm_wrapper.js","text")),t.push(this._loadLibrary("draco_decoder.wasm","arraybuffer"))),this.decoderPending=Promise.all(t).then(a=>{const n=a[0];e||(this.decoderConfig.wasmBinary=a[1]);const i=Uo.toString(),o=["/* draco decoder */",n,"","/* worker */",i.substring(i.indexOf("{")+1,i.lastIndexOf("}"))].join(`
|
|
7
|
-
`);this.workerSourceURL=URL.createObjectURL(new Blob([o]))}),this.decoderPending}_getWorker(e,t){return this._initDecoder().then(()=>{if(this.workerPool.length<this.workerLimit){const n=new Worker(this.workerSourceURL);n._callbacks={},n._taskCosts={},n._taskLoad=0,n.postMessage({type:"init",decoderConfig:this.decoderConfig}),n.onmessage=function(i){const o=i.data;switch(o.type){case"decode":n._callbacks[o.id].resolve(o);break;case"error":n._callbacks[o.id].reject(o);break;default:console.error('THREE.DRACOLoader: Unexpected message, "'+o.type+'"')}},this.workerPool.push(n)}else this.workerPool.sort(function(n,i){return n._taskLoad>i._taskLoad?-1:1});const a=this.workerPool[this.workerPool.length-1];return a._taskCosts[e]=t,a._taskLoad+=t,a})}_releaseTask(e,t){e._taskLoad-=e._taskCosts[t],delete e._callbacks[t],delete e._taskCosts[t]}debug(){console.log("Task load: ",this.workerPool.map(e=>e._taskLoad))}dispose(){for(let e=0;e<this.workerPool.length;++e)this.workerPool[e].terminate();return this.workerPool.length=0,this.workerSourceURL!==""&&URL.revokeObjectURL(this.workerSourceURL),this}}function Uo(){let r,e;function t(a,n,i,o,s,A){const u=A.num_components(),c=i.num_points()*u,d=c*s.BYTES_PER_ELEMENT,l=function(g,f){switch(f){case Float32Array:return g.DT_FLOAT32;case Int8Array:return g.DT_INT8;case Int16Array:return g.DT_INT16;case Int32Array:return g.DT_INT32;case Uint8Array:return g.DT_UINT8;case Uint16Array:return g.DT_UINT16;case Uint32Array:return g.DT_UINT32}}(a,s),h=a._malloc(d);n.GetAttributeDataArrayForAllPoints(i,A,l,d,h);const b=new s(a.HEAPF32.buffer,h,c).slice();return a._free(h),{name:o,array:b,itemSize:u}}onmessage=function(a){const n=a.data;switch(n.type){case"init":r=n.decoderConfig,e=new Promise(function(s){r.onModuleLoaded=function(A){s({draco:A})},DracoDecoderModule(r)});break;case"decode":const i=n.buffer,o=n.taskConfig;e.then(s=>{const A=s.draco,u=new A.Decoder;try{const c=function(l,h,b,g){const f=g.attributeIDs,m=g.attributeTypes;let p,C;const I=h.GetEncodedGeometryType(b);if(I===l.TRIANGULAR_MESH)p=new l.Mesh,C=h.DecodeArrayToMesh(b,b.byteLength,p);else{if(I!==l.POINT_CLOUD)throw new Error("THREE.DRACOLoader: Unexpected geometry type.");p=new l.PointCloud,C=h.DecodeArrayToPointCloud(b,b.byteLength,p)}if(!C.ok()||p.ptr===0)throw new Error("THREE.DRACOLoader: Decoding failed: "+C.error_msg());const x={index:null,attributes:[]};for(const y in f){const F=self[m[y]];let D,Q;if(g.useUniqueIDs)Q=f[y],D=h.GetAttributeByUniqueId(p,Q);else{if(Q=h.GetAttributeId(p,l[f[y]]),Q===-1)continue;D=h.GetAttribute(p,Q)}const M=t(l,h,p,y,F,D);y==="color"&&(M.vertexColorSpace=g.vertexColorSpace),x.attributes.push(M)}return I===l.TRIANGULAR_MESH&&(x.index=function(y,F,D){const Q=D.num_faces(),M=3*Q,S=4*M,O=y._malloc(S);F.GetTrianglesUInt32Array(D,S,O);const P=new Uint32Array(y.HEAPF32.buffer,O,M).slice();return y._free(O),{array:P,itemSize:1}}(l,h,p)),l.destroy(p),x}(A,u,new Int8Array(i),o),d=c.attributes.map(l=>l.array.buffer);c.index&&d.push(c.index.array.buffer),self.postMessage({type:"decode",id:n.id,geometry:c},d)}catch(c){console.error(c),self.postMessage({type:"error",id:n.id,error:c.message})}finally{A.destroy(u)}})}}}class Lo{constructor(e=4){this.pool=e,this.queue=[],this.workers=[],this.workersResolve=[],this.workerStatus=0,this.workerCreator=null}_initWorker(e){if(!this.workers[e]){const t=this.workerCreator();t.addEventListener("message",this._onMessage.bind(this,e)),this.workers[e]=t}}_getIdleWorker(){for(let e=0;e<this.pool;e++)if(!(this.workerStatus&1<<e))return e;return-1}_onMessage(e,t){const a=this.workersResolve[e];if(a&&a(t),this.queue.length){const{resolve:n,msg:i,transfer:o}=this.queue.shift();this.workersResolve[e]=n,this.workers[e].postMessage(i,o)}else this.workerStatus^=1<<e}setWorkerCreator(e){this.workerCreator=e}setWorkerLimit(e){this.pool=e}postMessage(e,t){return new Promise(a=>{const n=this._getIdleWorker();n!==-1?(this._initWorker(n),this.workerStatus|=1<<n,this.workersResolve[n]=a,this.workers[n].postMessage(e,t)):this.queue.push({resolve:a,msg:e,transfer:t})})}dispose(){this.workers.forEach(e=>e.terminate()),this.workersResolve.length=0,this.workers.length=0,this.queue.length=0,this.workerStatus=0}}const $r=9,en=15,tn=16,an=22,rn=37,nn=43,on=76,sn=83,An=97,cn=100,un=103,dn=109,hn=165,bn=166,Ha=1000066e3;class Go{constructor(){this.vkFormat=0,this.typeSize=1,this.pixelWidth=0,this.pixelHeight=0,this.pixelDepth=0,this.layerCount=0,this.faceCount=1,this.supercompressionScheme=0,this.levels=[],this.dataFormatDescriptor=[{vendorId:0,descriptorType:0,descriptorBlockSize:0,versionNumber:2,colorModel:0,colorPrimaries:1,transferFunction:2,flags:0,texelBlockDimension:[0,0,0,0],bytesPlane:[0,0,0,0,0,0,0,0],samples:[]}],this.keyValue={},this.globalData=null}}class Wt{constructor(e,t,a,n){this._dataView=void 0,this._littleEndian=void 0,this._offset=void 0,this._dataView=new DataView(e.buffer,e.byteOffset+t,a),this._littleEndian=n,this._offset=0}_nextUint8(){const e=this._dataView.getUint8(this._offset);return this._offset+=1,e}_nextUint16(){const e=this._dataView.getUint16(this._offset,this._littleEndian);return this._offset+=2,e}_nextUint32(){const e=this._dataView.getUint32(this._offset,this._littleEndian);return this._offset+=4,e}_nextUint64(){const e=this._dataView.getUint32(this._offset,this._littleEndian)+4294967296*this._dataView.getUint32(this._offset+4,this._littleEndian);return this._offset+=8,e}_nextInt32(){const e=this._dataView.getInt32(this._offset,this._littleEndian);return this._offset+=4,e}_nextUint8Array(e){const t=new Uint8Array(this._dataView.buffer,this._dataView.byteOffset+this._offset,e);return this._offset+=e,t}_skip(e){return this._offset+=e,this}_scan(e,t){t===void 0&&(t=0);const a=this._offset;let n=0;for(;this._dataView.getUint8(this._offset)!==t&&n<e;)n++,this._offset++;return n<e&&this._offset++,new Uint8Array(this._dataView.buffer,this._dataView.byteOffset+a,n)}}const Ue=[171,75,84,88,32,50,48,187,13,10,26,10];function ln(r){return new TextDecoder().decode(r)}let Oa,ct,za;const Pa={env:{emscripten_notify_memory_growth:function(r){za=new Uint8Array(ct.exports.memory.buffer)}}};class _o{init(){return Oa||(Oa=typeof fetch<"u"?fetch("data:application/wasm;base64,"+gn).then(e=>e.arrayBuffer()).then(e=>WebAssembly.instantiate(e,Pa)).then(this._init):WebAssembly.instantiate(Buffer.from(gn,"base64"),Pa).then(this._init),Oa)}_init(e){ct=e.instance,Pa.env.emscripten_notify_memory_growth(0)}decode(e,t=0){if(!ct)throw new Error("ZSTDDecoder: Await .init() before decoding.");const a=e.byteLength,n=ct.exports.malloc(a);za.set(e,n),t=t||Number(ct.exports.ZSTD_findDecompressedSize(n,a));const i=ct.exports.malloc(t),o=ct.exports.ZSTD_decompress(i,t,n,a),s=za.slice(i,i+o);return ct.exports.free(n),ct.exports.free(i),s}}const gn="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IAMNACAEQQNxBEADQCACRQ0FIAAgAkF/aiICaiIDIAEgAmotAAA6AAAgA0EDcQ0ACwsgAkEDTQ0AA0AgACACQXxqIgJqIAEgAmooAgA2AgAgAkEDSw0ACwsgAkUNAgNAIAAgAkF/aiICaiABIAJqLQAAOgAAIAINAAsMAgsgAkEDTQ0AIAIhBANAIAMgASgCADYCACABQQRqIQEgA0EEaiEDIARBfGoiBEEDSw0ACyACQQNxIQILIAJFDQADQCADIAEtAAA6AAAgA0EBaiEDIAFBAWohASACQX9qIgINAAsLIAAL8wICAn8BfgJAIAJFDQAgACACaiIDQX9qIAE6AAAgACABOgAAIAJBA0kNACADQX5qIAE6AAAgACABOgABIANBfWogAToAACAAIAE6AAIgAkEHSQ0AIANBfGogAToAACAAIAE6AAMgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgE2AgAgAyACIARrQXxxIgRqIgJBfGogATYCACAEQQlJDQAgAyABNgIIIAMgATYCBCACQXhqIAE2AgAgAkF0aiABNgIAIARBGUkNACADIAE2AhggAyABNgIUIAMgATYCECADIAE2AgwgAkFwaiABNgIAIAJBbGogATYCACACQWhqIAE2AgAgAkFkaiABNgIAIAQgA0EEcUEYciIEayICQSBJDQAgAa0iBUIghiAFhCEFIAMgBGohAQNAIAEgBTcDGCABIAU3AxAgASAFNwMIIAEgBTcDACABQSBqIQEgAkFgaiICQR9LDQALCyAACy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAIajYCACADCy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAFajYCACADCx8AIAAgASACKAIEEAg2AgAgARAEGiAAIAJBCGo2AgQLCAAgAGdBH3MLugUBDX8jAEEQayIKJAACfyAEQQNNBEAgCkEANgIMIApBDGogAyAEEAsaIAAgASACIApBDGpBBBAVIgBBbCAAEAMbIAAgACAESxsMAQsgAEEAIAEoAgBBAXRBAmoQECENQVQgAygAACIGQQ9xIgBBCksNABogAiAAQQVqNgIAIAMgBGoiAkF8aiEMIAJBeWohDiACQXtqIRAgAEEGaiELQQQh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ASIDNgLE4AEgACgCvOABIQQgACABNgK84AEgACABIAJqNgK44AEgACABIAQgA2tqNgLA4AELpgEBAX8gACAAKALs4QEQFjYCyOABIABCADcD+OABIABCADcDuOABIABBwOABakIANwMAIABBqNAAaiIBQYyAgOAANgIAIABBADYCmOIBIABCADcDiOEBIABCAzcDgOEBIABBrNABakHgEikCADcCACAAQbTQAWpB6BIoAgA2AgAgACABNgIMIAAgAEGYIGo2AgggACAAQaAwajYCBCAAIABBEGo2AgALYQEBf0G4fyEDAkAgAUEDSQ0AIAIgABAhIgFBA3YiADYCCCACIAFBAXE2AgQgAiABQQF2QQNxIgM2AgACQCADQX9qIgFBAksNAAJAIAFBAWsOAgEAAgtBbA8LIAAhAwsgAwsMACAAIAEgAkEAEC4LiAQCA38CfiADEBYhBCAAQQBBKBAQIQAgBCACSwRAIAQPCyABRQRAQX8PCwJAAkAgA0EBRg0AIAEoAAAiBkGo6r5pRg0AQXYhAyAGQXBxQdDUtMIBRw0BQQghAyACQQhJDQEgAEEAQSgQECEAIAEoAAQhASAAQQE2AhQgACABrTcDAEEADwsgASACIAMQLyIDIAJLDQAgACADNgIYQXIhAyABIARqIgVBf2otAAAiAkEIcQ0AIAJBIHEiBkUEQEFwIQMgBS0AACIFQacBSw0BIAVBB3GtQgEgBUEDdkEKaq2GIgdCA4h+IAd8IQggBEEBaiEECyACQQZ2IQMgAkECdiEFAkAgAkEDcUF/aiICQQJLBEBBACECDAELAkACQAJAIAJBAWsOAgECAAsgASAEai0AACECIARBAWohBAwCCyABIARqLwAAIQIgBEECaiEEDAELIAEgBGooAAAhAiAEQQRqIQQLIAVBAXEhBQJ+AkACQAJAIANBf2oiA0ECTQRAIANBAWsOAgIDAQtCfyAGRQ0DGiABIARqMQAADAMLIAEgBGovAACtQoACfAwCCyABIARqKAAArQwBCyABIARqKQAACyEHIAAgBTYCICAAIAI2AhwgACAHNwMAQQAhAyAAQQA2AhQgACAHIAggBhsiBzcDCCAAIAdCgIAIIAdCgIAIVBs+AhALIAMLWwEBf0G4fyEDIAIQFiICIAFNBH8gACACakF/ai0AACIAQQNxQQJ0QaAeaigC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C0Egak8NAQsgByAHKQNoNwMQIAcgBykDYDcDCCAEIA0gB0EIaiAHQdwAaiAPIA4gESAQEB4hCwwBCyACIARqIQggBCAKEAcgAkERTwRAIARBEGohAgNAIAIgCkEQaiIKEAcgAkEQaiICIAhJDQALCyAIIAlrIQIgByATNgJcIAkgCCAOa0sEQCAJIAggEWtLBEBBbCELDAILIBAgAiAOayICaiIKIANqIBBNBEAgCCAKIAMQDxoMAgsgCCAKQQAgAmsQDyEIIAcgAiADaiIDNgJkIAggAmshCCAOIQILIAlBEE8EQCADIAhqIQMDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALDAELAkAgCUEHTQRAIAggAi0AADoAACAIIAItAAE6AAEgCCACLQACOgACIAggAi0AAzoAAyAIQQRqIAIgCUECdCIDQcAeaigCAGoiAhAXIAIgA0HgHmooAgBrIQIgBygCZCEDDAELIAggAhAMCyADQQlJDQAgAyAIaiEDIAhBCGoiCCACQQhqIgJrQQ9MBEADQCAIIAIQDCACQQhqIQIgCEEIaiIIIANJDQAMAgALAAsDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALCyAHQRhqEAQaIAsgDCALEAMiAhshDCAEIAQgC2ogAhshBCAFQX9qIgUNAAsgDBADDQFBbCEMIAdBGGoQBEECSQ0BQQAhCANAIAhBA0cEQCAAIAhBAnQiAmpBrNABaiACIAdqKAJENgIAIAhBAWohCAwBCwsgBygCXCEIC0G6fyEMIA8gCGsiACANIARrSw0AIAQEfyAEIAggABALIABqBUEACyABayEMCyAHQfAAaiQAIAwLkRcCFn8FfiMAQdABayIHJAAgByAAKALw4QEiCDYCvAEgASACaiESIAggACgCgOIBaiETAkACQCAFRQRAIAEhAwwBCyAAKALE4AEhESAAKALA4AEhFSAAKAK84AEhDyAAQQE2AozhAUEAIQgDQCAIQQNHBEAgByAIQQJ0IgJqIAAgAmpBrNABaigCADYCVCAIQQFqIQgMAQsLIAcgETYCZCAHIA82AmAgByABIA9rNgJoQWwhECAHQShqIAMgBBAGEAMNASAFQQQgBUEESBshFyAHQTxqIAdBKGogACgCABATIAdBxABqIAdBKGogACgCCBATIAdBzABqIAdB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IAdB0AFqJAAgEAslACAAQgA3AgAgAEEAOwEIIABBADoACyAAIAE2AgwgACACOgAKC7QFAQN/IwBBMGsiBCQAIABB/wFqIgVBfWohBgJAIAMvAQIEQCAEQRhqIAEgAhAGIgIQAw0BIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahASOgAAIAMgBEEIaiAEQRhqEBI6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0FIAEgBEEQaiAEQRhqEBI6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBSABIARBCGogBEEYahASOgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEjoAACABIAJqIABrIQIMAwsgAyAEQRBqIARBGGoQEjoAAiADIARBCGogBEEYahASOgADIANBBGohAwwAAAsACyAEQRhqIAEgAhAGIgIQAw0AIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahAROgAAIAMgBEEIaiAEQRhqEBE6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0EIAEgBEEQaiAEQRhqEBE6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBCABIARBCGogBEEYahAROgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEToAACABIAJqIABrIQIMAgsgAyAEQRBqIARBGGoQEToAAiADIARBCGogBEEYahAROgADIANBBGohAwwAAAsACyAEQTBqJAAgAgtpAQF/An8CQAJAIAJBB00NACABKAAAQbfIwuF+Rw0AIAAgASgABDYCmOIBQWIgAEEQaiABIAIQPiIDEAMNAhogAEKBgICAEDcDiOEBIAAgASADaiACIANrECoMAQsgACABIAIQKgtBAAsLrQMBBn8jAEGAAWsiAyQAQWIhCAJAIAJBCUkNACAAQZjQAGogAUEIaiIEIAJBeGogAEGY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wOABCwutAgIEfwF+IwBBQGoiBCQAAkACQCACQQhJDQAgASgAAEFwcUHQ1LTCAUcNACABIAIQIiEBIABCADcDCCAAQQA2AgQgACABNgIADAELIARBGGogASACEC0iAxADBEAgACADEBoMAQsgAwRAIABBuH8QGgwBCyACIAQoAjAiA2shAiABIANqIQMDQAJAIAAgAyACIARBCGoQLCIFEAMEfyAFBSACIAVBA2oiBU8NAUG4fwsQGgwCCyAGQQFqIQYgAiAFayECIAMgBWohAyAEKAIMRQ0ACyAEKAI4BEAgAkEDTQRAIABBuH8QGgwCCyADQQRqIQMLIAQoAighAiAEKQMYIQcgAEEANgIEIAAgAyABazYCACAAIAIgBmytIAcgB0J/URs3AwgLIARBQGskAAslAQF/IwBBEGsiAiQAIAIgACABEFEgAigCACEAIAJBEGokACAAC30BBH8jAEGQBGsiBCQAIARB/wE2AggCQCAEQRBqIARBCGogBEEMaiABIAIQFSIGEAMEQCAGIQUMAQtBVCEFIAQoAgwiB0EGSw0AIAMgBEEQaiAEKAIIIAcQQSIFEAMNACAAIAEgBmogAiAGayADEDwhBQsgBEGQBGokACAFC4cBAgJ/An5BABAWIQMCQANAIAEgA08EQAJAIAAoAABBcHFB0NS0wgFGBEAgACABECIiAhADRQ0BQn4PCyAAIAEQVSIEQn1WDQMgBCAFfCIFIARUIQJCfiEEIAINAyAAIAEQUiICEAMNAwsgASACayEBIAAgAmohAAwBCwtCfiAFIAEbIQQLIAQLPwIBfwF+IwBBMGsiAiQAAn5CfiACQQhqIAAgARAtDQAaQgAgAigCHEEBRg0AGiACKQMICyEDIAJBMGokACADC40BAQJ/IwBBMGsiASQAAkAgAEUNACAAKAKI4gENACABIABB/OEBaigCADYCKCABIAApAvThATcDICAAEDAgACgCqOIBIQIgASABKAIoNgIYIAEgASkDIDcDECACIAFBEGoQGyAAQQA2AqjiASABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALKgECfyMAQRBrIgAkACAAQQA2AgggAEIANwMAIAAQWCEBIABBEGokACABC4cBAQN/IwBBEGsiAiQAAkAgACgCAEUgACgCBEVzDQAgAiAAKAIINgIIIAIgACkCADcDAAJ/IAIoAgAiAQRAIAIoAghBqOMJIAERBQAMAQtBqOMJECgLIgFFDQAgASAAKQIANwL04QEgAUH84QFqIAAoAgg2AgAgARBZIAEhAwsgAkEQaiQAIAMLywEBAn8jAEEgayIBJAAgAEGBgIDAADYCtOIBIABBADYCiOIBIABBADYC7OEBIABCADcDkOIBIABBADYCpOMJIABBADYC3OIBIABCADcCzOIBIABBADYCvOIBIABBADYCxOABIABCADcCnOIBIABBpOIBakIANwIAIABBrOIBakEANgIAIAFCADcCECABQgA3AhggASABKQMYNwMIIAEgASkDEDcDACABKAIIQQh2QQFxIQIgAEEANgLg4gEgACACNgKM4gEgAUEgaiQAC3YBA38jAEEwayIBJAAgAARAIAEgAEHE0AFqIgIoAgA2AiggASAAKQK80AE3AyAgACgCACEDIAEgAigCADYCGCABIAApArzQATcDECADIAFBEGoQGyABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALzAEBAX8gACABKAK00AE2ApjiASAAIAEoAgQiAjYCwOABIAAgAjYCvOABIAAgAiABKAIIaiICNgK44AEgACACNgLE4AEgASgCuNABBEAgAEKBgICAEDcDiOEBIAAgAUGk0ABqNgIMIAAgAUGUIGo2AgggACABQZwwajYCBCAAIAFBDGo2AgAgAEGs0AFqIAFBqNABaigCADYCACAAQbDQAWogAUGs0AFqKAIANgIAIABBtNABaiABQbDQAWooAgA2AgAPCyAAQgA3A4jhAQs7ACACRQRAQbp/DwsgBEUEQEFsDwsgAiAEEGAEQCAAIAEgAiADIAQgBRBhDwsgACABIAIgAyAEIAUQZQtGAQF/IwBBEGsiBSQAIAVBCGogBBAOAn8gBS0ACQRAIAAgASACIAMgBBAyDAELIAAgASACIAMgBBA0CyEAIAVBEGokACAACzQAIAAgAyAEIAUQNiIFEAMEQCAFDwsgBSAESQR/IAEgAiADIAVqIAQgBWsgABA1BUG4fwsLRgEBfyMAQRBrIgUkACAFQQhqIAQQDgJ/IAUtAAkEQCAAIAEgAiADIAQQYgwBCyAAIAEgAiADIAQQNQshACAFQRBqJAAgAAtZAQF/QQ8hAiABIABJBEAgAUEE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",qa=new WeakMap;let Ja,Ka=0;class Pe extends E.Loader{constructor(e){super(e),this.transcoderPath="",this.transcoderBinary=null,this.transcoderPending=null,this.workerPool=new Lo,this.workerSourceURL="",this.workerConfig=null,typeof MSC_TRANSCODER<"u"&&console.warn('THREE.KTX2Loader: Please update to latest "basis_transcoder". "msc_basis_transcoder" is no longer supported in three.js r125+.')}setTranscoderPath(e){return this.transcoderPath=e,this}setWorkerLimit(e){return this.workerPool.setWorkerLimit(e),this}async detectSupportAsync(e){return this.workerConfig={astcSupported:await e.hasFeatureAsync("texture-compression-astc"),astcHDRSupported:!1,etc1Supported:await e.hasFeatureAsync("texture-compression-etc1"),etc2Supported:await e.hasFeatureAsync("texture-compression-etc2"),dxtSupported:await e.hasFeatureAsync("texture-compression-bc"),bptcSupported:await e.hasFeatureAsync("texture-compression-bptc"),pvrtcSupported:await e.hasFeatureAsync("texture-compression-pvrtc")},this}detectSupport(e){return e.isWebGPURenderer===!0?this.workerConfig={astcSupported:e.hasFeature("texture-compression-astc"),astcHDRSupported:!1,etc1Supported:e.hasFeature("texture-compression-etc1"),etc2Supported:e.hasFeature("texture-compression-etc2"),dxtSupported:e.hasFeature("texture-compression-bc"),bptcSupported:e.hasFeature("texture-compression-bptc"),pvrtcSupported:e.hasFeature("texture-compression-pvrtc")}:this.workerConfig={astcSupported:e.extensions.has("WEBGL_compressed_texture_astc"),astcHDRSupported:e.extensions.has("WEBGL_compressed_texture_astc")&&e.extensions.get("WEBGL_compressed_texture_astc").getSupportedProfiles().includes("hdr"),etc1Supported:e.extensions.has("WEBGL_compressed_texture_etc1"),etc2Supported:e.extensions.has("WEBGL_compressed_texture_etc"),dxtSupported:e.extensions.has("WEBGL_compressed_texture_s3tc"),bptcSupported:e.extensions.has("EXT_texture_compression_bptc"),pvrtcSupported:e.extensions.has("WEBGL_compressed_texture_pvrtc")||e.extensions.has("WEBKIT_WEBGL_compressed_texture_pvrtc")},this}init(){if(!this.transcoderPending){const e=new E.FileLoader(this.manager);e.setPath(this.transcoderPath),e.setWithCredentials(this.withCredentials);const t=e.loadAsync("basis_transcoder.js"),a=new E.FileLoader(this.manager);a.setPath(this.transcoderPath),a.setResponseType("arraybuffer"),a.setWithCredentials(this.withCredentials);const n=a.loadAsync("basis_transcoder.wasm");this.transcoderPending=Promise.all([t,n]).then(([i,o])=>{const s=Pe.BasisWorker.toString(),A=["/* constants */","let _EngineFormat = "+JSON.stringify(Pe.EngineFormat),"let _EngineType = "+JSON.stringify(Pe.EngineType),"let _TranscoderFormat = "+JSON.stringify(Pe.TranscoderFormat),"let _BasisFormat = "+JSON.stringify(Pe.BasisFormat),"/* basis_transcoder.js */",i,"/* worker */",s.substring(s.indexOf("{")+1,s.lastIndexOf("}"))].join(`
|
|
8
|
-
`);this.workerSourceURL=URL.createObjectURL(new Blob([A])),this.transcoderBinary=o,this.workerPool.setWorkerCreator(()=>{const u=new Worker(this.workerSourceURL),c=this.transcoderBinary.slice(0);return u.postMessage({type:"init",config:this.workerConfig,transcoderBinary:c},[c]),u})}),Ka>0&&console.warn("THREE.KTX2Loader: Multiple active KTX2 loaders may cause performance issues. Use a single KTX2Loader instance, or call .dispose() on old instances."),Ka++}return this.transcoderPending}load(e,t,a,n){if(this.workerConfig===null)throw new Error("THREE.KTX2Loader: Missing initialization with `.detectSupport( renderer )`.");const i=new E.FileLoader(this.manager);i.setResponseType("arraybuffer"),i.setWithCredentials(this.withCredentials),i.load(e,o=>{this.parse(o,t,n)},a,n)}parse(e,t,a){if(this.workerConfig===null)throw new Error("THREE.KTX2Loader: Missing initialization with `.detectSupport( renderer )`.");if(qa.has(e))return qa.get(e).promise.then(t).catch(a);this._createTexture(e).then(n=>t?t(n):null).catch(a)}_createTextureFrom(e,t){const{type:a,error:n,data:{faces:i,width:o,height:s,format:A,type:u,dfdFlags:c}}=e;if(a==="error")return Promise.reject(n);let d;if(t.faceCount===6)d=new E.CompressedCubeTexture(i,A,u);else{const l=i[0].mipmaps;d=t.layerCount>1?new E.CompressedArrayTexture(l,o,s,t.layerCount,A,u):new E.CompressedTexture(l,o,s,A,u)}return d.minFilter=i[0].mipmaps.length===1?E.LinearFilter:E.LinearMipmapLinearFilter,d.magFilter=E.LinearFilter,d.generateMipmaps=!1,d.needsUpdate=!0,d.colorSpace=fn(t),d.premultiplyAlpha=!!(1&c),d}async _createTexture(e,t={}){const a=function(s){const A=new Uint8Array(s.buffer,s.byteOffset,Ue.length);if(A[0]!==Ue[0]||A[1]!==Ue[1]||A[2]!==Ue[2]||A[3]!==Ue[3]||A[4]!==Ue[4]||A[5]!==Ue[5]||A[6]!==Ue[6]||A[7]!==Ue[7]||A[8]!==Ue[8]||A[9]!==Ue[9]||A[10]!==Ue[10]||A[11]!==Ue[11])throw new Error("Missing KTX 2.0 identifier.");const u=new Go,c=17*Uint32Array.BYTES_PER_ELEMENT,d=new Wt(s,Ue.length,c,!0);u.vkFormat=d._nextUint32(),u.typeSize=d._nextUint32(),u.pixelWidth=d._nextUint32(),u.pixelHeight=d._nextUint32(),u.pixelDepth=d._nextUint32(),u.layerCount=d._nextUint32(),u.faceCount=d._nextUint32();const l=d._nextUint32();u.supercompressionScheme=d._nextUint32();const h=d._nextUint32(),b=d._nextUint32(),g=d._nextUint32(),f=d._nextUint32(),m=d._nextUint64(),p=d._nextUint64(),C=new Wt(s,Ue.length+c,3*l*8,!0);for(let Y=0;Y<l;Y++)u.levels.push({levelData:new Uint8Array(s.buffer,s.byteOffset+C._nextUint64(),C._nextUint64()),uncompressedByteLength:C._nextUint64()});const I=new Wt(s,h,b,!0),x={vendorId:I._skip(4)._nextUint16(),descriptorType:I._nextUint16(),versionNumber:I._nextUint16(),descriptorBlockSize:I._nextUint16(),colorModel:I._nextUint8(),colorPrimaries:I._nextUint8(),transferFunction:I._nextUint8(),flags:I._nextUint8(),texelBlockDimension:[I._nextUint8(),I._nextUint8(),I._nextUint8(),I._nextUint8()],bytesPlane:[I._nextUint8(),I._nextUint8(),I._nextUint8(),I._nextUint8(),I._nextUint8(),I._nextUint8(),I._nextUint8(),I._nextUint8()],samples:[]},y=(x.descriptorBlockSize/4-6)/4;for(let Y=0;Y<y;Y++){const ee={bitOffset:I._nextUint16(),bitLength:I._nextUint8(),channelType:I._nextUint8(),samplePosition:[I._nextUint8(),I._nextUint8(),I._nextUint8(),I._nextUint8()],sampleLower:-1/0,sampleUpper:1/0};64&ee.channelType?(ee.sampleLower=I._nextInt32(),ee.sampleUpper=I._nextInt32()):(ee.sampleLower=I._nextUint32(),ee.sampleUpper=I._nextUint32()),x.samples[Y]=ee}u.dataFormatDescriptor.length=0,u.dataFormatDescriptor.push(x);const F=new Wt(s,g,f,!0);for(;F._offset<f;){const Y=F._nextUint32(),ee=F._scan(Y),Ae=ln(ee);if(u.keyValue[Ae]=F._nextUint8Array(Y-ee.byteLength-1),Ae.match(/^ktx/i)){const Ee=ln(u.keyValue[Ae]);u.keyValue[Ae]=Ee.substring(0,Ee.lastIndexOf("\0"))}F._skip(Y%4?4-Y%4:0)}if(p<=0)return u;const D=new Wt(s,m,p,!0),Q=D._nextUint16(),M=D._nextUint16(),S=D._nextUint32(),O=D._nextUint32(),P=D._nextUint32(),K=D._nextUint32(),J=[];for(let Y=0;Y<l;Y++)J.push({imageFlags:D._nextUint32(),rgbSliceByteOffset:D._nextUint32(),rgbSliceByteLength:D._nextUint32(),alphaSliceByteOffset:D._nextUint32(),alphaSliceByteLength:D._nextUint32()});const q=m+D._offset,se=q+S,ue=se+O,re=ue+P,be=new Uint8Array(s.buffer,s.byteOffset+q,S),de=new Uint8Array(s.buffer,s.byteOffset+se,O),$=new Uint8Array(s.buffer,s.byteOffset+ue,P),pe=new Uint8Array(s.buffer,s.byteOffset+re,K);return u.globalData={endpointCount:Q,selectorCount:M,imageDescs:J,endpointsData:be,selectorsData:de,tablesData:$,extendedData:pe},u}(new Uint8Array(e)),n=a.vkFormat===Ha&&a.dataFormatDescriptor[0].colorModel===167;if(!(a.vkFormat===0||n&&!this.workerConfig.astcHDRSupported))return async function(s){const{vkFormat:A}=s;if(Va[A]===void 0)throw new Error("THREE.KTX2Loader: Unsupported vkFormat.");let u;s.supercompressionScheme===2&&(Ja||(Ja=new Promise(async l=>{const h=new _o;await h.init(),l(h)})),u=await Ja);const c=[];for(let l=0;l<s.levels.length;l++){const h=Math.max(1,s.pixelWidth>>l),b=Math.max(1,s.pixelHeight>>l),g=s.pixelDepth?Math.max(1,s.pixelDepth>>l):0,f=s.levels[l];let m,p;if(s.supercompressionScheme===0)m=f.levelData;else{if(s.supercompressionScheme!==2)throw new Error("THREE.KTX2Loader: Unsupported supercompressionScheme.");m=u.decode(f.levelData,f.uncompressedByteLength)}p=Wa[A]===E.FloatType?new Float32Array(m.buffer,m.byteOffset,m.byteLength/Float32Array.BYTES_PER_ELEMENT):Wa[A]===E.HalfFloatType?new Uint16Array(m.buffer,m.byteOffset,m.byteLength/Uint16Array.BYTES_PER_ELEMENT):m,c.push({data:p,width:h,height:b,depth:g})}let d;if(Ho.has(Va[A]))d=s.pixelDepth===0?new E.DataTexture(c[0].data,s.pixelWidth,s.pixelHeight):new E.Data3DTexture(c[0].data,s.pixelWidth,s.pixelHeight,s.pixelDepth);else{if(s.pixelDepth>0)throw new Error("THREE.KTX2Loader: Unsupported pixelDepth.");d=new E.CompressedTexture(c,s.pixelWidth,s.pixelHeight),d.minFilter=c.length===1?E.LinearFilter:E.LinearMipmapLinearFilter,d.magFilter=E.LinearFilter}return d.mipmaps=c,d.type=Wa[A],d.format=Va[A],d.colorSpace=fn(s),d.needsUpdate=!0,Promise.resolve(d)}(a);const i=t,o=this.init().then(()=>this.workerPool.postMessage({type:"transcode",buffer:e,taskConfig:i},[e])).then(s=>this._createTextureFrom(s.data,a));return qa.set(e,{promise:o}),o}dispose(){this.workerPool.dispose(),this.workerSourceURL&&URL.revokeObjectURL(this.workerSourceURL),Ka--}}Pe.BasisFormat={ETC1S:0,UASTC:1,UASTC_HDR:2},Pe.TranscoderFormat={ETC1:0,ETC2:1,BC1:2,BC3:3,BC4:4,BC5:5,BC7_M6_OPAQUE_ONLY:6,BC7_M5:7,PVRTC1_4_RGB:8,PVRTC1_4_RGBA:9,ASTC_4x4:10,ATC_RGB:11,ATC_RGBA_INTERPOLATED_ALPHA:12,RGBA32:13,RGB565:14,BGR565:15,RGBA4444:16,BC6H:22,RGB_HALF:24,RGBA_HALF:25},Pe.EngineFormat={RGBAFormat:E.RGBAFormat,RGBA_ASTC_4x4_Format:E.RGBA_ASTC_4x4_Format,RGB_BPTC_UNSIGNED_Format:E.RGB_BPTC_UNSIGNED_Format,RGBA_BPTC_Format:E.RGBA_BPTC_Format,RGBA_ETC2_EAC_Format:E.RGBA_ETC2_EAC_Format,RGBA_PVRTC_4BPPV1_Format:E.RGBA_PVRTC_4BPPV1_Format,RGBA_S3TC_DXT5_Format:E.RGBA_S3TC_DXT5_Format,RGB_ETC1_Format:E.RGB_ETC1_Format,RGB_ETC2_Format:E.RGB_ETC2_Format,RGB_PVRTC_4BPPV1_Format:E.RGB_PVRTC_4BPPV1_Format,RGBA_S3TC_DXT1_Format:E.RGBA_S3TC_DXT1_Format},Pe.EngineType={UnsignedByteType:E.UnsignedByteType,HalfFloatType:E.HalfFloatType,FloatType:E.FloatType},Pe.BasisWorker=function(){let r,e,t;const a=_EngineFormat,n=_EngineType,i=_TranscoderFormat,o=_BasisFormat;self.addEventListener("message",function(d){const l=d.data;switch(l.type){case"init":r=l.config,h=l.transcoderBinary,e=new Promise(b=>{t={wasmBinary:h,onRuntimeInitialized:b},BASIS(t)}).then(()=>{t.initializeBasis(),t.KTX2File===void 0&&console.warn("THREE.KTX2Loader: Please update Basis Universal transcoder.")});break;case"transcode":e.then(()=>{try{const{faces:b,buffers:g,width:f,height:m,hasAlpha:p,format:C,type:I,dfdFlags:x}=function(y){const F=new t.KTX2File(new Uint8Array(y));function D(){F.close(),F.delete()}if(!F.isValid())throw D(),new Error("THREE.KTX2Loader: Invalid or unsupported .ktx2 file");let Q;if(F.isUASTC())Q=o.UASTC;else if(F.isETC1S())Q=o.ETC1S;else{if(!F.isHDR())throw new Error("THREE.KTX2Loader: Unknown Basis encoding");Q=o.UASTC_HDR}const M=F.getWidth(),S=F.getHeight(),O=F.getLayers()||1,P=F.getLevels(),K=F.getFaces(),J=F.getHasAlpha(),q=F.getDFDFlags(),{transcoderFormat:se,engineFormat:ue,engineType:re}=function($,pe,Y,ee){const Ae=A[$];for(let Ee=0;Ee<Ae.length;Ee++){const ye=Ae[Ee];if(!(ye.if&&!r[ye.if])&&ye.basisFormat.includes($)&&!(ee&&ye.transcoderFormat.length<2)&&!(ye.needsPowerOfTwo&&(!u(pe)||!u(Y))))return{transcoderFormat:ye.transcoderFormat[ee?1:0],engineFormat:ye.engineFormat[ee?1:0],engineType:ye.engineType[0]}}throw new Error("THREE.KTX2Loader: Failed to identify transcoding target.")}(Q,M,S,J);if(!M||!S||!P)throw D(),new Error("THREE.KTX2Loader: Invalid texture");if(!F.startTranscoding())throw D(),new Error("THREE.KTX2Loader: .startTranscoding failed");const be=[],de=[];for(let $=0;$<K;$++){const pe=[];for(let Y=0;Y<P;Y++){const ee=[];let Ae,Ee;for(let Ne=0;Ne<O;Ne++){const qe=F.getImageLevelInfo(Y,Ne,$);$!==0||Y!==0||Ne!==0||qe.origWidth%4==0&&qe.origHeight%4==0||console.warn("THREE.KTX2Loader: ETC1S and UASTC textures should use multiple-of-four dimensions."),P>1?(Ae=qe.origWidth,Ee=qe.origHeight):(Ae=qe.width,Ee=qe.height);let Je=new Uint8Array(F.getImageTranscodedSizeInBytes(Y,Ne,0,se));const ta=F.transcodeImage(Je,Y,Ne,$,se,0,-1,-1);if(re===n.HalfFloatType&&(Je=new Uint16Array(Je.buffer,Je.byteOffset,Je.byteLength/Uint16Array.BYTES_PER_ELEMENT)),!ta)throw D(),new Error("THREE.KTX2Loader: .transcodeImage failed.");ee.push(Je)}const ye=c(ee);pe.push({data:ye,width:Ae,height:Ee}),de.push(ye.buffer)}be.push({mipmaps:pe,width:M,height:S,format:ue,type:re})}return D(),{faces:be,buffers:de,width:M,height:S,hasAlpha:J,dfdFlags:q,format:ue,type:re}}(l.buffer);self.postMessage({type:"transcode",id:l.id,data:{faces:b,width:f,height:m,hasAlpha:p,format:C,type:I,dfdFlags:x}},g)}catch(b){console.error(b),self.postMessage({type:"error",id:l.id,error:b.message})}})}var h});const s=[{if:"astcSupported",basisFormat:[o.UASTC],transcoderFormat:[i.ASTC_4x4,i.ASTC_4x4],engineFormat:[a.RGBA_ASTC_4x4_Format,a.RGBA_ASTC_4x4_Format],engineType:[n.UnsignedByteType],priorityETC1S:1/0,priorityUASTC:1,needsPowerOfTwo:!1},{if:"bptcSupported",basisFormat:[o.ETC1S,o.UASTC],transcoderFormat:[i.BC7_M5,i.BC7_M5],engineFormat:[a.RGBA_BPTC_Format,a.RGBA_BPTC_Format],engineType:[n.UnsignedByteType],priorityETC1S:3,priorityUASTC:2,needsPowerOfTwo:!1},{if:"dxtSupported",basisFormat:[o.ETC1S,o.UASTC],transcoderFormat:[i.BC1,i.BC3],engineFormat:[a.RGBA_S3TC_DXT1_Format,a.RGBA_S3TC_DXT5_Format],engineType:[n.UnsignedByteType],priorityETC1S:4,priorityUASTC:5,needsPowerOfTwo:!1},{if:"etc2Supported",basisFormat:[o.ETC1S,o.UASTC],transcoderFormat:[i.ETC1,i.ETC2],engineFormat:[a.RGB_ETC2_Format,a.RGBA_ETC2_EAC_Format],engineType:[n.UnsignedByteType],priorityETC1S:1,priorityUASTC:3,needsPowerOfTwo:!1},{if:"etc1Supported",basisFormat:[o.ETC1S,o.UASTC],transcoderFormat:[i.ETC1],engineFormat:[a.RGB_ETC1_Format],engineType:[n.UnsignedByteType],priorityETC1S:2,priorityUASTC:4,needsPowerOfTwo:!1},{if:"pvrtcSupported",basisFormat:[o.ETC1S,o.UASTC],transcoderFormat:[i.PVRTC1_4_RGB,i.PVRTC1_4_RGBA],engineFormat:[a.RGB_PVRTC_4BPPV1_Format,a.RGBA_PVRTC_4BPPV1_Format],engineType:[n.UnsignedByteType],priorityETC1S:5,priorityUASTC:6,needsPowerOfTwo:!0},{if:"bptcSupported",basisFormat:[o.UASTC_HDR],transcoderFormat:[i.BC6H],engineFormat:[a.RGB_BPTC_UNSIGNED_Format],engineType:[n.HalfFloatType],priorityHDR:1,needsPowerOfTwo:!1},{basisFormat:[o.ETC1S,o.UASTC],transcoderFormat:[i.RGBA32,i.RGBA32],engineFormat:[a.RGBAFormat,a.RGBAFormat],engineType:[n.UnsignedByteType,n.UnsignedByteType],priorityETC1S:100,priorityUASTC:100,needsPowerOfTwo:!1},{basisFormat:[o.UASTC_HDR],transcoderFormat:[i.RGBA_HALF],engineFormat:[a.RGBAFormat],engineType:[n.HalfFloatType],priorityHDR:100,needsPowerOfTwo:!1}],A={[o.ETC1S]:s.filter(d=>d.basisFormat.includes(o.ETC1S)).sort((d,l)=>d.priorityUASTC-l.priorityUASTC),[o.UASTC]:s.filter(d=>d.basisFormat.includes(o.UASTC)).sort((d,l)=>d.priorityUASTC-l.priorityUASTC),[o.UASTC_HDR]:s.filter(d=>d.basisFormat.includes(o.UASTC_HDR)).sort((d,l)=>d.priorityHDR-l.priorityHDR)};function u(d){return d<=2||!(d&d-1)&&d!==0}function c(d){if(d.length===1)return d[0];let l=0;for(let g=0;g<d.length;g++)l+=d[g].byteLength;const h=new Uint8Array(l);let b=0;for(let g=0;g<d.length;g++){const f=d[g];h.set(f,b),b+=f.byteLength}return h}};const Ho=new Set([E.RGBAFormat,E.RGFormat,E.RedFormat]),Va={[dn]:E.RGBAFormat,[An]:E.RGBAFormat,[rn]:E.RGBAFormat,[nn]:E.RGBAFormat,[un]:E.RGFormat,[sn]:E.RGFormat,[tn]:E.RGFormat,[an]:E.RGFormat,[cn]:E.RedFormat,[on]:E.RedFormat,[en]:E.RedFormat,[$r]:E.RedFormat,[Ha]:E.RGBA_ASTC_4x4_Format,[bn]:E.RGBA_ASTC_6x6_Format,[hn]:E.RGBA_ASTC_6x6_Format},Wa={[dn]:E.FloatType,[An]:E.HalfFloatType,[rn]:E.UnsignedByteType,[nn]:E.UnsignedByteType,[un]:E.FloatType,[sn]:E.HalfFloatType,[tn]:E.UnsignedByteType,[an]:E.UnsignedByteType,[cn]:E.FloatType,[on]:E.HalfFloatType,[en]:E.UnsignedByteType,[$r]:E.UnsignedByteType,[Ha]:E.HalfFloatType,[bn]:E.UnsignedByteType,[hn]:E.UnsignedByteType};function fn(r){const e=r.dataFormatDescriptor[0];return e.colorPrimaries===1?e.transferFunction===2?E.SRGBColorSpace:E.LinearSRGBColorSpace:e.colorPrimaries===10?e.transferFunction===2?"display-p3":"display-p3-linear":(e.colorPrimaries===0||console.warn(`THREE.KTX2Loader: Unsupported color primaries, "${e.colorPrimaries}"`),E.NoColorSpace)}async function pn(r){const e=r.split("?")[0].split(".").pop(),t=await fetch(r);if(!t.ok)throw new Error(`Failed to fetch ${r}: ${t.statusText}`);if(e==="json"){const a=await t.json();return handleJSONSubtree(a,mn(r))}if(e==="subtree")return async function(a,n){const i=new DataView(a),o=i.getBigUint64(8,!0),s=i.getBigUint64(16,!0),A=24,u=A+Number(o),c=u+(8-u%8)%8,d=c+Number(s),l=a.slice(A,u),h=new TextDecoder().decode(l).trim(),b=JSON.parse(h);if(!b.buffers)throw new Error("subtree has no buffers");const g=b.buffers.map(async m=>{if(m.uri){const p=new URL(m.uri,n).href,C=await fetch(p);if(!C.ok)throw new Error(`Failed to fetch binary file ${p}: ${C.statusText}`);return new Uint8Array(await C.arrayBuffer())}return new Uint8Array(a.slice(c,d))}),f=await Promise.all(g);return function(m,p){function C(D,Q){if(!D)throw new Error("incomplete json subtree");if(D.constant){if(D.constant==0)return!1;if(D.constant==1)return!0}if(D.bitstream==null)throw new Error('json subtree "tileAvailability" does not specify a bitstream');if(!m.bufferViews||!m.bufferViews[D.bitstream])throw new Error('json subtree "bufferViews" does not specify a bitstream');const M=m.bufferViews[D.bitstream];return I(p[M.buffer],M.byteOffset,Q)}function I(D,Q,M){const S=M%8;return D[Q+Math.floor(M/8)]>>S&!0}function x(D){let Q=0;return Q=D.z==null?Ya(D.x,D.y,D.level):Za(D.x,D.y,D.z,D.level),C(m.tileAvailability,Q)}function y(D){let Q=0;Q=D.z==null?Ya(D.x,D.y,D.level):Za(D.x,D.y,D.z,D.level);const M=[];return m.contentAvailability.forEach(S=>{M.push(C(S,Q))}),M}function F(D){let Q=0;return Q=D.z==null?Ya(D.x,D.y):Za(D.x,D.y,D.z),C(m.childSubtreeAvailability,Q)}return{isTileAvailable:x,isContentAvailable:y,isChildSubtreeAvailable:F}}(b,f)}(await t.arrayBuffer(),mn(r));throw new Error(`Unsupported file extension: ${e}`)}function mn(r){const e=r.split("?")[0];return e.substring(0,e.lastIndexOf("/")+1)}function En(r){return r=1431655765&((r=858993459&((r=252645135&((r=16711935&((r&=65535)^r<<8))^r<<4))^r<<2))^r<<1)}function Ya(r,e,t){let a=0;return t&&(a=(Math.pow(4,t)-1)/3),a+(En(r)|En(e)<<1)}function Xa(r){return r=153391689&((r=51130563&((r=50393103&((r=4278190335&((r&=1023)^r<<16))^r<<8))^r<<4))^r<<2)}function Za(r,e,t,a){let n=0;return a&&(n=(Math.pow(8,a)-1)/7),n+(Xa(r)|Xa(e)<<1|Xa(t)<<2)}const Yt=new Map;async function $a(r,e){if(!r.root||!r.root.implicitTiling)return r;if(!r.root.content&&!r.root.contents)throw new Error("implicit tiling requires a Template URI");let t=!0;r.root.implicitTiling.subdivisionScheme&&(t=r.root.implicitTiling.subdivisionScheme.toUpperCase()==="QUADTREE");let a="";r.root.implicitTiling.subtrees&&(r.root.implicitTiling.subtrees.uri?a=r.root.implicitTiling.subtrees.uri:r.root.implicitTiling.subtrees.url&&(a=r.root.implicitTiling.subtrees.url));let n=[];r.root.content?r.root.content.uri?n.push(r.root.content.uri):r.root.content.url&&n.push(r.root.content.url):r.root.contents&&r.root.contents.forEach(h=>{h.uri?n.push(h.uri):h.url&&n.push(h.url)});const i=function(h){const b=h.split("?")[0];return b.substring(0,b.lastIndexOf("/")+1)}(e);let o;t&&(o=a.replace("{level}",0).replace("{x}",0).replace("{y}",0)),t||(o=a.replace("{level}",0).replace("{x}",0).replace("{y}",0).replace("{z}",0));const s={level:0,x:0,y:0},A={level:0,x:0,y:0};t||(s.z=0,A.z=0),Yt.set(o,await pn(i+o));const u=Yt.get(o),c=[];u.isContentAvailable(A)&&n.forEach(h=>{let b;t&&(b=h.replace("{level}",s.level).replace("{x}",s.x).replace("{y}",s.y)),t||(b=h.replace("{level}",s.level).replace("{x}",s.x).replace("{y}",s.y).replace("{z}",s.z)),c.push({uri:b})});const d={geometricError:r.root.geometricError,boundingVolume:r.root.boundingVolume,refine:r.root.refine,globalAddress:s,localAddress:A,subtree:u,contents:c,getChildren:async()=>l(d)};return{root:d};async function l(h){const b=[];if(h.localAddress.level==r.root.implicitTiling.availableLevels-1)return b;if((h.localAddress.level+1)%r.root.implicitTiling.subtreeLevels==0){const g=ia(h.localAddress),f=ia(h.globalAddress),m=Cn(t,r.root.boundingVolume,f);for(let p=0;p<g.length;p++){const C=g[p],I=f[p];h.subtree.isChildSubtreeAvailable(C)&&(t&&a.replace("{level}",I.level).replace("{x}",I.x).replace("{y}",I.y),t||a.replace("{level}",I.level).replace("{x}",I.x).replace("{y}",I.y).replace("{z}",I.z)),Yt.has(o)||Yt.set(o,await pn(i+o));const x=Yt.get(o),y={level:0,x:0,y:0};t||(y.z=0);const F=[];x.isContentAvailable(y)&&n.forEach(Q=>{let M;t&&(M=Q.replace("{level}",I.level).replace("{x}",I.x).replace("{y}",I.y)),t||(M=Q.replace("{level}",I.level).replace("{x}",I.x).replace("{y}",I.y).replace("{z}",I.z)),F.push({uri:M})});const D={geometricError:h.geometricError/2,boundingVolume:m[p],refine:r.root.refine,globalAddress:I,localAddress:y,subtree:x,contents:F,getChildren:async()=>l(D)};b.push(D)}}else{const g=ia(h.localAddress),f=ia(h.globalAddress),m=Cn(t,r.root.boundingVolume,f);for(let p=0;p<g.length;p++){const C=g[p],I=f[p];if(!h.subtree.isTileAvailable(C))continue;const x=[],y=h.subtree.isContentAvailable(C);for(let D=0;D<n.length;D++){if(!y[D])continue;const Q=n[D];let M;t&&(M=Q.replace("{level}",I.level).replace("{x}",I.x).replace("{y}",I.y)),t||(M=Q.replace("{level}",I.level).replace("{x}",I.x).replace("{y}",I.y).replace("{z}",I.z)),x.push({uri:M})}const F={geometricError:h.geometricError/2,boundingVolume:m[p],refine:r.root.refine,globalAddress:I,localAddress:C,subtree:h.subtree,contents:x,getChildren:async()=>l(F)};b.push(F)}}return b.length>0?b:void 0}}function ia(r){const{level:e,x:t,y:a,z:n}=r,i=e+1;let o=[];return o=n===void 0?[{level:i,x:2*t,y:2*a},{level:i,x:2*t+1,y:2*a},{level:i,x:2*t,y:2*a+1},{level:i,x:2*t+1,y:2*a+1}]:[{level:i,x:2*t,y:2*a,z:2*n},{level:i,x:2*t+1,y:2*a,z:2*n},{level:i,x:2*t,y:2*a+1,z:2*n},{level:i,x:2*t+1,y:2*a+1,z:2*n},{level:i,x:2*t,y:2*a,z:2*n+1},{level:i,x:2*t+1,y:2*a,z:2*n+1},{level:i,x:2*t,y:2*a+1,z:2*n+1},{level:i,x:2*t+1,y:2*a+1,z:2*n+1}],o}function Cn(r,e,t){const a=[];for(let n=0;n<t.length;n++)a.push(Oo(r,e,t[n]));return a}function Oo(r,e,t){if(e.region)return function(a,n,i){const[o,s,A,u,c,d]=n,l=(A-o)/2**i.level,h=(u-s)/2**i.level,b=a?0:(d-c)/2**i.level,g=o+l*i.x,f=s+h*i.y,m=g+l,p=f+h,C=a?c:c+b*i.z,I=a?d:C+b;return{region:[g,f,m,p,C,I]}}(r,e.region,t);if(e.box)return function(a,n,i){const o=n.slice(0,3),s=[n.slice(3,6),n.slice(6,9),n.slice(9,12)],A=1/Math.pow(2,i.level),u=[A,A,a?1:A],c=s.map((h,b)=>h.map(g=>g*u[b])),d=[o[0]-s[0][0]-s[1][0]-s[2][0],o[1]-s[0][1]-s[1][1]-s[2][1],o[2]-s[0][2]-s[1][2]-s[2][2]];return{box:[d[0]+(2*i.x+1)*(c[0][0]+c[1][0]+c[2][0]),d[1]+(2*i.y+1)*(c[0][1]+c[1][1]+c[2][1]),a?o[2]:d[2]+(2*i.z+1)*(c[0][2]+c[1][2]+c[2][2])].concat(...c)}}(r,e.box,t);throw new Error("Unsupported bounding volume type")}(function(){var r,e=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if(typeof WebAssembly!="object")return{supported:!1};function t(A){if(!A)throw new Error("Assertion failed")}function a(A){return new Uint8Array(A.buffer,A.byteOffset,A.byteLength)}function n(A,u,c,d,l){var h=r.exports.sbrk,b=h(u),g=h(d*l),f=new Uint8Array(r.exports.memory.buffer);f.set(a(c),g);var m=A(b,u,g,d,l),p=new Uint8Array(m);return p.set(f.subarray(b,b+m)),h(b-h(0)),p}function i(A){for(var u=0,c=0;c<A.length;++c)var d=A[c];return u}function o(A,u){if(t(u==2||u==4),u==4)return new Uint32Array(A.buffer,A.byteOffset,A.byteLength/4);var c=new Uint16Array(A.buffer,A.byteOffset,A.byteLength/2);return new Uint32Array(c)}function s(A,u,c,d,l,h,b){var g=r.exports.sbrk,f=g(c*d),m=g(c*h),p=new Uint8Array(r.exports.memory.buffer);p.set(a(u),m),A(f,c,d,l,m,b);var C=new Uint8Array(c*d);return C.set(p.subarray(f,f+c*d)),g(f-g(0)),C}WebAssembly.instantiate(function(A){for(var u=new Uint8Array(A.length),c=0;c<A.length;++c){var d=A.charCodeAt(c);u[c]=d>96?d-97:d>64?d-39:d+4}var l=0;for(c=0;c<A.length;++c)u[l++]=u[c]<60?e[u[c]]:64*(u[c]-60)+u[++c];return u.buffer.slice(0,l)}("b9H79Tebbbe9nk9Geueu9Geub9Gbb9Gouuuuuueu9Gvuuuuueu9Gduueu9Gluuuueu9Gvuuuuub9Gouuuuuub9Gluuuub9GiuuueuiYKdilveoveovrrwrrDDoDbqqbelve9Weiiviebeoweuec;G:Qdkr:nlAo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8F9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949c919M9MWV9mW4W2be8A9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949c919M9MWVbd8F9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949c919M9MWV9c9V919U9KbiE9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949wWV79P9V9UblY9TW79O9V9Wt9FW9U9J9V9KW69U9KW949c919M9MWVbv8E9TW79O9V9Wt9FW9U9J9V9KW69U9KW949c919M9MWV9c9V919U9Kbo8A9TW79O9V9Wt9FW9U9J9V9KW69U9KW949wWV79P9V9UbrE9TW79O9V9Wt9FW9U9J9V9KW69U9KW949tWG91W9U9JWbwa9TW79O9V9Wt9FW9U9J9V9KW69U9KW949tWG91W9U9JW9c9V919U9KbDL9TW79O9V9Wt9FW9U9J9V9KWS9P2tWV9p9JtbqK9TW79O9V9Wt9FW9U9J9V9KWS9P2tWV9r919HtbkL9TW79O9V9Wt9FW9U9J9V9KWS9P2tWVT949WbxE9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94J9H9J9OWbsa9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94J9H9J9OW9ttV9P9Wbza9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94SWt9J9O9sW9T9H9WbHK9TW79O9V9Wt9F79W9Ht9P9H29t9VVt9sW9T9H9WbOl79IV9RbADwebcekdLQq:X9MKdbk:xhdgud9:8Jjjjjbc;qw9Rgo8Kjjjjbdndnaembcbhrxekabcbyd;C:kjjbgwc:GeV86bbaoc;adfcbcjdz:vjjjb8AdnaiTmbaoc;adfadalzNjjjb8Akaoc;abfalfcbcbcjdal9RalcFe0Ez:vjjjb8Aaoc;abfaoc;adfalzNjjjb8AaocUf9cb83ibaoc8Wf9cb83ibaocyf9cb83ibaocaf9cb83ibaocKf9cb83ibaoczf9cb83ibao9cb83iwao9cb83ibcj;abal9Uc;WFbGcjdalca0EhDdnaicd6mbavcd9imbawTmbadcefhqaDci2gkal2hxaoc;alfclfhmaoc;qlfceVhPaoc;qofclVhsaoc;qofcKfhzaoc;qofczfhHcbhOincdhAcbhrdnavci6mbaz9cb83ibaH9cb83ibao9cb83i;yoao9cb83i;qoadaOfgrybbhCcbhXincbhQcbhLdninaralfhKarybbgYaC7aLVhLaQcP0meaKhraYhCaQcefgQaXfai6mbkkcbhCaoc;qofhQincwh8AcwhEdnaLaC93grcFeGg3cs0mbclhEa3ci0mba3cb9hcethEkdnarcw4cFeGg3cs0mbclh8Aa3ci0mba3cb9hceth8Aka8AaEfh3aQydbh5cwh8AcwhEdnarcz4cFeGg8Ecs0mbclhEa8Eci0mba8Ecb9hcethEka3a5fh3dnarcFFFFb0mbclh8AarcFFF8F0mbarcFFFr0ceth8AkaQa3aEfa8AfBdbaQclfhQaCcefgCcw9hmbkaKhraYhCaXczfgXai6mbkcbhrcehQashLinaQaraLydbaoc;qofarcdtfydb6EhraLclfhLaQcefgQcw9hmbkcihAkcbh3aoc;qlfcbcjdz:vjjjb8Aaoc;alfcwfcbBdbao9cb83i;alarclth8FadhaaDhhaqh5inaoc;qlfadcba3cufgrara30Eal2falzNjjjb8Aaiahaiah6EhgdnaDaia39Ra3aDfai6EgYcsfc9WGgraY9nmbaoc;qofaYfcbaraY9Rz:vjjjb8Akada3al2fh8Jcbh8Kina8Ka8FVcl4hXaoc;alfa8Kcdtfh8LaOh8Mcbh8Nina8NaOfhQdndndndndndna8KPldebidkaPa8Mc98GgLfhra5aLfh8Aaoc;qlfaQc98GgLfRbbhCcwhQinarRbbaQtaCVhCarcefhraQcwfgQca9hmbkaYTmla8Ncith8Ea8JaLfhEcbhKinaERbbhLcwhra8AhQinaQRbbartaLVhLaQcefhQarcwfgrca9hmbkaoc;qofaKfaLaC7aX93a8E486bba8Aalfh8AaEalfhEaLhCaKcefgKaY9hmbxlkkaYTmia8Mc9:Ghra8NcitcwGhEaoc;qlfaQceVfRbbcwtaoc;qlfaQc9:GfRbbVhLaoc;qofhQaghCinaQa5arfRbbcwtaaarfRbbVg8AaL9RgLcetaLcztcz91cs47cFFiGaE486bbaralfhraQcefhQa8AhLa3aCcufgC9hmbxikkaYTmda8JaQfhraoc;qlfaQfRbbhLaoc;qofhQaghCinaQarRbbg8AaL9RgLcetaLcKtcK91cr4786bbaQcefhQaralfhra8AhLa3aCcufgC9hmbxdkkaYTmeka8LydbhEcbhKaoc;qofhrincdhLcbhQinaLaraQfRbbcb9hfhLaQcefgQcz9hmbkclhCcbhQinaCaraQfRbbcd0fhCaQcefgQcz9hmbkcwh8AcbhQina8AaraQfRbbcP0fh8AaQcefgQcz9hmbkaLaCaLaC6EgQa8AaQa8A6EgQczaQcz6EaEfhEarczfhraKczfgKaY6mbka8LaEBdbka8Mcefh8Ma8Ncefg8Ncl9hmbka8Kcefg8KaA9hmbkaaaxfhaahakfhha5axfh5a3akfg3ai6mbkcbhrcehQamhLinaQaraLydbaoc;alfarcdtfydb6EhraLclfhLaQcefgChQaAaC9hmbkaoaOcd4fa8FcdVararcdSE86bbaOclfgOal6mbkkabaefh8Kabcefhralcd4gecbawEhqadcefhHaoc;abfceVhzcbhxdndninaiax9nmeaoc;qofcbcjdz:vjjjb8Aa8Kar9Raq6mdadaxal2gQfhkcbh8JaHaQfhsarcbaqz:vjjjbghaqfh5aDaiax9RaxaDfai6EgPcsfgrcl4cifcd4hAarc9WGg8LThmindndndndndndndndndndnawTmbaoa8Jcd4fRbbgLciGPlbedlbkaPTmdaka8Jfhraoc;abfa8JfRbbhLaoc;qofhQaPhCinaQarRbbg8AaL9RgLcetaLcKtcK91cr4786bbaQcefhQaralfhra8AhLaCcufgCmbxikkaPTmia8JcitcwGhEaoc;abfa8JceVfRbbcwtaoc;abfa8Jc9:GgrfRbbVhLakarfhraoc;qofhQaPhCinaQar8Vbbg8AaL9RgLcetaLcztcz91cs47cFFiGaE486bbaQcefhQaralfhra8AhLaCcufgCmbxdkkaza8Jc98GgEfhrasaEfh8Aaoc;abfaEfRbbhCcwhQinarRbbaQtaCVhCarcefhraQcwfgQca9hmbkaPTmbaLcl4hYa8JcitcKGh3akaEfhEcbhKinaERbbhLcwhra8AhQinaQRbbartaLVhLaQcefhQarcwfgrca9hmbkaoc;qofaKfaLaC7aY93a3486bba8Aalfh8AaEalfhEaLhCaKcefgKaP9hmbkkawmbcbhrxlka8LTmbcbhrdninaoc;qofarfgQcwf8PibaQ8Pib:e9qTmearczfgra8L9pmdxbkkdnavmbcehrxikcbhEaAhKaAhYinaoc;qofaEfgrcwf8Pibhyar8Pibh8PcdhLcbhQinaLaraQfRbbcb9hfhLaQcefgQcz9hmbkclhCcbhQinaCaraQfRbbcd0fhCaQcefgQcz9hmbkcwh8AcbhQina8AaraQfRbbcP0fh8AaQcefgQcz9hmbkaLaCaLaC6Egra8Aara8A6Egrczarcz6EaYfhYarcucbaya8P:e9cb9sEgQaraQ6EaKfhKaEczfgEa8L9pmdxbkkaha8Jcd4fgrarRbbcda8JcetcoGtV86bbxikdnaKaP6mbaYaP6mbaha8Jcd4fgrarRbbcia8JcetcoGtV86bba8Ka59RaP6mra5aoc;qofaPzNjjjbaPfh5xikaKaY9phrkaha8Jcd4fgQaQRbbara8JcetcoGtV86bbka8Ka59RaA6mla5cbaAz:vjjjbgOaAfhYdndna8Lmbamhrxekdna8KaY9RcK9pmbamhrxekarcdtc:q1jjbfcj1jjbawEg5ydxggcetc;:FFFeGh8Fcuh3cuagtcu7cFeGhacbh8Maoc;qofhLinaoc;qofa8MfhXczhEdndndnagPDbeeeeeeedekcucbaXcwf8PibaX8Pib:e9cb9sEhExekcbhra8FhEinaEaaaLarfRbb9nfhEarcefgrcz9hmbkkcih8Ecbh8AinczhQdndndna5a8AcdtfydbgKPDbeeeeeeedekcucbaXcwf8PibaX8Pib:e9cb9sEhQxekaKcetc;:FFFeGhQcuaKtcu7cFeGhCcbhrinaQaCaLarfRbb9nfhQarcefgrcz9hmbkkdndnaQaE6mbaKa39hmeaQaE9hmea5a8EcdtfydbcwSmeka8Ah8EaQhEka8Acefg8Aci9hmbkaOa8Mco4fgrarRbba8Ea8Mci4coGtV86bbdndndna5a8Ecdtfydbg3PDdbbbbbbbebkdncwa39Tg8ETmbcua3tcu7hQdndna3ceSmbcbh8NaLhXinaXhra8Eh8AcbhCinarRbbgEaQcFeGgKaEaK6EaCa3tVhCarcefhra8Acufg8AmbkaYaC86bbaXa8EfhXaYcefhYa8Na8Efg8Ncz6mbxdkkcbh8NaLhXinaXhra8Eh8AcbhCinarRbbgEaQcFeGgKaEaK6EaCcetVhCarcefhra8Acufg8AmbkaYaC:T9cFe:d9c:c:qj:bw9:9c:q;c1:I1e:d9c:b:c:e1z9:9ca188bbaXa8EfhXaYcefhYa8Na8Efg8Ncz6mbkkcbhrinaYaLarfRbbgC86bbaYaCaQcFeG9pfhYarcefgrcz9hmbxikkdna3ceSmbinaYcb86bbaYcefhYxbkkinaYcb86bbaYcefhYxbkkaYaX8Pbb83bbaYcwfaXcwf8Pbb83bbaYczfhYka8Mczfg8Ma8L9pgrmeaLczfhLa8KaY9RcK9pmbkkarTmlaYh5aYTmlka8Jcefg8Jal9hmbkaoc;abfakaPcufal2falzNjjjb8AaPaxfhxa5hra5mbkcbhrxdkdna8Kar9RaqalfgQcKcaawEgLaQaL0EgC9pmbcbhrxdkdnaQaL9pmbarcbaCaQ9RgQz:vjjjbaQfhrkaraoc;adfalzNjjjbalfhrdnawTmbaraoaezNjjjbaefhrkarab9Rhrxekcbhrkaoc;qwf8KjjjjbarkCbabaeadaialcdz:bjjjbk9reduaecd4gdaefgicaaica0Eabcj;abae9Uc;WFbGcjdaeca0Egifcufai9Uae2aiadfaicl4cifcd4f2fcefkmbcbabBd;C:kjjbk:Ese5u8Jjjjjbc;ae9Rgl8Kjjjjbcbhvdnaici9UgocHfae0mbabcbyd;m:kjjbgrc;GeV86bbalc;abfcFecjez:vjjjb8AalcUfgw9cu83ibalc8WfgD9cu83ibalcyfgq9cu83ibalcafgk9cu83ibalcKfgx9cu83ibalczfgm9cu83ibal9cu83iwal9cu83ibabaefc9WfhPabcefgsaofhednaiTmbcmcsarcb9kgzEhHcbhOcbhAcbhCcbhXcbhQindnaeaP9nmbcbhvxikaQcufhvadaCcdtfgLydbhKaLcwfydbhYaLclfydbh8AcbhEdndndninalc;abfavcsGcitfgoydlh3dndndnaoydbgoaK9hmba3a8ASmekdnaoa8A9hmba3aY9hmbaEcefhExekaoaY9hmea3aK9hmeaEcdfhEkaEc870mdaXcufhvaLaEciGcx2goc;i1jjbfydbcdtfydbh3aLaoc;e1jjbfydbcdtfydbh8AaLaoc;a1jjbfydbcdtfydbhKcbhodnindnalavcsGcdtfydba39hmbaohYxdkcuhYavcufhvaocefgocz9hmbkkaOa3aOSgvaYce9iaYaH9oVgoGfhOdndndncbcsavEaYaoEgvcs9hmbarce9imba3a3aAa3cefaASgvEgAcefSmecmcsavEhvkasavaEcdtc;WeGV86bbavcs9hmea3aA9Rgvcetavc8F917hvinaeavcFb0crtavcFbGV86bbaecefheavcje6hoavcr4hvaoTmbka3hAxvkcPhvasaEcdtcPV86bba3hAkavTmiavaH9omicdhocehEaQhYxlkavcufhvaEclfgEc;ab9hmbkkdnaLceaYaOSceta8AaOSEcx2gvc;a1jjbfydbcdtfydbgKTaLavc;e1jjbfydbcdtfydbg8AceSGaLavc;i1jjbfydbcdtfydbg3cdSGaOcb9hGazGg5ce9hmbaw9cu83ibaD9cu83ibaq9cu83ibak9cu83ibax9cu83ibam9cu83ibal9cu83iwal9cu83ibcbhOkcbhEaXcufgvhodnindnalaocsGcdtfydba8A9hmbaEhYxdkcuhYaocufhoaEcefgEcz9hmbkkcbhodnindnalavcsGcdtfydba39hmbaohExdkcuhEavcufhvaocefgocz9hmbkkaOaKaOSg8EfhLdndnaYcm0mbaYcefhYxekcbcsa8AaLSgvEhYaLavfhLkdndnaEcm0mbaEcefhExekcbcsa3aLSgvEhEaLavfhLkc9:cua8EEh8FcbhvaEaYcltVgacFeGhodndndninavc:W1jjbfRbbaoSmeavcefgvcz9hmbxdkka5aKaO9havcm0VVmbasavc;WeV86bbxekasa8F86bbaeaa86bbaecefhekdna8EmbaKaA9Rgvcetavc8F917hvinaeavcFb0gocrtavcFbGV86bbavcr4hvaecefheaombkaKhAkdnaYcs9hmba8AaA9Rgvcetavc8F917hvinaeavcFb0gocrtavcFbGV86bbavcr4hvaecefheaombka8AhAkdnaEcs9hmba3aA9Rgvcetavc8F917hvinaeavcFb0gocrtavcFbGV86bbavcr4hvaecefheaombka3hAkalaXcdtfaKBdbaXcefcsGhvdndnaYPzbeeeeeeeeeeeeeebekalavcdtfa8ABdbaXcdfcsGhvkdndnaEPzbeeeeeeeeeeeeeebekalavcdtfa3BdbavcefcsGhvkcihoalc;abfaQcitfgEaKBdlaEa8ABdbaQcefcsGhYcdhEavhXaLhOxekcdhoalaXcdtfa3BdbcehEaXcefcsGhXaQhYkalc;abfaYcitfgva8ABdlava3Bdbalc;abfaQaEfcsGcitfgva3BdlavaKBdbascefhsaQaofcsGhQaCcifgCai6mbkkdnaeaP9nmbcbhvxekcbhvinaeavfavc:W1jjbfRbb86bbavcefgvcz9hmbkaeab9Ravfhvkalc;aef8KjjjjbavkZeeucbhddninadcefgdc8F0meceadtae6mbkkadcrfcFeGcr9Uci2cdfabci9U2cHfkmbcbabBd;m:kjjbk:Adewu8Jjjjjbcz9Rhlcbhvdnaicvfae0mbcbhvabcbRb;m:kjjbc;qeV86bbal9cb83iwabcefhoabaefc98fhrdnaiTmbcbhwcbhDindnaoar6mbcbskadaDcdtfydbgqalcwfawaqav9Rgvavc8F91gv7av9Rc507gwcdtfgkydb9Rgvc8E91c9:Gavcdt7awVhvinaoavcFb0gecrtavcFbGV86bbavcr4hvaocefhoaembkakaqBdbaqhvaDcefgDai9hmbkkdnaoar9nmbcbskaocbBbbaoab9RclfhvkavkBeeucbhddninadcefgdc8F0meceadtae6mbkkadcwfcFeGcr9Uab2cvfk:bvli99dui99ludnaeTmbcuadcetcuftcu7:Zhvdndncuaicuftcu7:ZgoJbbbZMgr:lJbbb9p9DTmbar:Ohwxekcjjjj94hwkcbhicbhDinalclfIdbgrJbbbbJbbjZalIdbgq:lar:lMalcwfIdbgk:lMgr:varJbbbb9BEgrNhxaqarNhrdndnakJbbbb9GTmbaxhqxekJbbjZar:l:tgqaq:maxJbbbb9GEhqJbbjZax:l:tgxax:marJbbbb9GEhrkdndnalcxfIdbgxJbbj:;axJbbj:;9GEgkJbbjZakJbbjZ9FEavNJbbbZJbbb:;axJbbbb9GEMgx:lJbbb9p9DTmbax:Ohmxekcjjjj94hmkdndnaqJbbj:;aqJbbj:;9GEgxJbbjZaxJbbjZ9FEaoNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:OhPxekcjjjj94hPkdndnarJbbj:;arJbbj:;9GEgqJbbjZaqJbbjZ9FEaoNJbbbZJbbb:;arJbbbb9GEMgr:lJbbb9p9DTmbar:Ohsxekcjjjj94hskdndnadcl9hmbabaifgzas86bbazcifam86bbazcdfaw86bbazcefaP86bbxekabaDfgzas87ebazcofam87ebazclfaw87ebazcdfaP87ebkalczfhlaiclfhiaDcwfhDaecufgembkkk;hlld99eud99eudnaeTmbdndncuaicuftcu7:ZgvJbbbZMgo:lJbbb9p9DTmbao:Ohixekcjjjj94hikaic;8FiGhrinabcofcicdalclfIdb:lalIdb:l9EgialcwfIdb:lalaicdtfIdb:l9EEgialcxfIdb:lalaicdtfIdb:l9EEgiarV87ebdndnJbbj:;JbbjZalaicdtfIdbJbbbb9DEgoalaicd7cdtfIdbJ;Zl:1ZNNgwJbbj:;awJbbj:;9GEgDJbbjZaDJbbjZ9FEavNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohqxekcjjjj94hqkabcdfaq87ebdndnalaicefciGcdtfIdbJ;Zl:1ZNaoNgwJbbj:;awJbbj:;9GEgDJbbjZaDJbbjZ9FEavNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohqxekcjjjj94hqkabaq87ebdndnaoalaicufciGcdtfIdbJ;Zl:1ZNNgoJbbj:;aoJbbj:;9GEgwJbbjZawJbbjZ9FEavNJbbbZJbbb:;aoJbbbb9GEMgo:lJbbb9p9DTmbao:Ohixekcjjjj94hikabclfai87ebabcwfhbalczfhlaecufgembkkk;3viDue99eu8Jjjjjbcjd9Rgo8Kjjjjbadcd4hrdndndndnavcd9hmbadcl6meaohwarhDinawc:CuBdbawclfhwaDcufgDmbkaeTmiadcl6mdarcdthqalhkcbhxinaohwakhDarhminawawydbgPcbaDIdbgs:8cL4cFeGc:cufasJbbbb9BEgzaPaz9kEBdbaDclfhDawclfhwamcufgmmbkakaqfhkaxcefgxaeSmixbkkaeTmdxekaeTmekarcdthkavce9hhqadcl6hdcbhxindndndnaqmbadmdc:CuhDalhwarhminaDcbawIdbgs:8cL4cFeGc:cufasJbbbb9BEgPaDaP9kEhDawclfhwamcufgmmbxdkkc:CuhDdndnavPleddbdkadmdaohwalhmarhPinawcbamIdbgs:8cL4cFeGgzc;:bazc;:b0Ec:cufasJbbbb9BEBdbamclfhmawclfhwaPcufgPmbxdkkadmecbhwarhminaoawfcbalawfIdbgs:8cL4cFeGgPc8AaPc8A0Ec:cufasJbbbb9BEBdbawclfhwamcufgmmbkkadmbcbhwarhPinaDhmdnavceSmbaoawfydbhmkdndnalawfIdbgscjjj;8iamai9RcefgmcLt9R::NJbbbZJbbb:;asJbbbb9GEMgs:lJbbb9p9DTmbas:Ohzxekcjjjj94hzkabawfazcFFFrGamcKtVBdbawclfhwaPcufgPmbkkabakfhbalakfhlaxcefgxae9hmbkkaocjdf8Kjjjjbk;YqdXui998Jjjjjbc:qd9Rgv8Kjjjjbavc:Sefcbc;Kbz:vjjjb8AcbhodnadTmbcbhoaiTmbdndnabaeSmbaehrxekavcuadcdtgwadcFFFFi0Ecbyd;u:kjjbHjjjjbbgrBd:SeavceBd:mdaraeawzNjjjb8Akavc:GefcwfcbBdbav9cb83i:Geavc:Gefaradaiavc:Sefz:ojjjbavyd:GehDadci9Ugqcbyd;u:kjjbHjjjjbbheavc:Sefavyd:mdgkcdtfaeBdbavakcefgwBd:mdaecbaqz:vjjjbhxavc:SefawcdtfcuaicdtaicFFFFi0Ecbyd;u:kjjbHjjjjbbgmBdbavakcdfgPBd:mdalc;ebfhsaDheamhwinawalIdbasaeydbgzcwazcw6EcdtfIdbMUdbaeclfheawclfhwaicufgimbkavc:SefaPcdtfcuaqcdtadcFFFF970Ecbyd;u:kjjbHjjjjbbgPBdbdnadci6mbarheaPhwaqhiinawamaeydbcdtfIdbamaeclfydbcdtfIdbMamaecwfydbcdtfIdbMUdbaecxfheawclfhwaicufgimbkkakcifhoalc;ebfhHavc;qbfhOavheavyd:KehAavyd:OehCcbhzcbhwcbhXcehQinaehLcihkarawci2gKcdtfgeydbhsaeclfydbhdabaXcx2fgicwfaecwfydbgYBdbaiclfadBdbaiasBdbaxawfce86bbaOaYBdwaOadBdlaOasBdbaPawcdtfcbBdbdnazTmbcihkaLhiinaOakcdtfaiydbgeBdbakaeaY9haeas9haead9hGGfhkaiclfhiazcufgzmbkkaXcefhXcbhzinaCaAarazaKfcdtfydbcdtgifydbcdtfgYheaDaifgdydbgshidnasTmbdninaeydbawSmeaeclfheaicufgiTmdxbkkaeaYascdtfc98fydbBdbadadydbcufBdbkazcefgzci9hmbkdndnakTmbcuhwJbbbbh8Acbhdavyd:KehYavyd:OehKindndnaDaOadcdtfydbcdtgzfydbgembadcefhdxekadcs0hiamazfgsIdbhEasalcbadcefgdaiEcdtfIdbaHaecwaecw6EcdtfIdbMg3Udba3aE:th3aecdthiaKaYazfydbcdtfheinaPaeydbgzcdtfgsa3asIdbMgEUdbaEa8Aa8AaE9DgsEh8AazawasEhwaeclfheaic98fgimbkkadak9hmbkawcu9hmekaQaq9pmdindnaxaQfRbbmbaQhwxdkaqaQcefgQ9hmbxikkakczakcz6EhzaOheaLhOawcu9hmbkkaocdtavc:Seffc98fhedninaoTmeaeydbcbyd;q:kjjbH:bjjjbbaec98fheaocufhoxbkkavc:qdf8Kjjjjbk;IlevucuaicdtgvaicFFFFi0Egocbyd;u:kjjbHjjjjbbhralalyd9GgwcdtfarBdbalawcefBd9GabarBdbaocbyd;u:kjjbHjjjjbbhralalyd9GgocdtfarBdbalaocefBd9GabarBdlcuadcdtadcFFFFi0Ecbyd;u:kjjbHjjjjbbhralalyd9GgocdtfarBdbalaocefBd9GabarBdwabydbcbavz:vjjjb8Aadci9UhDdnadTmbabydbhoaehladhrinaoalydbcdtfgvavydbcefBdbalclfhlarcufgrmbkkdnaiTmbabydbhlabydlhrcbhvaihoinaravBdbarclfhralydbavfhvalclfhlaocufgombkkdnadci6mbabydlhrabydwhvcbhlinaecwfydbhoaeclfydbhdaraeydbcdtfgwawydbgwcefBdbavawcdtfalBdbaradcdtfgdadydbgdcefBdbavadcdtfalBdbaraocdtfgoaoydbgocefBdbavaocdtfalBdbaecxfheaDalcefgl9hmbkkdnaiTmbabydlheabydbhlinaeaeydbalydb9RBdbalclfhlaeclfheaicufgimbkkkQbabaeadaic;K1jjbz:njjjbkQbabaeadaic;m:jjjbz:njjjbk9DeeuabcFeaicdtz:vjjjbhlcbhbdnadTmbindnalaeydbcdtfgiydbcu9hmbaiabBdbabcefhbkaeclfheadcufgdmbkkabk;:kivuo99lu8Jjjjjbcj;Hb9Rgl8Kjjjjbcbhvalc:m;Gbfcbc;Kbz:vjjjb8AalcuadcdtadcFFFFi0Egocbyd;u:kjjbHjjjjbbgrBd:m9GalceBd;S9Galcwfcbyd:8:kjjbBdbalcb8Pd:0:kjjb83ibalc;W;Gbfcwfcbyd;i:kjjbBdbalcb8Pd;a:kjjb83i;W9Gaicd4hwdndnadmbJFFuFhDJFFuuhqJFFuuhkJFFuFhxJFFuuhmJFFuFhPxekawcdthsaehzincbhiinalaifgHazaifIdbgDaHIdbgxaxaD9EEUdbalc;W;GbfaifgHaDaHIdbgxaxaD9DEUdbaiclfgicx9hmbkazasfhzavcefgvad9hmbkalIdwhqalId;49GhDalIdlhkalId;09GhxalIdbhmalId;W9GhPkdndnadTmbJbbbbJbbjZJbbbbaPam:tgPaPJbbbb9DEgPaxak:tgxaxaP9DEgxaDaq:tgDaDax9DEgD:vaDJbbbb9BEhDawcdthsarhHadhzindndnaDaeIdbam:tNJb;au9eNJbbbZMgx:lJbbb9p9DTmbax:Ohixekcjjjj94hikaicztaicwtcj;GiGVaicsGVc:p;G:dKGcH2c;d;H:WKGcv2c;j:KM;jbGhvdndnaDaeclfIdbak:tNJb;au9eNJbbbZMgx:lJbbb9p9DTmbax:Ohixekcjjjj94hikaicztaicwtcj;GiGVaicsGVc:p;G:dKGcH2c;d;H:WKGcq2cM;j:KMeGavVhvdndnaDaecwfIdbaq:tNJb;au9eNJbbbZMgx:lJbbb9p9DTmbax:Ohixekcjjjj94hikaHavaicztaicwtcj;GiGVaicsGVc:p;G:dKGcH2c;d;H:WKGcC2c:KM;j:KdGVBdbaeasfheaHclfhHazcufgzmbkalcbcj;Gbz:vjjjbhiarhHadheinaiaHydbgzcFrGcx2fgvavydbcefBdbaiazcq4cFrGcx2fgvavydlcefBdlaiazcC4cFrGcx2fgzazydwcefBdwaHclfhHaecufgembxdkkalcbcj;Gbz:vjjjb8AkcbhHcbhzcbhecbhvinalaHfgiydbhsaiazBdbaicwfgwydbhOawavBdbaiclfgiydbhwaiaeBdbasazfhzaOavfhvawaefheaHcxfgHcj;Gb9hmbkcbhHalaocbyd;u:kjjbHjjjjbbgiBd:q9GdnadTmbabhzinazaHBdbazclfhzadaHcefgH9hmbkabhHadhzinalaraHydbgecdtfydbcFrGcx2fgvavydbgvcefBdbaiavcdtfaeBdbaHclfhHazcufgzmbkaihHadhzinalaraHydbgecdtfydbcq4cFrGcx2fgvavydlgvcefBdlabavcdtfaeBdbaHclfhHazcufgzmbkabhHadhzinalaraHydbgecdtfydbcC4cFrGcx2fgvavydwgvcefBdwaiavcdtfaeBdbaHclfhHazcufgzmbkcbhHinabaiydbcdtfaHBdbaiclfhiadaHcefgH9hmbkkclhidninaic98Smealc:m;Gbfaifydbcbyd;q:kjjbH:bjjjbbaic98fhixbkkalcj;Hbf8Kjjjjbk9teiucbcbyd;y:kjjbgeabcifc98GfgbBd;y:kjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;teeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiaeydlBdlaiaeydwBdwaiaeydxBdxaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk:3eedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdxaialBdwaialBdlaialBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabk9teiucbcbyd;y:kjjbgeabcrfc94GfgbBd;y:kjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik9:eiuZbhedndncbyd;y:kjjbgdaecztgi9nmbcuheadai9RcFFifcz4nbcuSmekadhekcbabae9Rcifc98Gcbyd;y:kjjbfgdBd;y:kjjbdnadZbcztge9nmbadae9RcFFifcz4nb8Akkk;Qddbcjwk;mdbbbbdbbblbbbwbbbbbbbebbbdbbblbbbwbbbbbbbbbbbbbbbb4:h9w9N94:P:gW:j9O:ye9Pbbbbbbebbbdbbbebbbdbbbbbbbdbbbbbbbebbbbbbb:l29hZ;69:9kZ;N;76Z;rg97Z;z;o9xZ8J;B85Z;:;u9yZ;b;k9HZ:2;Z9DZ9e:l9mZ59A8KZ:r;T3Z:A:zYZ79OHZ;j4::8::Y:D9V8:bbbb9s:49:Z8R:hBZ9M9M;M8:L;z;o8:;8:PG89q;x:J878R:hQ8::M:B;e87bbbbbbjZbbjZbbjZ:E;V;N8::Y:DsZ9i;H;68:xd;R8:;h0838:;W:NoZbbbb:WV9O8:uf888:9i;H;68:9c9G;L89;n;m9m89;D8Ko8:bbbbf:8tZ9m836ZS:2AZL;zPZZ818EZ9e:lxZ;U98F8:819E;68:FFuuFFuuFFuuFFuFFFuFFFuFbc;mqkzebbbebbbdbbb9G:vbb"),{}).then(function(A){(r=A.instance).exports.__wasm_call_ctors(),r.exports.meshopt_encodeVertexVersion(0),r.exports.meshopt_encodeIndexVersion(1)})})();var In=function(){var r=new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,3,2,0,0,5,3,1,0,1,12,1,0,10,22,2,12,0,65,0,65,0,65,0,252,10,0,0,11,7,0,65,0,253,15,26,11]),e=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if(typeof WebAssembly!="object")return{supported:!1};var t,a=WebAssembly.validate(r)?i("b9H79TebbbeKl9Gbb9Gvuuuuueu9Giuuub9Geueuikqbbebeedddilve9Weeeviebeoweuec:q:6dkr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbdY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVblE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtboK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbrL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbwl79IV9RbDq;X9Mqlbzik9:evu8Jjjjjbcz9Rhbcbheincbhdcbhiinabcwfadfaicjuaead4ceGglE86bbaialfhiadcefgdcw9hmbkaec:q:yjjbfai86bbaecitc:q1jjbfab8Piw83ibaecefgecjd9hmbkk:183lYud97dur978Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnalTmbcuhoaiRbbgrc;WeGc:Ge9hmbarcsGgwce0mbc9:hoalcufadcd4cbawEgDadfgrcKcaawEgqaraq0Egk6mbaicefhxavaialfgmar9Rgoad;8qbbcj;abad9Uc;WFbGcjdadca0EhPdndndnadTmbaoadfhscbhzinaeaz9nmdamax9RaD6miabazad2fhHaxaDfhOaPaeaz9RazaPfae6EgAcsfgocl4cifcd4hCavcj;cbfaoc9WGgXcetfhQavcj;cbfaXci2fhLavcj;cbfaXfhKcbhYaoc;ab6h8AincbhodnawTmbaxaYcd4fRbbhokaocFeGhEcbh3avcj;cbfh5indndndndnaEa3cet4ciGgoc9:fPdebdkamaO9RaX6mwavcj;cbfa3aX2faOaX;8qbbaOaAfhOxdkavcj;cbfa3aX2fcbaX;8kbxekamaO9RaC6moaoclVcbawEhraOaCfhocbhidna8Ambamao9Rc;Gb6mbcbhlina5alfhidndndndndndnaOalco4fRbbgqciGarfPDbedibledibkaipxbbbbbbbbbbbbbbbbpklbxlkaiaopbblaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLg8Ecdp:mea8EpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9og8Fpxiiiiiiiiiiiiiiiip8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaaaoclffahc:q:yjjbfRbbfhoxikaiaopbbwaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9og8Fpxssssssssssssssssp8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaaaocwffahc:q:yjjbfRbbfhoxdkaiaopbbbpklbaoczfhoxekaiaopbbdaoRbbgacitc:q1jjbfpbibaac:q:yjjbfRbbgapsaoRbeghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPpklbaaaocdffahc:q:yjjbfRbbfhokdndndndndndnaqcd4ciGarfPDbedibledibkaiczfpxbbbbbbbbbbbbbbbbpklbxlkaiczfaopbblaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLg8Ecdp:mea8EpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9og8Fpxiiiiiiiiiiiiiiiip8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaaaoclffahc:q:yjjbfRbbfhoxikaiczfaopbbwaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9og8Fpxssssssssssssssssp8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaaaocwffahc:q:yjjbfRbbfhoxdkaiczfaopbbbpklbaoczfhoxekaiczfaopbbdaoRbbgacitc:q1jjbfpbibaac:q:yjjbfRbbgapsaoRbeghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPpklbaaaocdffahc:q:yjjbfRbbfhokdndndndndndnaqcl4ciGarfPDbedibledibkaicafpxbbbbbbbbbbbbbbbbpklbxlkaicafaopbblaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLg8Ecdp:mea8EpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9og8Fpxiiiiiiiiiiiiiiiip8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaaaoclffahc:q:yjjbfRbbfhoxikaicafaopbbwaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9og8Fpxssssssssssssssssp8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaaaocwffahc:q:yjjbfRbbfhoxdkaicafaopbbbpklbaoczfhoxekaicafaopbbdaoRbbgacitc:q1jjbfpbibaac:q:yjjbfRbbgapsaoRbeghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPpklbaaaocdffahc:q:yjjbfRbbfhokdndndndndndnaqco4arfPDbedibledibkaic8Wfpxbbbbbbbbbbbbbbbbpklbxlkaic8Wfaopbblaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLg8Ecdp:mea8EpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9og8Fpxiiiiiiiiiiiiiiiip8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngicitc:q1jjbfpbibaic:q:yjjbfRbbgipsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Ngqcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaiaoclffaqc:q:yjjbfRbbfhoxikaic8Wfaopbbwaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9og8Fpxssssssssssssssssp8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngicitc:q1jjbfpbibaic:q:yjjbfRbbgipsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Ngqcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaiaocwffaqc:q:yjjbfRbbfhoxdkaic8Wfaopbbbpklbaoczfhoxekaic8WfaopbbdaoRbbgicitc:q1jjbfpbibaic:q:yjjbfRbbgipsaoRbegqcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPpklbaiaocdffaqc:q:yjjbfRbbfhokalc;abfhialcjefaX0meaihlamao9Rc;Fb0mbkkdnaiaX9pmbaici4hlinamao9RcK6mwa5aifhqdndndndndndnaOaico4fRbbalcoG4ciGarfPDbedibledibkaqpxbbbbbbbbbbbbbbbbpkbbxlkaqaopbblaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLg8Ecdp:mea8EpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9og8Fpxiiiiiiiiiiiiiiiip8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spkbbaaaoclffahc:q:yjjbfRbbfhoxikaqaopbbwaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9og8Fpxssssssssssssssssp8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spkbbaaaocwffahc:q:yjjbfRbbfhoxdkaqaopbbbpkbbaoczfhoxekaqaopbbdaoRbbgacitc:q1jjbfpbibaac:q:yjjbfRbbgapsaoRbeghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPpkbbaaaocdffahc:q:yjjbfRbbfhokalcdfhlaiczfgiaX6mbkkaohOaoTmoka5aXfh5a3cefg3cl9hmbkdndndndnawTmbasaYcd4fRbbglciGPlbedwbkaXTmdavcjdfaYfhlavaYfpbdbhgcbhoinalavcj;cbfaofpblbg8JaKaofpblbg8KpmbzeHdOiAlCvXoQrLg8LaQaofpblbg8MaLaofpblbg8NpmbzeHdOiAlCvXoQrLgypmbezHdiOAlvCXorQLg8Ecep9Ta8Epxeeeeeeeeeeeeeeeeg8Fp9op9Hp9rg8Eagp9Uggp9Abbbaladfglaga8Ea8Epmlvorlvorlvorlvorp9Uggp9Abbbaladfglaga8Ea8EpmwDqkwDqkwDqkwDqkp9Uggp9Abbbaladfglaga8Ea8EpmxmPsxmPsxmPsxmPsp9Uggp9Abbbaladfglaga8LaypmwDKYqk8AExm35Ps8E8Fg8Ecep9Ta8Ea8Fp9op9Hp9rg8Ep9Uggp9Abbbaladfglaga8Ea8Epmlvorlvorlvorlvorp9Uggp9Abbbaladfglaga8Ea8EpmwDqkwDqkwDqkwDqkp9Uggp9Abbbaladfglaga8Ea8EpmxmPsxmPsxmPsxmPsp9Uggp9Abbbaladfglaga8Ja8KpmwKDYq8AkEx3m5P8Es8Fg8Ja8Ma8NpmwKDYq8AkEx3m5P8Es8Fg8KpmbezHdiOAlvCXorQLg8Ecep9Ta8Ea8Fp9op9Hp9rg8Ep9Uggp9Abbbaladfglaga8Ea8Epmlvorlvorlvorlvorp9Uggp9Abbbaladfglaga8Ea8EpmwDqkwDqkwDqkwDqkp9Uggp9Abbbaladfglaga8Ea8EpmxmPsxmPsxmPsxmPsp9Uggp9Abbbaladfglaga8Ja8KpmwDKYqk8AExm35Ps8E8Fg8Ecep9Ta8Ea8Fp9op9Hp9rg8Ep9Ug8Fp9Abbbaladfgla8Fa8Ea8Epmlvorlvorlvorlvorp9Ug8Fp9Abbbaladfgla8Fa8Ea8EpmwDqkwDqkwDqkwDqkp9Ug8Fp9Abbbaladfgla8Fa8Ea8EpmxmPsxmPsxmPsxmPsp9Uggp9AbbbaladfhlaoczfgoaX6mbxikkaXTmeavcjdfaYfhlavaYfpbdbhgcbhoinalavcj;cbfaofpblbg8JaKaofpblbg8KpmbzeHdOiAlCvXoQrLg8LaQaofpblbg8MaLaofpblbg8NpmbzeHdOiAlCvXoQrLgypmbezHdiOAlvCXorQLg8Ecep:nea8Epxebebebebebebebebg8Fp9op:bep9rg8Eagp:oeggp9Abbbaladfglaga8Ea8Epmlvorlvorlvorlvorp:oeggp9Abbbaladfglaga8Ea8EpmwDqkwDqkwDqkwDqkp:oeggp9Abbbaladfglaga8Ea8EpmxmPsxmPsxmPsxmPsp:oeggp9Abbbaladfglaga8LaypmwDKYqk8AExm35Ps8E8Fg8Ecep:nea8Ea8Fp9op:bep9rg8Ep:oeggp9Abbbaladfglaga8Ea8Epmlvorlvorlvorlvorp:oeggp9Abbbaladfglaga8Ea8EpmwDqkwDqkwDqkwDqkp:oeggp9Abbbaladfglaga8Ea8EpmxmPsxmPsxmPsxmPsp:oeggp9Abbbaladfglaga8Ja8KpmwKDYq8AkEx3m5P8Es8Fg8Ja8Ma8NpmwKDYq8AkEx3m5P8Es8Fg8KpmbezHdiOAlvCXorQLg8Ecep:nea8Ea8Fp9op:bep9rg8Ep:oeggp9Abbbaladfglaga8Ea8Epmlvorlvorlvorlvorp:oeggp9Abbbaladfglaga8Ea8EpmwDqkwDqkwDqkwDqkp:oeggp9Abbbaladfglaga8Ea8EpmxmPsxmPsxmPsxmPsp:oeggp9Abbbaladfglaga8Ja8KpmwDKYqk8AExm35Ps8E8Fg8Ecep:nea8Ea8Fp9op:bep9rg8Ep:oeg8Fp9Abbbaladfgla8Fa8Ea8Epmlvorlvorlvorlvorp:oeg8Fp9Abbbaladfgla8Fa8Ea8EpmwDqkwDqkwDqkwDqkp:oeg8Fp9Abbbaladfgla8Fa8Ea8EpmxmPsxmPsxmPsxmPsp:oeggp9AbbbaladfhlaoczfgoaX6mbxdkkaXTmbcbhocbalcl4gl9Rc8FGhiavcjdfaYfhravaYfpbdbh8Finaravcj;cbfaofpblbggaKaofpblbg8JpmbzeHdOiAlCvXoQrLg8KaQaofpblbg8LaLaofpblbg8MpmbzeHdOiAlCvXoQrLg8NpmbezHdiOAlvCXorQLg8Eaip:Rea8Ealp:Sep9qg8Ea8Fp9rg8Fp9Abbbaradfgra8Fa8Ea8Epmlvorlvorlvorlvorp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmwDqkwDqkwDqkwDqkp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmxmPsxmPsxmPsxmPsp9rg8Fp9Abbbaradfgra8Fa8Ka8NpmwDKYqk8AExm35Ps8E8Fg8Eaip:Rea8Ealp:Sep9qg8Ep9rg8Fp9Abbbaradfgra8Fa8Ea8Epmlvorlvorlvorlvorp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmwDqkwDqkwDqkwDqkp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmxmPsxmPsxmPsxmPsp9rg8Fp9Abbbaradfgra8Faga8JpmwKDYq8AkEx3m5P8Es8Fgga8La8MpmwKDYq8AkEx3m5P8Es8Fg8JpmbezHdiOAlvCXorQLg8Eaip:Rea8Ealp:Sep9qg8Ep9rg8Fp9Abbbaradfgra8Fa8Ea8Epmlvorlvorlvorlvorp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmwDqkwDqkwDqkwDqkp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmxmPsxmPsxmPsxmPsp9rg8Fp9Abbbaradfgra8Faga8JpmwDKYqk8AExm35Ps8E8Fg8Eaip:Rea8Ealp:Sep9qg8Ep9rg8Fp9Abbbaradfgra8Fa8Ea8Epmlvorlvorlvorlvorp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmwDqkwDqkwDqkwDqkp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmxmPsxmPsxmPsxmPsp9rg8Fp9AbbbaradfhraoczfgoaX6mbkkaYclfgYad6mbkaHavcjdfaAad2;8qbbavavcjdfaAcufad2fad;8qbbaAazfhzc9:hoaOhxaOmbxlkkaeTmbaDalfhrcbhocuhlinaralaD9RglfaD6mdaPaeao9RaoaPfae6Eaofgoae6mbkaial9Rhxkcbc99amax9RakSEhoxekc9:hokavcj;kbf8Kjjjjbaokwbz:bjjjbk::seHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgwce0mbavc;abfcFecje;8kbavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhDaicefgqarfhidnaeTmbcmcsawceSEhkcbhxcbhmcbhPcbhwcbhlindnaiaD9nmbc9:hoxikdndnaqRbbgoc;Ve0mbavc;abfalaocu7gscl4fcsGcitfgzydlhrazydbhzdnaocsGgHak9pmbavawasfcsGcdtfydbaxaHEhoaHThsdndnadcd9hmbabaPcetfgHaz87ebaHclfao87ebaHcdfar87ebxekabaPcdtfgHazBdbaHcwfaoBdbaHclfarBdbkaxasfhxcdhHavawcdtfaoBdbawasfhwcehsalhOxdkdndnaHcsSmbaHc987aHamffcefhoxekaicefhoai8SbbgHcFeGhsdndnaHcu9mmbaohixekaicvfhiascFbGhscrhHdninao8SbbgOcFbGaHtasVhsaOcu9kmeaocefhoaHcrfgHc8J9hmbxdkkaocefhikasce4cbasceG9R7amfhokdndnadcd9hmbabaPcetfgHaz87ebaHclfao87ebaHcdfar87ebxekabaPcdtfgHazBdbaHcwfaoBdbaHclfarBdbkcdhHavawcdtfaoBdbcehsawcefhwalhOaohmxekdnaocpe0mbaxcefgHavawaDaocsGfRbbgocl49RcsGcdtfydbaocz6gzEhravawao9RcsGcdtfydbaHazfgAaocsGgHEhoaHThCdndnadcd9hmbabaPcetfgHax87ebaHclfao87ebaHcdfar87ebxekabaPcdtfgHaxBdbaHcwfaoBdbaHclfarBdbkcdhsavawcdtfaxBdbavawcefgwcsGcdtfarBdbcihHavc;abfalcitfgOaxBdlaOarBdbavawazfgwcsGcdtfaoBdbalcefcsGhOawaCfhwaxhzaAaCfhxxekaxcbaiRbbgOEgzaoc;:eSgHfhraOcsGhCaOcl4hAdndnaOcs0mbarcefhoxekarhoavawaA9RcsGcdtfydbhrkdndnaCmbaocefhxxekaohxavawaO9RcsGcdtfydbhokdndnaHTmbaicefhHxekaicdfhHai8SbegscFeGhzdnascu9kmbaicofhXazcFbGhzcrhidninaH8SbbgscFbGaitazVhzascu9kmeaHcefhHaicrfgic8J9hmbkaXhHxekaHcefhHkazce4cbazceG9R7amfgmhzkdndnaAcsSmbaHhsxekaHcefhsaH8SbbgicFeGhrdnaicu9kmbaHcvfhXarcFbGhrcrhidninas8SbbgHcFbGaitarVhraHcu9kmeascefhsaicrfgic8J9hmbkaXhsxekascefhskarce4cbarceG9R7amfgmhrkdndnaCcsSmbashixekascefhias8SbbgocFeGhHdnaocu9kmbascvfhXaHcFbGhHcrhodninai8SbbgscFbGaotaHVhHascu9kmeaicefhiaocrfgoc8J9hmbkaXhixekaicefhikaHce4cbaHceG9R7amfgmhokdndnadcd9hmbabaPcetfgHaz87ebaHclfao87ebaHcdfar87ebxekabaPcdtfgHazBdbaHcwfaoBdbaHclfarBdbkcdhsavawcdtfazBdbavawcefgwcsGcdtfarBdbcihHavc;abfalcitfgXazBdlaXarBdbavawaOcz6aAcsSVfgwcsGcdtfaoBdbawaCTaCcsSVfhwalcefcsGhOkaqcefhqavc;abfaOcitfgOarBdlaOaoBdbavc;abfalasfcsGcitfgraoBdlarazBdbawcsGhwalaHfcsGhlaPcifgPae6mbkkcbc99aiaDSEhokavc;aef8Kjjjjbaok:clevu8Jjjjjbcz9Rhvdnaecvfal9nmbc9:skdnaiRbbc;:eGc;qeSmbcuskav9cb83iwaicefhoaialfc98fhrdnaeTmbdnadcdSmbcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcdtfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgiBdbalaiBdbawcefgwae9hmbxdkkcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcetfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgi87ebalaiBdbawcefgwae9hmbkkcbc99aoarSEk:SPliuo97eue978Jjjjjbca9Rhiaec98Ghldndnadcl9hmbdnalTmbcbhvabhdinadadpbbbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDpxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpkbbadczfhdavclfgval6mbkkalaeSmeaipxbbbbbbbbbbbbbbbbgqpklbaiabalcdtfgdaeciGglcdtgv;8qbbdnalTmbaiaipblbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDaqp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpklbkadaiav;8qbbskdnalTmbcbhvabhdinadczfgxaxpbbbgopxbbbbbbFFbbbbbbFFgkp9oadpbbbgDaopmbediwDqkzHOAKY8AEgwczp:Reczp:Sep;6egraDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;7eawczp:Sep;6egwp;Gearp;Gep;Kep;Legopxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegrpxb;:FSb;:FSb;:FSb;:FSararp;Meaoaop;Meawaqawamp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFFbbFFbbFFbbFFbbp9oaoawp;Meaqp;Keczp:Rep9qgoarawp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogrpmwDKYqk8AExm35Ps8E8Fp9qpkbbadaDakp9oaoarpmbezHdiOAlvCXorQLp9qpkbbadcafhdavclfgval6mbkkalaeSmbaiczfpxbbbbbbbbbbbbbbbbgopklbaiaopklbaiabalcitfgdaeciGglcitgv;8qbbdnalTmbaiaipblzgopxbbbbbbFFbbbbbbFFgkp9oaipblbgDaopmbediwDqkzHOAKY8AEgwczp:Reczp:Sep;6egraDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;7eawczp:Sep;6egwp;Gearp;Gep;Kep;Legopxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegrpxb;:FSb;:FSb;:FSb;:FSararp;Meaoaop;Meawaqawamp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFFbbFFbbFFbbFFbbp9oaoawp;Meaqp;Keczp:Rep9qgoarawp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogrpmwDKYqk8AExm35Ps8E8Fp9qpklzaiaDakp9oaoarpmbezHdiOAlvCXorQLp9qpklbkadaiav;8qbbkk:oDllue97euv978Jjjjjbc8W9Rhidnaec98GglTmbcbhvabhoinaiaopbbbgraoczfgwpbbbgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklbaopxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaDakp;Mearp;Keamp9oaqakp;Mearp;Keczp:Rep9qgkpmbezHdiOAlvCXorQLgrp5baipblbpEb:T:j83ibaocwfarp5eaipblbpEe:T:j83ibawaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblbpEd:T:j83ibaocKfakp5eaipblbpEi:T:j83ibaocafhoavclfgval6mbkkdnalaeSmbaiczfpxbbbbbbbbbbbbbbbbgkpklbaiakpklbaiabalcitfgoaeciGgvcitgw;8qbbdnavTmbaiaipblbgraipblzgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklaaipxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaDakp;Mearp;Keamp9oaqakp;Mearp;Keczp:Rep9qgkpmbezHdiOAlvCXorQLgrp5baipblapEb:T:j83ibaiarp5eaipblapEe:T:j83iwaiaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblapEd:T:j83izaiakp5eaipblapEi:T:j83iKkaoaiaw;8qbbkk;uddiue978Jjjjjbc;ab9Rhidnadcd4ae2glc98GgvTmbcbheabhdinadadpbbbgocwp:Recwp:Sep;6eaocep:SepxbbjFbbjFbbjFbbjFp9opxbbjZbbjZbbjZbbjZp:Uep;Mepkbbadczfhdaeclfgeav6mbkkdnavalSmbaic8WfpxbbbbbbbbbbbbbbbbgopklbaicafaopklbaiczfaopklbaiaopklbaiabavcdtfgdalciGgecdtgv;8qbbdnaeTmbaiaipblbgocwp:Recwp:Sep;6eaocep:SepxbbjFbbjFbbjFbbjFp9opxbbjZbbjZbbjZbbjZp:Uep;Mepklbkadaiav;8qbbkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaikkkebcjwklz:Dbb"):i("b9H79Tebbbe8Fv9Gbb9Gvuuuuueu9Giuuub9Geueu9Giuuueuikqbeeedddillviebeoweuec:W:Odkr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbeY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVbdE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbiL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtblK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbol79IV9Rbrq:986qdbk;jYi5ud9:du8Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnalTmbcuhoaiRbbgrc;WeGc:Ge9hmbarcsGgwce0mbc9:hoalcufadcd4cbawEgDadfgrcKcaawEgqaraq0Egk6mbaicefhxcj;abad9Uc;WFbGcjdadca0EhmaialfgPar9Rgoadfhsavaoadz1jjjbgzceVhHcbhOdndninaeaO9nmeaPax9RaD6mdamaeaO9RaOamfgoae6EgAcsfglc9WGhCabaOad2fhXaAcethQaxaDfhiaOaeaoaeao6E9RhLalcl4cifcd4hKazcj;cbfaAfhYcbh8AazcjdfhEaHh3incbhodnawTmbaxa8Acd4fRbbhokaocFeGh5cbh8Eazcj;cbfhqinaih8Fdndndndna5a8Ecet4ciGgoc9:fPdebdkaPa8F9RaA6mrazcj;cbfa8EaA2fa8FaAz1jjjb8Aa8FaAfhixdkazcj;cbfa8EaA2fcbaAz:jjjjb8Aa8FhixekaPa8F9RaK6mva8FaKfhidnaCTmbaPai9RcK6mbaocdtc:q1jjbfcj1jjbawEhaczhrcbhlinargoc9Wfghaqfhrdndndndndndnaaa8Fahco4fRbbalcoG4ciGcdtfydbPDbedvivvvlvkar9cb83bbarcwf9cb83bbxlkarcbaiRbdai8Xbb9c:c:qj:bw9:9c:q;c1:I1e:d9c:b:c:e1z9:gg9cjjjjjz:dg8J9qE86bbaqaofgrcGfag9c8F1:NghcKtc8F91aicdfa8J9c8N1:Nfg8KRbbG86bbarcVfcba8KahcjeGcr4fghRbbag9cjjjjjl:dg8J9qE86bbarc7fcbaha8J9c8L1:NfghRbbag9cjjjjjd:dg8J9qE86bbarctfcbaha8J9c8K1:NfghRbbag9cjjjjje:dg8J9qE86bbarc91fcbaha8J9c8J1:NfghRbbag9cjjjj;ab:dg8J9qE86bbarc4fcbaha8J9cg1:NfghRbbag9cjjjja:dg8J9qE86bbarc93fcbaha8J9ch1:NfghRbbag9cjjjjz:dgg9qE86bbarc94fcbahag9ca1:NfghRbbai8Xbe9c:c:qj:bw9:9c:q;c1:I1e:d9c:b:c:e1z9:gg9cjjjjjz:dg8J9qE86bbarc95fag9c8F1:NgicKtc8F91aha8J9c8N1:NfghRbbG86bbarc96fcbahaicjeGcr4fgiRbbag9cjjjjjl:dg8J9qE86bbarc97fcbaia8J9c8L1:NfgiRbbag9cjjjjjd:dg8J9qE86bbarc98fcbaia8J9c8K1:NfgiRbbag9cjjjjje:dg8J9qE86bbarc99fcbaia8J9c8J1:NfgiRbbag9cjjjj;ab:dg8J9qE86bbarc9:fcbaia8J9cg1:NfgiRbbag9cjjjja:dg8J9qE86bbarcufcbaia8J9ch1:NfgiRbbag9cjjjjz:dgg9qE86bbaiag9ca1:NfhixikaraiRblaiRbbghco4g8Ka8KciSg8KE86bbaqaofgrcGfaiclfa8Kfg8KRbbahcl4ciGg8La8LciSg8LE86bbarcVfa8Ka8Lfg8KRbbahcd4ciGg8La8LciSg8LE86bbarc7fa8Ka8Lfg8KRbbahciGghahciSghE86bbarctfa8Kahfg8KRbbaiRbeghco4g8La8LciSg8LE86bbarc91fa8Ka8Lfg8KRbbahcl4ciGg8La8LciSg8LE86bbarc4fa8Ka8Lfg8KRbbahcd4ciGg8La8LciSg8LE86bbarc93fa8Ka8Lfg8KRbbahciGghahciSghE86bbarc94fa8Kahfg8KRbbaiRbdghco4g8La8LciSg8LE86bbarc95fa8Ka8Lfg8KRbbahcl4ciGg8La8LciSg8LE86bbarc96fa8Ka8Lfg8KRbbahcd4ciGg8La8LciSg8LE86bbarc97fa8Ka8Lfg8KRbbahciGghahciSghE86bbarc98fa8KahfghRbbaiRbigico4g8Ka8KciSg8KE86bbarc99faha8KfghRbbaicl4ciGg8Ka8KciSg8KE86bbarc9:faha8KfghRbbaicd4ciGg8Ka8KciSg8KE86bbarcufaha8KfgrRbbaiciGgiaiciSgiE86bbaraifhixdkaraiRbwaiRbbghcl4g8Ka8KcsSg8KE86bbaqaofgrcGfaicwfa8Kfg8KRbbahcsGghahcsSghE86bbarcVfa8KahfghRbbaiRbeg8Kcl4g8La8LcsSg8LE86bbarc7faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarctfaha8KfghRbbaiRbdg8Kcl4g8La8LcsSg8LE86bbarc91faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc4faha8KfghRbbaiRbig8Kcl4g8La8LcsSg8LE86bbarc93faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc94faha8KfghRbbaiRblg8Kcl4g8La8LcsSg8LE86bbarc95faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc96faha8KfghRbbaiRbvg8Kcl4g8La8LcsSg8LE86bbarc97faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc98faha8KfghRbbaiRbog8Kcl4g8La8LcsSg8LE86bbarc99faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc9:faha8KfghRbbaiRbrgicl4g8Ka8KcsSg8KE86bbarcufaha8KfgrRbbaicsGgiaicsSgiE86bbaraifhixekarai8Pbb83bbarcwfaicwf8Pbb83bbaiczfhikdnaoaC9pmbalcdfhlaoczfhraPai9RcL0mekkaoaC6moaimexokaCmva8FTmvkaqaAfhqa8Ecefg8Ecl9hmbkdndndndnawTmbasa8Acd4fRbbgociGPlbedrbkaATmdaza8Afh8Fazcj;cbfhhcbh8EaEhaina8FRbbhraahocbhlinaoahalfRbbgqce4cbaqceG9R7arfgr86bbaoadfhoaAalcefgl9hmbkaacefhaa8Fcefh8FahaAfhha8Ecefg8Ecl9hmbxikkaATmeaza8Afhaazcj;cbfhhcbhoceh8EaYh8FinaEaofhlaa8Vbbhrcbhoinala8FaofRbbcwtahaofRbbgqVc;:FiGce4cbaqceG9R7arfgr87bbaladfhlaLaocefgofmbka8FaQfh8FcdhoaacdfhaahaQfhha8EceGhlcbh8EalmbxdkkaATmbcbaocl49Rh8Eaza8AfRbbhqcwhoa3hlinalRbbaotaqVhqalcefhlaocwfgoca9hmbkcbhhaEh8FaYhainazcj;cbfahfRbbhrcwhoaahlinalRbbaotarVhralaAfhlaocwfgoca9hmbkara8E93aq7hqcbhoa8Fhlinalaqao486bbalcefhlaocwfgoca9hmbka8Fadfh8FaacefhaahcefghaA9hmbkkaEclfhEa3clfh3a8Aclfg8Aad6mbkaXazcjdfaAad2z1jjjb8AazazcjdfaAcufad2fadz1jjjb8AaAaOfhOaihxaimbkc9:hoxdkcbc99aPax9RakSEhoxekc9:hokavcj;kbf8Kjjjjbaok;cseHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgwce0mbavc;abfcFecjez:jjjjb8AavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhDaicefgqarfhidnaeTmbcmcsawceSEhkcbhxcbhmcbhPcbhwcbhlindnaiaD9nmbc9:hoxikdndnaqRbbgoc;Ve0mbavc;abfalaocu7gscl4fcsGcitfgzydlhrazydbhzdnaocsGgHak9pmbavawasfcsGcdtfydbaxaHEhoaHThsdndnadcd9hmbabaPcetfgHaz87ebaHclfao87ebaHcdfar87ebxekabaPcdtfgHazBdbaHcwfaoBdbaHclfarBdbkaxasfhxcdhHavawcdtfaoBdbawasfhwcehsalhOxdkdndnaHcsSmbaHc987aHamffcefhoxekaicefhoai8SbbgHcFeGhsdndnaHcu9mmbaohixekaicvfhiascFbGhscrhHdninao8SbbgOcFbGaHtasVhsaOcu9kmeaocefhoaHcrfgHc8J9hmbxdkkaocefhikasce4cbasceG9R7amfhokdndnadcd9hmbabaPcetfgHaz87ebaHclfao87ebaHcdfar87ebxekabaPcdtfgHazBdbaHcwfaoBdbaHclfarBdbkcdhHavawcdtfaoBdbcehsawcefhwalhOaohmxekdnaocpe0mbaxcefgHavawaDaocsGfRbbgocl49RcsGcdtfydbaocz6gzEhravawao9RcsGcdtfydbaHazfgAaocsGgHEhoaHThCdndnadcd9hmbabaPcetfgHax87ebaHclfao87ebaHcdfar87ebxekabaPcdtfgHaxBdbaHcwfaoBdbaHclfarBdbkcdhsavawcdtfaxBdbavawcefgwcsGcdtfarBdbcihHavc;abfalcitfgOaxBdlaOarBdbavawazfgwcsGcdtfaoBdbalcefcsGhOawaCfhwaxhzaAaCfhxxekaxcbaiRbbgOEgzaoc;:eSgHfhraOcsGhCaOcl4hAdndnaOcs0mbarcefhoxekarhoavawaA9RcsGcdtfydbhrkdndnaCmbaocefhxxekaohxavawaO9RcsGcdtfydbhokdndnaHTmbaicefhHxekaicdfhHai8SbegscFeGhzdnascu9kmbaicofhXazcFbGhzcrhidninaH8SbbgscFbGaitazVhzascu9kmeaHcefhHaicrfgic8J9hmbkaXhHxekaHcefhHkazce4cbazceG9R7amfgmhzkdndnaAcsSmbaHhsxekaHcefhsaH8SbbgicFeGhrdnaicu9kmbaHcvfhXarcFbGhrcrhidninas8SbbgHcFbGaitarVhraHcu9kmeascefhsaicrfgic8J9hmbkaXhsxekascefhskarce4cbarceG9R7amfgmhrkdndnaCcsSmbashixekascefhias8SbbgocFeGhHdnaocu9kmbascvfhXaHcFbGhHcrhodninai8SbbgscFbGaotaHVhHascu9kmeaicefhiaocrfgoc8J9hmbkaXhixekaicefhikaHce4cbaHceG9R7amfgmhokdndnadcd9hmbabaPcetfgHaz87ebaHclfao87ebaHcdfar87ebxekabaPcdtfgHazBdbaHcwfaoBdbaHclfarBdbkcdhsavawcdtfazBdbavawcefgwcsGcdtfarBdbcihHavc;abfalcitfgXazBdlaXarBdbavawaOcz6aAcsSVfgwcsGcdtfaoBdbawaCTaCcsSVfhwalcefcsGhOkaqcefhqavc;abfaOcitfgOarBdlaOaoBdbavc;abfalasfcsGcitfgraoBdlarazBdbawcsGhwalaHfcsGhlaPcifgPae6mbkkcbc99aiaDSEhokavc;aef8Kjjjjbaok:clevu8Jjjjjbcz9Rhvdnaecvfal9nmbc9:skdnaiRbbc;:eGc;qeSmbcuskav9cb83iwaicefhoaialfc98fhrdnaeTmbdnadcdSmbcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcdtfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgiBdbalaiBdbawcefgwae9hmbxdkkcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcetfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgi87ebalaiBdbawcefgwae9hmbkkcbc99aoarSEk:Lvoeue99dud99eud99dndnadcl9hmbaeTmeindndnabcdfgd8Sbb:Yab8Sbbgi:Ygl:l:tabcefgv8Sbbgo:Ygr:l:tgwJbb;:9cawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai86bbdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad86bbdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad86bbabclfhbaecufgembxdkkaeTmbindndnabclfgd8Ueb:Yab8Uebgi:Ygl:l:tabcdfgv8Uebgo:Ygr:l:tgwJb;:FSawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai87ebdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad87ebdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad87ebabcwfhbaecufgembkkk;oiliui99iue99dnaeTmbcbhiabhlindndnJ;Zl81Zalcof8UebgvciV:Y:vgoal8Ueb:YNgrJb;:FSNJbbbZJbbb:;arJbbbb9GEMgw:lJbbb9p9DTmbaw:OhDxekcjjjj94hDkalclf8Uebhqalcdf8UebhkabaiavcefciGfcetfaD87ebdndnaoak:YNgwJb;:FSNJbbbZJbbb:;awJbbbb9GEMgx:lJbbb9p9DTmbax:OhDxekcjjjj94hDkabaiavciGfgkcd7cetfaD87ebdndnaoaq:YNgoJb;:FSNJbbbZJbbb:;aoJbbbb9GEMgx:lJbbb9p9DTmbax:OhDxekcjjjj94hDkabaiavcufciGfcetfaD87ebdndnJbbjZararN:tawawN:taoaoN:tgrJbbbbarJbbbb9GE:rJb;:FSNJbbbZMgr:lJbbb9p9DTmbar:Ohvxekcjjjj94hvkabakcetfav87ebalcwfhlaiclfhiaecufgembkkk9mbdnadcd4ae2gdTmbinababydbgecwtcw91:Yaece91cjjj98Gcjjj;8if::NUdbabclfhbadcufgdmbkkk9teiucbcbyd:K1jjbgeabcifc98GfgbBd:K1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;teeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiaeydlBdlaiaeydwBdwaiaeydxBdxaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk:3eedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdxaialBdwaialBdlaialBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabkk81dbcjwk8Kbbbbdbbblbbbwbbbbbbbebbbdbbblbbbwbbbbc:Kwkl8WNbb"),n=WebAssembly.instantiate(a,{}).then(function(h){(t=h.instance).exports.__wasm_call_ctors()});function i(h){for(var b=new Uint8Array(h.length),g=0;g<h.length;++g){var f=h.charCodeAt(g);b[g]=f>96?f-97:f>64?f-39:f+4}var m=0;for(g=0;g<h.length;++g)b[m++]=b[g]<60?e[b[g]]:64*(b[g]-60)+b[++g];return b.buffer.slice(0,m)}function o(h,b,g,f,m,p,C){var I=h.exports.sbrk,x=f+3&-4,y=I(x*m),F=I(p.length),D=new Uint8Array(h.exports.memory.buffer);D.set(p,F);var Q=b(y,f,m,F,p.length);if(Q==0&&C&&C(y,x,m),g.set(D.subarray(y,y+f*m)),I(y-I(0)),Q!=0)throw new Error("Malformed buffer data: "+Q)}var s={NONE:"",OCTAHEDRAL:"meshopt_decodeFilterOct",QUATERNION:"meshopt_decodeFilterQuat",EXPONENTIAL:"meshopt_decodeFilterExp"},A={ATTRIBUTES:"meshopt_decodeVertexBuffer",TRIANGLES:"meshopt_decodeIndexBuffer",INDICES:"meshopt_decodeIndexSequence"},u=[],c=0;function d(h){var b={object:new Worker(h),pending:0,requests:{}};return b.object.onmessage=function(g){var f=g.data;b.pending-=f.count,b.requests[f.id][f.action](f.value),delete b.requests[f.id]},b}function l(h){var b=h.data;if(!b.id)return self.close();self.ready.then(function(g){try{var f=new Uint8Array(b.count*b.size);o(g,g.exports[b.mode],f,b.count,b.size,b.source,g.exports[b.filter]),self.postMessage({id:b.id,count:b.count,action:"resolve",value:f},[f.buffer])}catch(m){self.postMessage({id:b.id,count:b.count,action:"reject",value:m})}})}return{ready:n,supported:!0,useWorkers:function(h){(function(b){for(var g="self.ready = WebAssembly.instantiate(new Uint8Array(["+new Uint8Array(a)+"]), {}).then(function(result) { result.instance.exports.__wasm_call_ctors(); return result.instance; });self.onmessage = "+l.name+";"+o.toString()+l.toString(),f=new Blob([g],{type:"text/javascript"}),m=URL.createObjectURL(f),p=u.length;p<b;++p)u[p]=d(m);for(p=b;p<u.length;++p)u[p].object.postMessage({});u.length=b,URL.revokeObjectURL(m)})(h)},decodeVertexBuffer:function(h,b,g,f,m){o(t,t.exports.meshopt_decodeVertexBuffer,h,b,g,f,t.exports[s[m]])},decodeIndexBuffer:function(h,b,g,f){o(t,t.exports.meshopt_decodeIndexBuffer,h,b,g,f)},decodeIndexSequence:function(h,b,g,f){o(t,t.exports.meshopt_decodeIndexSequence,h,b,g,f)},decodeGltfBuffer:function(h,b,g,f,m,p){o(t,t.exports[A[m]],h,b,g,f,t.exports[s[p]])},decodeGltfBufferAsync:function(h,b,g,f,m){return u.length>0?function(p,C,I,x,y){for(var F=u[0],D=1;D<u.length;++D)u[D].pending<F.pending&&(F=u[D]);return new Promise(function(Q,M){var S=new Uint8Array(I),O=++c;F.pending+=p,F.requests[O]={resolve:Q,reject:M},F.object.postMessage({id:O,count:p,size:C,source:S,mode:x,filter:y},[S.buffer])})}(h,b,g,A[f],s[m]):n.then(function(){var p=new Uint8Array(h*b);return o(t,t.exports[A[f]],p,h,b,g,t.exports[s[m]]),p})}}}();(function(){var r,e=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if(typeof WebAssembly!="object")return{supported:!1};var t=WebAssembly.instantiate(function(s){for(var A=new Uint8Array(s.length),u=0;u<s.length;++u){var c=s.charCodeAt(u);A[u]=c>96?c-97:c>64?c-39:c+4}var d=0;for(u=0;u<s.length;++u)A[d++]=A[u]<60?e[A[u]]:64*(A[u]-60)+A[++u];return A.buffer.slice(0,d)}("b9H79Tebbbe9Hk9Geueu9Geub9Gbb9Gsuuuuuuuuuuuu99uueu9Gvuuuuub9Gvuuuuue999Gquuuuuuu99uueu9Gwuuuuuu99ueu9Giuuue999Gluuuueu9GiuuueuizsdilvoirwDbqqbeqlve9Weiiviebeoweuec:G:Pdkr:Tewo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bbz9TW79O9V9Wt9F79P9T9W29P9M95bl8E9TW79O9V9Wt9F79P9T9W29P9M959x9Pt9OcttV9P9I91tW7bvQ9TW79O9V9Wt9F79P9T9W29P9M959q9V9P9Ut7boX9TW79O9V9Wt9F79P9T9W29P9M959t9J9H2Wbra9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94SWt9J9O9sW9T9H9Wbwl79IV9RbDDwebcekdmxq:x:yesdbk:Z9VvKue99euY99Ou8Jjjjjbc;W;qb9Rgs8Kjjjjbcbhzascxfcbc;Kbz:ljjjb8AdnabaeSmbabaeadcdtz:kjjjb8AkdnamcdGTmbalcrfci4gHcbyd:m:jjjbHjjjjbbheascxfasyd2gOcdtfaeBdbasaOcefBd2aecbaHz:ljjjbhAcbhlcbhednadTmbcbhlabheadhHinaAaeydbgOci4fgCaCRbbgCceaOcrGgOtV86bbaCcu7aO4ceGalfhlaeclfheaHcufgHmbkcualcdtalcFFFFi0Ehekaecbyd:m:jjjbHjjjjbbhzascxfasyd2gecdtfazBdbasaecefBd2alcd4alfhOcehHinaHgecethHaeaO6mbkcbhXcuaecdtgOaecFFFFi0Ecbyd:m:jjjbHjjjjbbhHascxfasyd2gCcdtfaHBdbasaCcefBd2aHcFeaOz:ljjjbhQdnadTmbaecufhLcbhKindndnaQabaXcdtfgYydbgCc:v;t;h;Ev2aLGgOcdtfgAydbgHcuSmbceheinazaHcdtfydbaCSmdaOaefhHaecefheaQaHaLGgOcdtfgAydbgHcu9hmbkkazaKcdtfaCBdbaAaKBdbaKhHaKcefhKkaYaHBdbaXcefgXad9hmbkkaQcbyd1:jjjbH:bjjjbbasasyd2cufBd2kcualcefgecdtaecFFFFi0Ecbyd:m:jjjbHjjjjbbh8Aascxfasyd2gecdtfa8ABdbasa8ABdlasaecefBd2cuadcitadcFFFFe0Ecbyd:m:jjjbHjjjjbbhEascxfasyd2gecdtfaEBdbasaEBdwasaecefBd2asclfabadalcbz:cjjjbcualcdtg3alcFFFFi0Eg5cbyd:m:jjjbHjjjjbbhLascxfasyd2gecdtfaLBdbasaecefBd2a5cbyd:m:jjjbHjjjjbbh8Eascxfasyd2gecdtfa8EBdbasaecefBd2alcd4alfhOcehHinaHgecethHaeaO6mbkcbhYcuaecdtgOaecFFFFi0Ecbyd:m:jjjbHjjjjbbhHascxfasyd2gCcdtfaHBdbasaCcefBd2aHcFeaOz:ljjjbhQdnalTmbavcd4hCaecufhKinaYhednazTmbazaYcdtfydbhekaiaeaC2cdtfgeydlgHcH4aH7c:F:b:DD2aeydbgHcH4aH7c;D;O:B8J27aeydwgecH4ae7c:3F;N8N27aKGhHaYcdth8FdndndnazTmbaQaHcdtfgAydbgecuSmeaiaza8FfydbaC2cdtfhXcehOinaiazaecdtfydbaC2cdtfaXcxz:ojjjbTmiaHaOfheaOcefhOaQaeaKGgHcdtfgAydbgecu9hmbxdkkaQaHcdtfgAydbgecuSmbaiaYaC2cdtfhXcehOinaiaeaC2cdtfaXcxz:ojjjbTmdaHaOfheaOcefhOaQaeaKGgHcdtfgAydbgecu9hmbkkaAaYBdbaYhekaLa8FfaeBdbaYcefgYal9hmbkcbhea8EhHinaHaeBdbaHclfhHalaecefge9hmbkcbheaLhHa8EhOindnaeaHydbgCSmbaOa8EaCcdtfgCydbBdbaCaeBdbkaHclfhHaOclfhOalaecefge9hmbkkcbhaaQcbyd1:jjjbH:bjjjbbasasyd2cufBd2alcbyd:m:jjjbHjjjjbbhKascxfasyd2gecdtfaKBdbasaecefBd2a5cbyd:m:jjjbHjjjjbbheascxfasyd2gHcdtfaeBdbasaHcefBd2a5cbyd:m:jjjbHjjjjbbhHascxfasyd2gOcdtfaHBdbasaOcefBd2aecFea3z:ljjjbhhaHcFea3z:ljjjbhgdnalTmbaEcwfh8Jindna8AaagOcefgacdtfydbgCa8AaOcdtgefydbgHSmbaCaH9Rh8FaEaHcitfh3agaefh8KahaefhYcbhAindndna3aAcitfydbgQaO9hmbaYaOBdba8KaOBdbxekdna8AaQcdtg8LfgeclfydbgHaeydbgeSmbaEaecitgCfydbaOSmeaHae9Rh8Maecu7aHfhXa8JaCfhHcbheinaXaeSmeaecefheaHydbhCaHcwfhHaCaO9hmbkaea8M6mekaga8LfgeaOaQaeydbcuSEBdbaYaQaOaYydbcuSEBdbkaAcefgAa8F9hmbkkaaal9hmbkaLhHa8EhOaghCahhAcbheindndnaeaHydbgQ9hmbdnaeaOydbgQ9hmbaAydbhQdnaCydbgXcu9hmbaQcu9hmbaKaefcb86bbxikaKaefhYdnaeaXSmbaeaQSmbaYce86bbxikaYcl86bbxdkdnaea8EaQcdtgXfydb9hmbdnaCydbgYcuSmbaeaYSmbaAydbg8FcuSmbaea8FSmbagaXfydbg3cuSmba3aQSmbahaXfydbgXcuSmbaXaQSmbdnaLaYcdtfydbgQaLaXcdtfydb9hmbaQaLa8FcdtfydbgXSmbaXaLa3cdtfydb9hmbaKaefcd86bbxlkaKaefcl86bbxikaKaefcl86bbxdkaKaefcl86bbxekaKaefaKaQfRbb86bbkaHclfhHaOclfhOaCclfhCaAclfhAalaecefge9hmbkdnaqTmbdndnazTmbazheaLhHalhOindnaqaeydbfRbbTmbaKaHydbfcl86bbkaeclfheaHclfhHaOcufgOmbxdkkaLhealhHindnaqRbbTmbaKaeydbfcl86bbkaqcefhqaeclfheaHcufgHmbkkaLhealhOaKhHindnaKaeydbfRbbcl9hmbaHcl86bbkaeclfheaHcefhHaOcufgOmbkkamceGTmbaKhealhHindnaeRbbce9hmbaecl86bbkaecefheaHcufgHmbkkcualcx2alc;v:Q;v:Qe0Ecbyd:m:jjjbHjjjjbbhaascxfasyd2gecdtfaaBdbasaecefBd2aaaialavazz:djjjbh8NdndnaDmbcbhycbh8Jxekcbh8JawhecbhHindnaeIdbJbbbb9ETmbasc;Wbfa8JcdtfaHBdba8Jcefh8JkaeclfheaDaHcefgH9hmbkcua8Jal2gecdtaecFFFFi0Ecbyd:m:jjjbHjjjjbbhyascxfasyd2gecdtfayBdbasaecefBd2alTmba8JTmbarcd4hYdnazTmba8Jcdth8FcbhQayhXinaoazaQcdtfydbaY2cdtfhAasc;WbfheaXhHa8JhOinaHaAaeydbcdtgCfIdbawaCfIdbNUdbaeclfheaHclfhHaOcufgOmbkaXa8FfhXaQcefgQal9hmbxdkka8Jcdth8FcbhQayhXinaoaQaY2cdtfhAasc;WbfheaXhHa8JhOinaHaAaeydbcdtgCfIdbawaCfIdbNUdbaeclfheaHclfhHaOcufgOmbkaXa8FfhXaQcefgQal9hmbkkcualc8S2gHalc;D;O;f8U0EgCcbyd:m:jjjbHjjjjbbheascxfasyd2gOcdtfaeBdbasaOcefBd2aecbaHz:ljjjbhqdndndndna8JTmbaCcbyd:m:jjjbHjjjjbbhvascxfasyd2gecdtfavBdbcehOasaecefBd2avcbaHz:ljjjb8Acua8Jal2gecltgHaecFFFFb0Ecbyd:m:jjjbHjjjjbbhrascxfasyd2gecdtfarBdbasaecefBd2arcbaHz:ljjjb8AadmexikcbhvadTmecbhrkcbhAabhHindnaaaHclfydbgQcx2fgeIdbaaaHydbgXcx2fgOIdbg8P:tgIaaaHcwfydbgYcx2fgCIdlaOIdlg8R:tg8SNaCIdba8P:tgRaeIdla8R:tg8UN:tg8Va8VNa8UaCIdwaOIdwg8W:tg8XNa8SaeIdwa8W:tg8UN:tg8Sa8SNa8UaRNa8XaIN:tgIaINMM:rgRJbbbb9ETmba8VaR:vh8VaIaR:vhIa8SaR:vh8SkaqaLaXcdtfydbc8S2fgea8SaR:rgRa8SNNg8UaeIdbMUdbaeaIaRaINg8YNg8XaeIdlMUdlaea8VaRa8VNg8ZNg80aeIdwMUdwaea8Ya8SNg8YaeIdxMUdxaea8Za8SNg81aeIdzMUdzaea8ZaINg8ZaeIdCMUdCaea8SaRa8Va8WNa8Sa8PNa8RaINMM:mg8RNg8PNg8SaeIdKMUdKaeaIa8PNgIaeId3MUd3aea8Va8PNg8VaeIdaMUdaaea8Pa8RNg8PaeId8KMUd8KaeaRaeIdyMUdyaqaLaQcdtfydbc8S2fgea8UaeIdbMUdbaea8XaeIdlMUdlaea80aeIdwMUdwaea8YaeIdxMUdxaea81aeIdzMUdzaea8ZaeIdCMUdCaea8SaeIdKMUdKaeaIaeId3MUd3aea8VaeIdaMUdaaea8PaeId8KMUd8KaeaRaeIdyMUdyaqaLaYcdtfydbc8S2fgea8UaeIdbMUdbaea8XaeIdlMUdlaea80aeIdwMUdwaea8YaeIdxMUdxaea81aeIdzMUdzaea8ZaeIdCMUdCaea8SaeIdKMUdKaeaIaeId3MUd3aea8VaeIdaMUdaaea8PaeId8KMUd8KaeaRaeIdyMUdyaHcxfhHaAcifgAad6mbkcbh8FabhXinaba8FcdtfhQcbhHinaKaQaHc;a1jjbfydbcdtfydbgOfRbbhedndnaKaXaHfydbgCfRbbgAc99fcFeGcpe0mbaec99fcFeGc;:e6mekdnaAcufcFeGce0mbahaCcdtfydbaO9hmekdnaecufcFeGce0mbagaOcdtfydbaC9hmekdnaAcv2aefc:G1jjbfRbbTmbaLaOcdtfydbaLaCcdtfydb0mekJbbacJbbacJbbjZaecFeGceSEaAceSEh8ZdnaaaQaHc;e1jjbfydbcdtfydbcx2fgeIdwaaaCcx2fgAIdwg8R:tg8VaaaOcx2fgYIdwa8R:tg8Sa8SNaYIdbaAIdbg8W:tgIaINaYIdlaAIdlg8U:tgRaRNMMg8PNa8Va8SNaeIdba8W:tg80aINaRaeIdla8U:tg8YNMMg8Xa8SN:tg8Va8VNa80a8PNa8XaIN:tg8Sa8SNa8Ya8PNa8XaRN:tgIaINMM:rgRJbbbb9ETmba8VaR:vh8VaIaR:vhIa8SaR:vh8SkaqaLaCcdtfydbc8S2fgea8Sa8Za8P:rNgRa8SNNg8XaeIdbMUdbaeaIaRaINg8ZNg80aeIdlMUdlaea8VaRa8VNg8PNg8YaeIdwMUdwaea8Za8SNg8ZaeIdxMUdxaea8Pa8SNg81aeIdzMUdzaea8PaINgBaeIdCMUdCaea8SaRa8Va8RNa8Sa8WNa8UaINMM:mg8RNg8PNg8SaeIdKMUdKaeaIa8PNgIaeId3MUd3aea8Va8PNg8VaeIdaMUdaaea8Pa8RNg8PaeId8KMUd8KaeaRaeIdyMUdyaqaLaOcdtfydbc8S2fgea8XaeIdbMUdbaea80aeIdlMUdlaea8YaeIdwMUdwaea8ZaeIdxMUdxaea81aeIdzMUdzaeaBaeIdCMUdCaea8SaeIdKMUdKaeaIaeId3MUd3aea8VaeIdaMUdaaea8PaeId8KMUd8KaeaRaeIdyMUdykaHclfgHcx9hmbkaXcxfhXa8Fcifg8Fad6mbkdna8JTmbcbhXinJbbbbh8WaaabaXcdtfgeclfydbgYcx2fgHIdwaaaeydbg8Fcx2fgOIdwg8Y:tgIaINaHIdbaOIdbg81:tg8Va8VNaHIdlaOIdlgB:tgRaRNMMg8Zaaaecwfydbg3cx2fgeIdwa8Y:tg8PNaIaIa8PNa8VaeIdba81:tg8RNaRaeIdlaB:tg8UNMMg8SN:tJbbbbJbbjZa8Za8Pa8PNa8Ra8RNa8Ua8UNMMg80Na8Sa8SN:tg8X:va8XJbbbb9BEg8XNh83a80aINa8Pa8SN:ta8XNhUa8Za8UNaRa8SN:ta8XNh85a80aRNa8Ua8SN:ta8XNh86a8Za8RNa8Va8SN:ta8XNh87a80a8VNa8Ra8SN:ta8XNh88a8Va8UNa8RaRN:tg8Sa8SNaRa8PNa8UaIN:tg8Sa8SNaIa8RNa8Pa8VN:tg8Sa8SNMM:rJbbbZNh8Saya8Fa8J2gwcdtfhHaya3a8J2g8LcdtfhOayaYa8J2gicdtfhCa8Y:mh89aB:mh8:a81:mhZcbhAa8JhQJbbbbh8UJbbbbh8XJbbbbh8ZJbbbbh80Jbbbbh8YJbbbbh81JbbbbhBJbbbbhnJbbbbhcinasc;WbfaAfgecwfa8SaUaCIdbaHIdbg8P:tgRNa83aOIdba8P:tg8RNMgINUdbaeclfa8Sa86aRNa85a8RNMg8VNUdbaea8Sa88aRNa87a8RNMgRNUdbaecxfa8Sa89aINa8:a8VNa8PaZaRNMMMg8PNUdba8SaIa8VNNa80Mh80a8SaIaRNNa8YMh8Ya8Sa8VaRNNa81Mh81a8Sa8Pa8PNNa8WMh8Wa8SaIa8PNNa8UMh8Ua8Sa8Va8PNNa8XMh8Xa8SaRa8PNNa8ZMh8Za8SaIaINNaBMhBa8Sa8Va8VNNanMhna8SaRaRNNacMhcaHclfhHaCclfhCaOclfhOaAczfhAaQcufgQmbkava8Fc8S2fgeacaeIdbMUdbaeanaeIdlMUdlaeaBaeIdwMUdwaea81aeIdxMUdxaea8YaeIdzMUdzaea80aeIdCMUdCaea8ZaeIdKMUdKaea8XaeId3MUd3aea8UaeIdaMUdaaea8WaeId8KMUd8Kaea8SaeIdyMUdyavaYc8S2fgeacaeIdbMUdbaeanaeIdlMUdlaeaBaeIdwMUdwaea81aeIdxMUdxaea8YaeIdzMUdzaea80aeIdCMUdCaea8ZaeIdKMUdKaea8XaeId3MUd3aea8UaeIdaMUdaaea8WaeId8KMUd8Kaea8SaeIdyMUdyava3c8S2fgeacaeIdbMUdbaeanaeIdlMUdlaeaBaeIdwMUdwaea81aeIdxMUdxaea8YaeIdzMUdzaea80aeIdCMUdCaea8ZaeIdKMUdKaea8XaeId3MUd3aea8UaeIdaMUdaaea8WaeId8KMUd8Kaea8SaeIdyMUdyarawcltfhQcbhHa8JhCinaQaHfgeasc;WbfaHfgOIdbaeIdbMUdbaeclfgAaOclfIdbaAIdbMUdbaecwfgAaOcwfIdbaAIdbMUdbaecxfgeaOcxfIdbaeIdbMUdbaHczfhHaCcufgCmbkaraicltfhQcbhHa8JhCinaQaHfgeasc;WbfaHfgOIdbaeIdbMUdbaeclfgAaOclfIdbaAIdbMUdbaecwfgAaOcwfIdbaAIdbMUdbaecxfgeaOcxfIdbaeIdbMUdbaHczfhHaCcufgCmbkara8LcltfhQcbhHa8JhCinaQaHfgeasc;WbfaHfgOIdbaeIdbMUdbaeclfgAaOclfIdbaAIdbMUdbaecwfgAaOcwfIdbaAIdbMUdbaecxfgeaOcxfIdbaeIdbMUdbaHczfhHaCcufgCmbkaXcifgXad6mbkkcbhOxekcehOcbhrkcbh3dndnamcwGg9cmbJbbbbh8UcbhJcbhocbhCxekcbhea5cbyd:m:jjjbHjjjjbbhCascxfasyd2gHcdtfaCBdbasaHcefBd2dnalTmbaChHinaHaeBdbaHclfhHalaecefge9hmbkkdnaOmbcbh8Finaba8FcdtfhYcbhXinaLaYaXcdtgec;a1jjbfydbcdtfydbcdtfydbhHdnaCaLaYaefydbcdtfydbgOcdtfgAydbgeaOSmbinaAaCaegOcdtfgQydbgeBdbaQhAaOae9hmbkkdnaCaHcdtfgAydbgeaHSmbinaAaCaegHcdtfgQydbgeBdbaQhAaHae9hmbkkdnaOaHSmbaCaOaHaOaH0EcdtfaOaHaOaH6EBdbkaXcefgXci9hmbka8Fcifg8Fad6mbkkcbhJdnalTmbcbhQindnaLaQcdtgefydbaQ9hmbaQhHdnaCaefgXydbgeaQSmbaXhOinaOaCaegHcdtfgAydbgeBdbaAhOaHae9hmbkkaXaHBdbkaQcefgQal9hmbkcbheaLhOaChHcbhJindndnaeaOydbgA9hmbdnaeaHydbgA9hmbaHaJBdbaJcefhJxdkaHaCaAcdtfydbBdbxekaHaCaAcdtfydbBdbkaOclfhOaHclfhHalaecefge9hmbkkcuaJcltgeaJcjjjjiGEcbyd:m:jjjbHjjjjbbhoascxfasyd2gHcdtfaoBdbasaHcefBd2aocbaez:ljjjbhAdnalTmbaChOaahealhQinaecwfIdbh8SaeclfIdbhIaAaOydbcltfgHaeIdbaHIdbMUdbaHclfgXaIaXIdbMUdbaHcwfgXa8SaXIdbMUdbaHcxfgHaHIdbJbbjZMUdbaOclfhOaecxfheaQcufgQmbkkdnaJTmbaAheaJhHinaecxfgOIdbh8SaOcbBdbaeaeIdbJbbbbJbbjZa8S:va8SJbbbb9BEg8SNUdbaeclfgOa8SaOIdbNUdbaecwfgOa8SaOIdbNUdbaeczfheaHcufgHmbkkdnalTmbaChOaahealhQinaAaOydbcltfgHcxfgXaecwfIdbaHcwfIdb:tg8Sa8SNaeIdbaHIdb:tg8Sa8SNaeclfIdbaHclfIdb:tg8Sa8SNMMg8SaXIdbgIaIa8S9DEUdbaOclfhOaecxfheaQcufgQmbkkdnaJmbcbhJJFFuuh8UxekaAcxfheaAhHaJhOinaHaeIdbUdbaeczfheaHclfhHaOcufgOmbkJFFuuh8UaAheaJhHinaeIdbg8Sa8Ua8Ua8S9EEh8UaeclfheaHcufgHmbkkasydlh9ednalTmba9eclfhea9eydbhAaKhHalhQcbhOincbaeydbgXaA9RaHRbbcpeGEaOfhOaHcefhHaeclfheaXhAaQcufgQmbkaOce4h3kcuada39RcifgTcx2aTc;v:Q;v:Qe0Ecbyd:m:jjjbHjjjjbbhDascxfasyd2gecdtfaDBdbasaecefBd2cuaTcdtaTcFFFFi0Ecbyd:m:jjjbHjjjjbbhSascxfasyd2gecdtfaSBdbasaecefBd2a5cbyd:m:jjjbHjjjjbbh8Mascxfasyd2gecdtfa8MBdbasaecefBd2alcbyd:m:jjjbHjjjjbbh9hascxfasyd2gecdtfa9hBdbasaecefBd2axaxNa8NJbbjZamclGEg83a83N:vhcJbbbbhndnadak9nmbdnaTci6mba8Jclth9iaDcwfh6JbbbbhBJbbbbhninasclfabadalaLz:cjjjbabh3cbhEcbh5inaba5cdtfhwcbheindnaLa3aefydbgOcdtg8FfydbgQaLawaec;q1jjbfydbcdtfydbgHcdtg8LfydbgXSmbaKaHfRbbgYcv2aKaOfRbbgAfc;G1jjbfRbbg8AaAcv2aYfgic;G1jjbfRbbg8KVcFeGTmbdnaXaQ9nmbaic:G1jjbfRbbcFeGmekaAcufhQdnaAaY9hmbaQcFeGce0mbaha8FfydbaH9hmekdndnaAclSmbaYcl9hmekdnaQcFeGce0mbaha8FfydbaH9hmdkaYcufcFeGce0mbaga8LfydbaO9hmekaDaEcx2fgAaHaOa8KcFeGgQEBdlaAaOaHaQEBdbaAaQa8AGcb9hBdwaEcefhEkaeclfgecx9hmbkdna5cifg5ad9pmba3cxfh3aEcifaT9nmekkaETmdcbhYinaqaLaDaYcx2fgAydbgQcdtg3fydbc8S2fgeIdwaaaAydlgXcx2fgHIdwg8VNaeIdzaHIdbgRNaeIdaMg8Sa8SMMa8VNaeIdlaHIdlg8PNaeIdCa8VNaeId3Mg8Sa8SMMa8PNaeIdbaRNaeIdxa8PNaeIdKMg8Sa8SMMaRNaeId8KMMM:lh8SJbbbbJbbjZaeIdygI:vaIJbbbb9BEhIdndnaAydwg8FmbJFFuuh8XxekJbbbbJbbjZaqaLaXcdtfydbc8S2fgeIdyg8R:va8RJbbbb9BEaeIdwaaaQcx2fgHIdwg8RNaeIdzaHIdbg8WNaeIdaMg8Xa8XMMa8RNaeIdlaHIdlg8XNaeIdCa8RNaeId3Mg8Ra8RMMa8XNaeIdba8WNaeIdxa8XNaeIdKMg8Ra8RMMa8WNaeId8KMMM:lNh8XkaIa8SNh8Zdna8JTmbavaQc8S2fgOIdwa8VNaOIdzaRNaOIdaMg8Sa8SMMa8VNaOIdla8PNaOIdCa8VNaOId3Mg8Sa8SMMa8PNaOIdbaRNaOIdxa8PNaOIdKMg8Sa8SMMaRNaOId8KMMMh8SayaXa8J2gwcdtfhHaraQa8J2g8LcltfheaOIdyh8Ra8JhOinaHIdbgIaIa8RNaecxfIdba8VaecwfIdbNaRaeIdbNa8PaeclfIdbNMMMgIaIM:tNa8SMh8SaHclfhHaeczfheaOcufgOmbkdndna8FmbJbbbbhIxekavaXc8S2fgOIdwaaaQcx2fgeIdwgRNaOIdzaeIdbg8PNaOIdaMgIaIMMaRNaOIdlaeIdlg8RNaOIdCaRNaOId3MgIaIMMa8RNaOIdba8PNaOIdxa8RNaOIdKMgIaIMMa8PNaOId8KMMMhIaya8LcdtfhHarawcltfheaOIdyh8Wa8JhOinaHIdbg8Va8Va8WNaecxfIdbaRaecwfIdbNa8PaeIdbNa8RaeclfIdbNMMMg8Va8VM:tNaIMhIaHclfhHaeczfheaOcufgOmbkaI:lhIka8Za8S:lMh8Za8XaIMh8XaKaQfRbbcd9hmbdnagahaha3fydbaXSEa8Ea3fydbgwcdtfydbg3cu9hmba8EaXcdtfydbh3kavawc8S2fgOIdwaaa3cx2fgeIdwg8VNaOIdzaeIdbgRNaOIdaMg8Sa8SMMa8VNaOIdlaeIdlg8PNaOIdCa8VNaOId3Mg8Sa8SMMa8PNaOIdbaRNaOIdxa8PNaOIdKMg8Sa8SMMaRNaOId8KMMMh8Saya3a8J2g8LcdtfhHarawa8J2gicltfheaOIdyh8Ra8JhOinaHIdbgIaIa8RNaecxfIdba8VaecwfIdbNaRaeIdbNa8PaeclfIdbNMMMgIaIM:tNa8SMh8SaHclfhHaeczfheaOcufgOmbkdndna8FmbJbbbbhIxekava3c8S2fgOIdwaaawcx2fgeIdwgRNaOIdzaeIdbg8PNaOIdaMgIaIMMaRNaOIdlaeIdlg8RNaOIdCaRNaOId3MgIaIMMa8RNaOIdba8PNaOIdxa8RNaOIdKMgIaIMMa8PNaOId8KMMMhIayaicdtfhHara8LcltfheaOIdyh8Wa8JhOinaHIdbg8Va8Va8WNaecxfIdbaRaecwfIdbNa8PaeIdbNa8RaeclfIdbNMMMg8Va8VM:tNaIMhIaHclfhHaeczfheaOcufgOmbkaI:lhIka8Za8S:lMh8Za8XaIMh8XkaAa8Za8Xa8Za8X9FgeEUdwaAaXaQaea8FTVgeEBdlaAaQaXaeEBdbaYcefgYaE9hmbkasc;Wbfcbcj;qbz:ljjjb8Aa6heaEhHinasc;WbfaeydbcA4cF8FGgOcFAaOcFA6EcdtfgOaOydbcefBdbaecxfheaHcufgHmbkcbhecbhHinasc;WbfaefgOydbhAaOaHBdbaAaHfhHaeclfgecj;qb9hmbkcbhea6hHinasc;WbfaHydbcA4cF8FGgOcFAaOcFA6EcdtfgOaOydbgOcefBdbaSaOcdtfaeBdbaHcxfhHaEaecefge9hmbkadak9RgOci9Uh9kdnalTmbcbhea8MhHinaHaeBdbaHclfhHalaecefge9hmbkkcbh0a9hcbalz:ljjjbh5aOcO9Uh9ma9kce4h9nasydwh9ocbh8Kcbh8AdninaDaSa8Acdtfydbcx2fgiIdwg8Sac9Emea8Ka9k9pmeJFFuuhIdna9naE9pmbaDaSa9ncdtfydbcx2fIdwJbb;aZNhIkdna8SaI9ETmba8San9ETmba8Ka9m0mdkdna5aLaiydlgwcdtg9pfydbgAfg9qRbba5aLaiydbg3cdtg9rfydbgefg9sRbbVmbaKa3fRbbh9tdna9eaecdtfgHclfydbgOaHydbgHSmbaOaH9RhQaaaAcx2fhYaaaecx2fh8Fa9oaHcitfhecbhHceh8Ldnindna8MaeydbcdtfydbgOaASmba8MaeclfydbcdtfydbgXaASmbaOaXSmbaaaXcx2fgXIdbaaaOcx2fgOIdbg8V:tg8Sa8FIdlaOIdlgR:tg8WNa8FIdba8V:tg8XaXIdlaR:tgIN:tg8Pa8SaYIdlaR:tg8ZNaYIdba8V:tg80aIN:tgRNaIa8FIdwaOIdwg8R:tg8YNa8WaXIdwa8R:tg8VN:tg8WaIaYIdwa8R:tg81Na8Za8VN:tgINa8Va8XNa8Ya8SN:tg8Ra8Va80Na81a8SN:tg8SNMMa8Pa8PNa8Wa8WNa8Ra8RNMMaRaRNaIaINa8Sa8SNMMN:rJbbj8:N9FmdkaecwfheaHcefgHaQ6h8LaQaH9hmbkka8LceGTmba9ncefh9nxekdndndndna9tc9:fPdebdka3heina8MaecdtgefawBdba8Eaefydbgea39hmbxikkdnagahaha9rfydbawSEa8Ea9rfydbg3cdtfydbgecu9hmba8Ea9pfydbheka8Ma9rfawBdbaehwka8Ma3cdtfawBdbka9sce86bba9qce86bbaiIdwg8Sanana8S9DEhna0cefh0cecda9tceSEa8Kfh8Kka8Acefg8AaE9hmbkka0TmddnalTmbcbhXcbh8Findna8Ma8FcdtgefydbgOa8FSmbaLaOcdtfydbh3dna8FaLaefydb9hgwmbaqa3c8S2fgeaqa8Fc8S2fgHIdbaeIdbMUdbaeaHIdlaeIdlMUdlaeaHIdwaeIdwMUdwaeaHIdxaeIdxMUdxaeaHIdzaeIdzMUdzaeaHIdCaeIdCMUdCaeaHIdKaeIdKMUdKaeaHId3aeId3MUd3aeaHIdaaeIdaMUdaaeaHId8KaeId8KMUd8KaeaHIdyaeIdyMUdyka8JTmbavaOc8S2fgeava8Fc8S2g8LfgHIdbaeIdbMUdbaeaHIdlaeIdlMUdlaeaHIdwaeIdwMUdwaeaHIdxaeIdxMUdxaeaHIdzaeIdzMUdzaeaHIdCaeIdCMUdCaeaHIdKaeIdKMUdKaeaHId3aeId3MUd3aeaHIdaaeIdaMUdaaeaHId8KaeId8KMUd8KaeaHIdyaeIdyMUdya9iaO2hYarhHa8JhAinaHaYfgeaHaXfgOIdbaeIdbMUdbaeclfgQaOclfIdbaQIdbMUdbaecwfgQaOcwfIdbaQIdbMUdbaecxfgeaOcxfIdbaeIdbMUdbaHczfhHaAcufgAmbkawmbJbbbbJbbjZaqa8LfgeIdyg8S:va8SJbbbb9BEaeIdwaaa3cx2fgHIdwg8SNaeIdzaHIdbgINaeIdaMg8Va8VMMa8SNaeIdlaHIdlg8VNaeIdCa8SNaeId3Mg8Sa8SMMa8VNaeIdbaINaeIdxa8VNaeIdKMg8Sa8SMMaINaeId8KMMM:lNg8SaBaBa8S9DEhBkaXa9ifhXa8Fcefg8Fal9hmbkcbhHahheindnaeydbgOcuSmbdnaHa8MaOcdtgAfydbgO9hmbcuhOahaAfydbgAcuSmba8MaAcdtfydbhOkaeaOBdbkaeclfhealaHcefgH9hmbkcbhHagheindnaeydbgOcuSmbdnaHa8MaOcdtgAfydbgO9hmbcuhOagaAfydbgAcuSmba8MaAcdtfydbhOkaeaOBdbkaeclfhealaHcefgH9hmbkkaBana8JEhBcbhAabhecbhQindna8MaeydbcdtfydbgHa8MaeclfydbcdtfydbgOSmbaHa8MaecwfydbcdtfydbgXSmbaOaXSmbabaAcdtfgYaHBdbaYcwfaXBdbaYclfaOBdbaAcifhAkaecxfheaQcifgQad6mbkdndna9cTmbaAak9nmba8UaB9FTmbcbhdabhecbhHindnaoaCaeydbgOcdtfydbcdtfIdbaB9ETmbabadcdtfgQaOBdbaQclfaeclfydbBdbaQcwfaecwfydbBdbadcifhdkaecxfheaHcifgHaA6mbkJFFuuh8UaJTmeaoheaJhHJFFuuh8SinaeIdbgIa8Sa8SaI9EEg8Va8SaIaB9EgOEh8Sa8Va8UaOEh8UaeclfheaHcufgHmbxdkkaAhdkadak0mbxdkkasclfabadalaLz:cjjjbkdndnadak0mbadhOxekdna9cmbadhOxekdna8Uac9FmbadhOxekina8UJbb;aZNg8Saca8Sac9DEh8VJbbbbh8SdnaJTmbaoheaJhHinaeIdbgIa8SaIa8V9FEa8SaIa8S9EEh8SaeclfheaHcufgHmbkkcbhOabhecbhHindnaoaCaeydbgAcdtfydbcdtfIdba8V9ETmbabaOcdtfgQaABdbaQclfaeclfydbBdbaQcwfaecwfydbBdbaOcifhOkaecxfheaHcifgHad6mbkJFFuuh8UdnaJTmbaoheaJhHJFFuuhIinaeIdbgRaIaIaR9EEg8PaIaRa8V9EgAEhIa8Pa8UaAEh8UaeclfheaHcufgHmbkkdnaOad9hmbadhOxdka8Sanana8S9DEhnaOak9nmeaOhda8Uac9FmbkkdnamcjjjjlGTmbazmbaOTmbcbhLabheinaKaeydbgAfRbbc3thXaecwfgYydbhHdndnahaAcdtg3fydbaeclfg8FydbgCSmbcbhQagaCcdtfydbaA9hmekcjjjj94hQkaeaXaQVaAVBdbaKaCfRbbc3thXdndnahaCcdtfydbaHSmbcbhQagaHcdtfydbaC9hmekcjjjj94hQka8FaXaQVaCVBdbaKaHfRbbc3thQdndnahaHcdtfydbaASmbcbhCaga3fydbaH9hmekcjjjj94hCkaYaQaCVaHVBdbaecxfheaLcifgLaO6mbkkdnazTmbaOTmbaOheinabazabydbcdtfydbBdbabclfhbaecufgembkkdnaPTmbaPa83an:rNUdbkasyd2gecdtascxffc98fhHdninaeTmeaHydbcbyd1:jjjbH:bjjjbbaHc98fhHaecufhexbkkasc;W;qbf8KjjjjbaOk;Yieouabydlhvabydbclfcbaicdtz:ljjjbhoadci9UhrdnadTmbdnalTmbaehwadhDinaoalawydbcdtfydbcdtfgqaqydbcefBdbawclfhwaDcufgDmbxdkkaehwadhDinaoawydbcdtfgqaqydbcefBdbawclfhwaDcufgDmbkkdnaiTmbcbhDaohwinawydbhqawaDBdbawclfhwaqaDfhDaicufgimbkkdnadci6mbinaecwfydbhwaeclfydbhDaeydbhidnalTmbalawcdtfydbhwalaDcdtfydbhDalaicdtfydbhikavaoaicdtfgqydbcitfaDBdbavaqydbcitfawBdlaqaqydbcefBdbavaoaDcdtfgqydbcitfawBdbavaqydbcitfaiBdlaqaqydbcefBdbavaoawcdtfgwydbcitfaiBdbavawydbcitfaDBdlawawydbcefBdbaecxfhearcufgrmbkkabydbcbBdbk;Qodvuv998Jjjjjbca9Rgvczfcwfcbyd11jjbBdbavcb8Pdj1jjb83izavcwfcbydN1jjbBdbavcb8Pd:m1jjb83ibdnadTmbaicd4hodnabmbdnalTmbcbhrinaealarcdtfydbao2cdtfhwcbhiinavczfaifgDawaifIdbgqaDIdbgkakaq9EEUdbavaifgDaqaDIdbgkakaq9DEUdbaiclfgicx9hmbkarcefgrad9hmbxikkaocdthrcbhwincbhiinavczfaifgDaeaifIdbgqaDIdbgkakaq9EEUdbavaifgDaqaDIdbgkakaq9DEUdbaiclfgicx9hmbkaearfheawcefgwad9hmbxdkkdnalTmbcbhrinabarcx2fgiaealarcdtfydbao2cdtfgwIdbUdbaiawIdlUdlaiawIdwUdwcbhiinavczfaifgDawaifIdbgqaDIdbgkakaq9EEUdbavaifgDaqaDIdbgkakaq9DEUdbaiclfgicx9hmbkarcefgrad9hmbxdkkaocdthlcbhraehwinabarcx2fgiaearao2cdtfgDIdbUdbaiaDIdlUdlaiaDIdwUdwcbhiinavczfaifgDawaifIdbgqaDIdbgkakaq9EEUdbavaifgDaqaDIdbgkakaq9DEUdbaiclfgicx9hmbkawalfhwarcefgrad9hmbkkJbbbbavIdbavIdzgk:tgqaqJbbbb9DEgqavIdlavIdCgx:tgmamaq9DEgqavIdwavIdKgm:tgPaPaq9DEhPdnabTmbadTmbJbbbbJbbjZaP:vaPJbbbb9BEhqinabaqabIdbak:tNUdbabclfgvaqavIdbax:tNUdbabcwfgvaqavIdbam:tNUdbabcxfhbadcufgdmbkkaPk8MbabaeadaialavcbcbcbcbcbaoarawaDz:bjjjbk8MbabaeadaialavaoarawaDaqakaxamaPz:bjjjbk:DCoDud99rue99iul998Jjjjjbc;Wb9Rgw8KjjjjbdndnarmbcbhDxekawcxfcbc;Kbz:ljjjb8Aawcuadcx2adc;v:Q;v:Qe0Ecbyd:m:jjjbHjjjjbbgqBdxawceBd2aqaeadaicbz:djjjb8AawcuadcdtadcFFFFi0Egkcbyd:m:jjjbHjjjjbbgxBdzawcdBd2adcd4adfhmceheinaegicetheaiam6mbkcbhPawcuaicdtgsaicFFFFi0Ecbyd:m:jjjbHjjjjbbgzBdCawciBd2dndnar:ZgH:rJbbbZMgO:lJbbb9p9DTmbaO:Ohexekcjjjj94hekaicufhAc:bwhmcbhCadhXcbhQinaChLaeamgKcufaeaK9iEaPgDcefaeaD9kEhYdndnadTmbaYcuf:YhOaqhiaxheadhmindndnaiIdbaONJbbbZMg8A:lJbbb9p9DTmba8A:OhCxekcjjjj94hCkaCcCthCdndnaiclfIdbaONJbbbZMg8A:lJbbb9p9DTmba8A:OhExekcjjjj94hEkaEcqtaCVhCdndnaicwfIdbaONJbbbZMg8A:lJbbb9p9DTmba8A:OhExekcjjjj94hEkaeaCaEVBdbaicxfhiaeclfheamcufgmmbkazcFeasz:ljjjbh3cbh5cbhPindna3axaPcdtfydbgCcm4aC7c:v;t;h;Ev2gics4ai7aAGgmcdtfgEydbgecuSmbaeaCSmbcehiina3amaifaAGgmcdtfgEydbgecuSmeaicefhiaeaC9hmbkkaEaCBdba5aecuSfh5aPcefgPad9hmbxdkkazcFeasz:ljjjb8Acbh5kaDaYa5ar0giEhPaLa5aiEhCdna5arSmbaYaKaiEgmaP9Rcd9imbdndnaQcl0mbdnaX:ZgOaL:Zg8A:taY:Yg8EaD:Y:tg8Fa8EaK:Y:tgaa5:ZghaH:tNNNaOaH:taaNa8Aah:tNa8AaH:ta8FNahaO:tNM:va8EMJbbbZMgO:lJbbb9p9DTmbaO:Ohexdkcjjjj94hexekaPamfcd9Theka5aXaiEhXaQcefgQcs9hmekkdndnaCmbcihicbhDxekcbhiawakcbyd:m:jjjbHjjjjbbg5BdKawclBd2aPcuf:Yh8AdndnadTmbaqhiaxheadhmindndnaiIdba8ANJbbbZMgO:lJbbb9p9DTmbaO:OhCxekcjjjj94hCkaCcCthCdndnaiclfIdba8ANJbbbZMgO:lJbbb9p9DTmbaO:OhExekcjjjj94hEkaEcqtaCVhCdndnaicwfIdba8ANJbbbZMgO:lJbbb9p9DTmbaO:OhExekcjjjj94hEkaeaCaEVBdbaicxfhiaeclfheamcufgmmbkazcFeasz:ljjjbh3cbhDcbhYindndndna3axaYcdtgKfydbgCcm4aC7c:v;t;h;Ev2gics4ai7aAGgmcdtfgEydbgecuSmbcehiinaxaecdtgefydbaCSmdamaifheaicefhia3aeaAGgmcdtfgEydbgecu9hmbkkaEaYBdbaDhiaDcefhDxeka5aefydbhika5aKfaiBdbaYcefgYad9hmbkcuaDc32giaDc;j:KM;jb0EhexekazcFeasz:ljjjb8AcbhDcbhekawaecbyd:m:jjjbHjjjjbbgeBd3awcvBd2aecbaiz:ljjjbhEavcd4hKdnadTmbdnalTmbaKcdth3a5hCaqhealhmadhAinaEaCydbc32fgiaeIdbaiIdbMUdbaiaeclfIdbaiIdlMUdlaiaecwfIdbaiIdwMUdwaiamIdbaiIdxMUdxaiamclfIdbaiIdzMUdzaiamcwfIdbaiIdCMUdCaiaiIdKJbbjZMUdKaCclfhCaecxfheama3fhmaAcufgAmbxdkka5hmaqheadhCinaEamydbc32fgiaeIdbaiIdbMUdbaiaeclfIdbaiIdlMUdlaiaecwfIdbaiIdwMUdwaiaiIdxJbbbbMUdxaiaiIdzJbbbbMUdzaiaiIdCJbbbbMUdCaiaiIdKJbbjZMUdKamclfhmaecxfheaCcufgCmbkkdnaDTmbaEhiaDheinaiaiIdbJbbbbJbbjZaicKfIdbgO:vaOJbbbb9BEgONUdbaiclfgmaOamIdbNUdbaicwfgmaOamIdbNUdbaicxfgmaOamIdbNUdbaiczfgmaOamIdbNUdbaicCfgmaOamIdbNUdbaic3fhiaecufgembkkcbhCawcuaDcdtgYaDcFFFFi0Egicbyd:m:jjjbHjjjjbbgeBdaawcoBd2awaicbyd:m:jjjbHjjjjbbg3Bd8KaecFeaYz:ljjjbhxdnadTmbJbbjZJbbjZa8A:vaPceSEaoNgOaONh8AaKcdthPalheina8Aaec;81jjbalEgmIdwaEa5ydbgAc32fgiIdC:tgOaONamIdbaiIdx:tgOaONamIdlaiIdz:tgOaONMMNaqcwfIdbaiIdw:tgOaONaqIdbaiIdb:tgOaONaqclfIdbaiIdl:tgOaONMMMhOdndnaxaAcdtgifgmydbcuSmba3aifIdbaO9ETmekamaCBdba3aifaOUdbka5clfh5aqcxfhqaeaPfheadaCcefgC9hmbkkabaxaYz:kjjjb8AcrhikaicdthiinaiTmeaic98fgiawcxffydbcbyd1:jjjbH:bjjjbbxbkkawc;Wbf8KjjjjbaDk:Ydidui99ducbhi8Jjjjjbca9Rglczfcwfcbyd11jjbBdbalcb8Pdj1jjb83izalcwfcbydN1jjbBdbalcb8Pd:m1jjb83ibdndnaembJbbjFhvJbbjFhoJbbjFhrxekadcd4cdthwincbhdinalczfadfgDabadfIdbgvaDIdbgoaoav9EEUdbaladfgDavaDIdbgoaoav9DEUdbadclfgdcx9hmbkabawfhbaicefgiae9hmbkalIdwalIdK:thralIdlalIdC:thoalIdbalIdz:thvkJbbbbavavJbbbb9DEgvaoaoav9DEgvararav9DEk9DeeuabcFeaicdtz:ljjjbhlcbhbdnadTmbindnalaeydbcdtfgiydbcu9hmbaiabBdbabcefhbkaeclfheadcufgdmbkkabk9teiucbcbyd:q:jjjbgeabcifc98GfgbBd:q:jjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;teeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiaeydlBdlaiaeydwBdwaiaeydxBdxaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk:3eedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdxaialBdwaialBdlaialBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabk9teiucbcbyd:q:jjjbgeabcrfc94GfgbBd:q:jjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik9:eiuZbhedndncbyd:q:jjjbgdaecztgi9nmbcuheadai9RcFFifcz4nbcuSmekadhekcbabae9Rcifc98Gcbyd:q:jjjbfgdBd:q:jjjbdnadZbcztge9nmbadae9RcFFifcz4nb8Akk6eiucbhidnadTmbdninabRbbglaeRbbgv9hmeaecefheabcefhbadcufgdmbxdkkalav9Rhikaikk:Iedbcjwk1eFFuuFFuuFFuuFFuFFFuFFFuFbbbbbbbbeeebeebebbeeebebbbbbebebbbbbbbbbebbbdbbbbbbbebbbebbbdbbbbbbbbbbbeeeeebebbebbebebbbeebbbbbbbbbbbbbbbbbbbbbc1Dkxebbbdbbb:GNbb"),{}).then(function(s){(r=s.instance).exports.__wasm_call_ctors()});function a(s){if(!s)throw new Error("Assertion failed")}function n(s){return new Uint8Array(s.buffer,s.byteOffset,s.byteLength)}function i(s,A,u,c,d,l,h,b){var g=r.exports.sbrk,f=g(4*b),m=g(u*c),p=g(u*l),C=new Uint8Array(r.exports.memory.buffer);C.set(n(A),m),d&&C.set(n(d),p);var I=s(f,m,u,c,p,l,h,b);new Uint8Array(r.exports.memory.buffer);var x=new Uint32Array(I);return n(x).set(C.subarray(f,f+4*I)),g(f-g(0)),x}var o={LockBorder:1,Sparse:2,ErrorAbsolute:4,Prune:8,_InternalDebug:1<<30}})(),function(){var r,e=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if(typeof WebAssembly!="object")return{supported:!1};var t=WebAssembly.instantiate(function(o){for(var s=new Uint8Array(o.length),A=0;A<o.length;++A){var u=o.charCodeAt(A);s[A]=u>96?u-97:u>64?u-39:u+4}var c=0;for(A=0;A<o.length;++A)s[c++]=s[A]<60?e[s[A]]:64*(s[A]-60)+s[++A];return s.buffer.slice(0,c)}("b9H79TebbbeVx9Geueu9Geub9Gbb9Giuuueu9Gmuuuuuuuuuuu9999eu9Gvuuuuueu9Gwuuuuuuuub9Gxuuuuuuuuuuuueu9Gkuuuuuuuuuu99eu9Gouuuuuub9Gruuuuuuub9GluuuubiOHdilvorwDDqkbiibeilve9Weiiviebeoweuec:q:Odkr:Yewo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9I919P29K9nW79O2Wt79c9V919U9KbeX9TW79O9V9Wt9F9I919P29K9nW79O2Wt7bo39TW79O9V9Wt9F9J9V9T9W91tWJ2917tWV9c9V919U9K7br39TW79O9V9Wt9F9J9V9T9W91tW9nW79O2Wt9c9V919U9K7bDL9TW79O9V9Wt9F9V9Wt9P9T9P96W9nW79O2Wtbql79IV9RbkDwebcekdsPq;29zHdbkIbabaec9:fgefcufae9Ugeabci9Uadfcufad9Ugbaeab0Ek:w8KDPue99eux99dui99euo99iu8Jjjjjbc:WD9Rgm8KjjjjbdndnalmbcbhPxekamc:Cwfcbc;Kbz:njjjb8Adndnalcb9imbaoal9nmbamcuaocdtaocFFFFi0Egscbyd:e1jjbHjjjjbbgzBd:CwamceBd;8wamascbyd:e1jjbHjjjjbbgHBd:GwamcdBd;8wamcualcdtalcFFFFi0Ecbyd:e1jjbHjjjjbbgOBd:KwamciBd;8waihsalhAinazasydbcdtfcbBdbasclfhsaAcufgAmbkaihsalhAinazasydbcdtfgCaCydbcefBdbasclfhsaAcufgAmbkaihsalhCcbhXindnazasydbcdtgQfgAydbcb9imbaHaQfaXBdbaAaAydbgQcjjjj94VBdbaQaXfhXkasclfhsaCcufgCmbkalci9UhLdnalci6mbcbhsaihAinaAcwfydbhCaAclfydbhXaHaAydbcdtfgQaQydbgQcefBdbaOaQcdtfasBdbaHaXcdtfgXaXydbgXcefBdbaOaXcdtfasBdbaHaCcdtfgCaCydbgCcefBdbaOaCcdtfasBdbaAcxfhAaLascefgs9hmbkkaihsalhAindnazasydbcdtgCfgXydbgQcu9kmbaXaQcFFFFrGgQBdbaHaCfgCaCydbaQ9RBdbkasclfhsaAcufgAmbxdkkamcuaocdtgsaocFFFFi0EgAcbyd:e1jjbHjjjjbbgzBd:CwamceBd;8wamaAcbyd:e1jjbHjjjjbbgHBd:GwamcdBd;8wamcualcdtalcFFFFi0Ecbyd:e1jjbHjjjjbbgOBd:KwamciBd;8wazcbasz:njjjbhXalci9UhLaihsalhAinaXasydbcdtfgCaCydbcefBdbasclfhsaAcufgAmbkdnaoTmbcbhsaHhAaXhCaohQinaAasBdbaAclfhAaCydbasfhsaCclfhCaQcufgQmbkkdnalci6mbcbhsaihAinaAcwfydbhCaAclfydbhQaHaAydbcdtfgKaKydbgKcefBdbaOaKcdtfasBdbaHaQcdtfgQaQydbgQcefBdbaOaQcdtfasBdbaHaCcdtfgCaCydbgCcefBdbaOaCcdtfasBdbaAcxfhAaLascefgs9hmbkkaoTmbcbhsaohAinaHasfgCaCydbaXasfydb9RBdbasclfhsaAcufgAmbkkamaLcbyd:e1jjbHjjjjbbgsBd:OwamclBd;8wascbaLz:njjjbhYamcuaLcK2alcjjjjd0Ecbyd:e1jjbHjjjjbbg8ABd:SwamcvBd;8wJbbbbhEdnalci6g3mbarcd4hKaihAa8AhsaLhrJbbbbh5inavaAclfydbaK2cdtfgCIdlh8EavaAydbaK2cdtfgXIdlhEavaAcwfydbaK2cdtfgQIdlh8FaCIdwhaaXIdwhhaQIdwhgasaCIdbg8JaXIdbg8KMaQIdbg8LMJbbnn:vUdbasclfaXIdlaCIdlMaQIdlMJbbnn:vUdbaQIdwh8MaCIdwh8NaXIdwhyascxfa8EaE:tg8Eagah:tggNa8FaE:tg8Faaah:tgaN:tgEJbbbbJbbjZa8Ja8K:tg8Ja8FNa8La8K:tg8Ka8EN:tghahNaEaENaaa8KNaga8JN:tgEaENMM:rg8K:va8KJbbbb9BEg8ENUdbasczfaEa8ENUdbascCfaha8ENUdbascwfa8Maya8NMMJbbnn:vUdba5a8KMh5aAcxfhAascKfhsarcufgrmbka5aL:Z:vJbbbZNhEkamcuaLcdtalcFFFF970Ecbyd:e1jjbHjjjjbbgCBd:WwamcoBd;8waEaq:ZNhEdna3mbcbhsaChAinaAasBdbaAclfhAaLascefgs9hmbkkaE:rhhcuh8PamcuaLcltalcFFFFd0Ecbyd:e1jjbHjjjjbbgIBd:0wamcrBd;8wcbaIa8AaCaLz:djjjb8AJFFuuhyJFFuuh8RJFFuuh8Sdnalci6gXmbJFFuuh8Sa8AhsaLhAJFFuuh8RJFFuuhyinascwfIdbgEayayaE9EEhyasclfIdbgEa8Ra8RaE9EEh8RasIdbgEa8Sa8SaE9EEh8SascKfhsaAcufgAmbkkahJbbbZNhgamaocetgscuaocu9kEcbyd:e1jjbHjjjjbbgABd:4waAcFeasz:njjjbhCdnaXmbcbhAJFFuuhEa8Ahscuh8PinascwfIdbay:tghahNasIdba8S:tghahNasclfIdba8R:tghahNMM:rghaEa8PcuSahaE9DVgXEhEaAa8PaXEh8PascKfhsaLaAcefgA9hmbkkamczfcbcjwz:njjjb8Aamcwf9cb83ibam9cb83ibagaxNhRJbbjZak:th8Ncbh8UJbbbbh8VJbbbbh8WJbbbbh8XJbbbbh8YJbbbbh8ZJbbbbh80cbh81cbhPinJbbbbhEdna8UTmbJbbjZa8U:Z:vhEkJbbbbhhdna80a80Na8Ya8YNa8Za8ZNMMg8KJbbbb9BmbJbbjZa8K:r:vhhka8XaENh5a8WaENh8Fa8VaENhaa8PhQdndndndndna8UaPVTmbamydwgBTmea80ahNh8Ja8ZahNh8La8YahNh8Maeamydbcdtfh83cbh3JFFuuhEcvhXcuhQindnaza83a3cdtfydbcdtgsfydbgvTmbaOaHasfydbcdtfhAindndnaCaiaAydbgKcx2fgsclfydbgrcetf8Vebcs4aCasydbgLcetf8Vebcs4faCascwfydbglcetf8Vebcs4fgombcbhsxekcehsazaLcdtfydbgLceSmbcehsazarcdtfydbgrceSmbcehsazalcdtfydbglceSmbdnarcdSaLcdSfalcdSfcd6mbaocefhsxekaocdfhskdnasaX9kmba8AaKcK2fgLIdwa5:thhaLIdla8F:th8KaLIdbaa:th8EdndnakJbbbb9DTmba8E:lg8Ea8K:lg8Ka8Ea8K9EEg8Kah:lgha8Kah9EEag:vJbbjZMhhxekahahNa8Ea8ENa8Ka8KNMM:rag:va8NNJbbjZMJ9VO:d86JbbjZaLIdCa8JNaLIdxa8MNa8LaLIdzNMMakN:tghahJ9VO:d869DENhhkaKaQasaX6ahaE9DVgLEhQasaXaLEhXahaEaLEhEkaAclfhAavcufgvmbkka3cefg3aB9hmbkkaQcu9hmekama5Ud:ODama8FUd:KDamaaUd:GDamcuBd:qDamcFFF;7rBdjDaIcba8AaYamc:GDfakJbbbb9Damc:qDfamcjDfz:ejjjbamyd:qDhQdndnaxJbbbb9ETmba8UaD6mbaQcuSmeceh3amIdjDaR9EmixdkaQcu9hmekdna8UTmbdnamydlgza8Uci2fgsciGTmbadasfcba8Uazcu7fciGcefz:njjjb8AkabaPcltfgzam8Pib83dbazcwfamcwf8Pib83dbaPcefhPkc3hzinazc98Smvamc:Cwfazfydbcbydj1jjbH:bjjjbbazc98fhzxbkkcbh3a8Uaq9pmbamydwaCaiaQcx2fgsydbcetf8Vebcs4aCascwfydbcetf8Vebcs4faCasclfydbcetf8Vebcs4ffaw9nmekcbhscbhAdna81TmbcbhAamczfhXinamczfaAcdtfaXydbgLBdbaXclfhXaAaYaLfRbbTfhAa81cufg81mbkkamydwhlamydbhXam9cu83i:GDam9cu83i:ODam9cu83i:qDam9cu83i:yDaAc;8eaAclfc:bd6Eh81inamcjDfasfcFFF;7rBdbasclfgscz9hmbka81cdthBdnalTmbaeaXcdtfhocbhrindnazaoarcdtfydbcdtgsfydbgvTmbaOaHasfydbcdtfhAcuhLcuhsinazaiaAydbgKcx2fgXclfydbcdtfydbazaXydbcdtfydbfazaXcwfydbcdtfydbfgXasaXas6gXEhsaKaLaXEhLaAclfhAavcufgvmbkaLcuSmba8AaLcK2fgAIdway:tgEaENaAIdba8S:tgEaENaAIdla8R:tgEaENMM:rhEcbhAindndnasamc:qDfaAfgvydbgX6mbasaX9hmeaEamcjDfaAfIdb9FTmekavasBdbamc:GDfaAfaLBdbamcjDfaAfaEUdbxdkaAclfgAcz9hmbkkarcefgral9hmbkkamczfaBfhLcbhscbhAindnamc:GDfasfydbgXcuSmbaLaAcdtfaXBdbaAcefhAkasclfgscz9hmbkaAa81fg81TmbJFFuuhhcuhKamczfhsa81hvcuhLina8AasydbgXcK2fgAIdway:tgEaENaAIdba8S:tgEaENaAIdla8R:tgEaENMM:rhEdndnazaiaXcx2fgAclfydbcdtfydbazaAydbcdtfydbfazaAcwfydbcdtfydbfgAaL6mbaAaL9hmeaEah9DTmekaEhhaAhLaXhKkasclfhsavcufgvmbkaKcuSmbaKhQkdnamaiaQcx2fgrydbarclfydbarcwfydbaCabaeadaPawaqa3z:fjjjbTmbaPcefhPJbbbbh8VJbbbbh8WJbbbbh8XJbbbbh8YJbbbbh8ZJbbbbh80kcbhXinaOaHaraXcdtfydbcdtgAfydbcdtfgKhsazaAfgvydbgLhAdnaLTmbdninasydbaQSmeasclfhsaAcufgATmdxbkkasaKaLcdtfc98fydbBdbavavydbcufBdbkaXcefgXci9hmbka8AaQcK2fgsIdbhEasIdlhhasIdwh8KasIdxh8EasIdzh5asIdCh8FaYaQfce86bba80a8FMh80a8Za5Mh8Za8Ya8EMh8Ya8Xa8KMh8Xa8WahMh8Wa8VaEMh8Vamydxh8Uxbkkamc:WDf8KjjjjbaPk;Vvivuv99lu8Jjjjjbca9Rgv8Kjjjjbdndnalcw0mbaiydbhoaeabcitfgralcdtcufBdlaraoBdbdnalcd6mbaiclfhoalcufhwarcxfhrinaoydbhDarcuBdbarc98faDBdbarcwfhraoclfhoawcufgwmbkkalabfhrxekcbhDavczfcwfcbBdbav9cb83izavcwfcbBdbav9cb83ibJbbjZhqJbbjZhkinadaiaDcdtfydbcK2fhwcbhrinavczfarfgoawarfIdbgxaoIdbgm:tgPakNamMgmUdbavarfgoaPaxam:tNaoIdbMUdbarclfgrcx9hmbkJbbjZaqJbbjZMgq:vhkaDcefgDal9hmbkcbhoadcbcecdavIdlgxavIdwgm9GEgravIdbgPam9GEaraPax9GEgscdtgrfhzavczfarfIdbhxaihralhwinaiaocdtfgDydbhHaDarydbgOBdbaraHBdbarclfhraoazaOcK2fIdbax9Dfhoawcufgwmbkaeabcitfhrdndnaocv6mbaoalc98f6mekaraiydbBdbaralcdtcufBdlaiclfhoalcufhwarcxfhrinaoydbhDarcuBdbarc98faDBdbarcwfhraoclfhoawcufgwmbkalabfhrxekaraxUdbararydlc98GasVBdlabcefaeadaiaoz:djjjbhwararydlciGawabcu7fcdtVBdlawaeadaiaocdtfalao9Rz:djjjbhrkavcaf8Kjjjjbark:;idiud99dndnabaecitfgwydlgDciGgqciSmbinabcbaDcd4gDalaqcdtfIdbawIdb:tgkJbbbb9FEgwaecefgefadaialavaoarz:ejjjbak:larIdb9FTmdabawaD7aefgecitfgwydlgDciGgqci9hmbkkabaecitfgeclfhbdnavmbcuhwindnaiaeydbgDfRbbmbadaDcK2fgqIdwalIdw:tgkakNaqIdbalIdb:tgkakNaqIdlalIdl:tgkakNMM:rgkarIdb9DTmbarakUdbaoaDBdbkaecwfheawcefgwabydbcd46mbxdkkcuhwindnaiaeydbgDfRbbmbadaDcK2fgqIdbalIdb:t:lgkaqIdlalIdl:t:lgxakax9EEgkaqIdwalIdw:t:lgxakax9EEgkarIdb9DTmbarakUdbaoaDBdbkaecwfheawcefgwabydbcd46mbkkk;llevudnabydwgxaladcetfgm8Vebcs4alaecetfgP8Vebgscs4falaicetfgz8Vebcs4ffaD0abydxaq9pVakVgDce9hmbavawcltfgxab8Pdb83dbaxcwfabcwfgx8Pdb83dbdnaxydbgqTmbaoabydbcdtfhxaqhsinalaxydbcetfcFFi87ebaxclfhxascufgsmbkkdnabydxglci2gsabydlgxfgkciGTmbarakfcbalaxcu7fciGcefz:njjjb8Aabydxci2hsabydlhxabydwhqkab9cb83dwababydbaqfBdbabascifc98GaxfBdlaP8Vebhscbhxkdnascztcz91cu9kmbabaxcefBdwaPax87ebaoabydbcdtfaxcdtfaeBdbkdnam8Uebcu9kmbababydwgxcefBdwamax87ebaoabydbcdtfaxcdtfadBdbkdnaz8Uebcu9kmbababydwgxcefBdwazax87ebaoabydbcdtfaxcdtfaiBdbkarabydlfabydxci2faPRbb86bbarabydlfabydxci2fcefamRbb86bbarabydlfabydxci2fcdfazRbb86bbababydxcefBdxaDk8LbabaeadaialavaoarawaDaDaqJbbbbz:cjjjbk;Jkovud99euv99eul998Jjjjjbc:W;ae9Rgo8KjjjjbdndnadTmbavcd4hrcbhwcbhDindnaiaeclfydbar2cdtfgvIdbaiaeydbar2cdtfgqIdbgk:tgxaiaecwfydbar2cdtfgmIdlaqIdlgP:tgsNamIdbak:tgzavIdlaP:tgPN:tgkakNaPamIdwaqIdwgH:tgONasavIdwaH:tgHN:tgPaPNaHazNaOaxN:tgxaxNMM:rgsJbbbb9Bmbaoc:W:qefawcx2fgAakas:vUdwaAaxas:vUdlaAaPas:vUdbaoc8Wfawc8K2fgAaq8Pdb83dbaAav8Pdb83dxaAam8Pdb83dKaAcwfaqcwfydbBdbaAcCfavcwfydbBdbaAcafamcwfydbBdbawcefhwkaecxfheaDcifgDad6mbkab9cb83dbabcyf9cb83dbabcaf9cb83dbabcKf9cb83dbabczf9cb83dbabcwf9cb83dbawTmeaocbBd8Sao9cb83iKao9cb83izaoczfaoc8Wfawci2cxaoc8Sfcbz1jjjbaoIdKhCaoIdChXaoIdzhQao9cb83iwao9cb83ibaoaoc:W:qefawcxaoc8Sfcbz1jjjbJbbjZhkaoIdwgPJbbbbJbbjZaPaPNaoIdbgPaPNaoIdlgsasNMM:rgx:vaxJbbbb9BEgzNhxasazNhsaPazNhzaoc:W:qefheawhvinaecwfIdbaxNaeIdbazNasaeclfIdbNMMgPakaPak9DEhkaecxfheavcufgvmbkabaCUdwabaXUdlabaQUdbabaoId3UdxdndnakJ;n;m;m899FmbJbbbbhPaoc:W:qefheaoc8WfhvinaCavcwfIdb:taecwfIdbgHNaQavIdb:taeIdbgONaXavclfIdb:taeclfIdbgLNMMaxaHNazaONasaLNMM:vgHaPaHaP9EEhPavc8KfhvaecxfheawcufgwmbkabaxUd8KabasUdaabazUd3abaCaxaPN:tUdKabaXasaPN:tUdCabaQazaPN:tUdzabJbbjZakakN:t:rgkUdydndnaxJbbj:;axJbbj:;9GEgPJbbjZaPJbbjZ9FEJbb;:9cNJbbbZJbbb:;axJbbbb9GEMgP:lJbbb9p9DTmbaP:Ohexekcjjjj94hekabae86b8UdndnasJbbj:;asJbbj:;9GEgPJbbjZaPJbbjZ9FEJbb;:9cNJbbbZJbbb:;asJbbbb9GEMgP:lJbbb9p9DTmbaP:Ohvxekcjjjj94hvkabav86bRdndnazJbbj:;azJbbj:;9GEgPJbbjZaPJbbjZ9FEJbb;:9cNJbbbZJbbb:;azJbbbb9GEMgP:lJbbb9p9DTmbaP:Ohqxekcjjjj94hqkabaq86b8SdndnaecKtcK91:YJbb;:9c:vax:t:lavcKtcK91:YJbb;:9c:vas:t:laqcKtcK91:YJbb;:9c:vaz:t:lakMMMJbb;:9cNJbbjZMgk:lJbbb9p9DTmbak:Ohexekcjjjj94hekaecFbaecFb9iEhexekabcjjj;8iBdycFbhekabae86b8Vxekab9cb83dbabcyf9cb83dbabcaf9cb83dbabcKf9cb83dbabczf9cb83dbabcwf9cb83dbkaoc:W;aef8Kjjjjbk;Yodouk99cbho8Jjjjjbca9RgrczfcwfcbBdbar9cb83izarcwfcbBdbar9cb83ibavcd4hwaicd4hDdnadTmbaDcdthqaehkinalaoaw2cdtfIdbhxcbhvinarczfavfgiaoaiydbgiakavfIdbgmax:taeavaqai2ffIdbalaiaw2cdtfIdb:t9DEBdbaravfgiaoaiydbgiaxamMaeavaqai2ffIdbalaiaw2cdtfIdbM9EEBdbavclfgvcx9hmbkakaqfhkaocefgoad9hmbkkJbbbbhxcbhvcbhkcbhiinalaravfydbgoaw2cdtfIdbalarczfavfydbgqaw2cdtfIdbaeaoaD2cdtfgoIdwaeaqaD2cdtfgqIdw:tgmamNaoIdbaqIdb:tgmamNaoIdlaqIdl:tgmamNMM:rMMgmaxamax9EgoEhxaiakaoEhkavclfhvaicefgici9hmbkJbbbbhmdnaearakcdtgifydbgoaD2cdtfgvIdwaearczfaifydbgraD2cdtfgiIdwgP:tgsasNavIdbaiIdbgz:tgHaHNavIdlaiIdlgO:tgAaANMM:rgCJbbbb9ETmbaCalaoaw2cdtfIdbMalaraw2cdtfIdb:taCaCM:vhmkaxJbbbZNhCasamNaPMhPaAamNaOMhOaHamNazMhzdnadTmbaDcdthvawcdthiindnalIdbgXaecwfIdbaP:tgxaxNaeIdbaz:tgmamNaeclfIdbaO:tgsasNMM:rgHMgQaC9ETmbJbbbbhAdnaHJbbbb9ETmbaQaC:taHaHM:vhAkaAaxNaPMhPaAasNaOMhOaAamNazMhzaXaCaHMMJbbbZNhCkaeavfhealaifhladcufgdmbkkabaCUdxabaPUdwabaOUdlabazUdbkjeeiu8Jjjjjbcj8W9Rgr8Kjjjjbaici2hwdnaiTmbawceawce0EhDarhiinaiaeadRbbcdtfydbBdbadcefhdaiclfhiaDcufgDmbkkabarawaladaoz:hjjjbarcj8Wf8Kjjjjbk:3lequ8JjjjjbcjP9Rgl8Kjjjjbcbhvalcjxfcbaiz:njjjb8AdndnadTmbcjehoaehrincuhwarhDcuhqavhkdninawakaoalcjxfaDcefRbbfRbb9RcFeGci6aoalcjxfaDRbbfRbb9RcFeGci6faoalcjxfaDcdfRbbfRbb9RcFeGci6fgxaq9mgmEhwdnammbaxce0mdkaxaqaxaq9kEhqaDcifhDadakcefgk9hmbkkaeawci2fgDcdfRbbhqaDcefRbbhxaDRbbhkaeavci2fgDcifaDawav9Rci2z:qjjjb8Aakalcjxffaocefgo86bbaxalcjxffao86bbaDcdfaq86bbaDcefax86bbaDak86bbaqalcjxffao86bbarcifhravcefgvad9hmbkalcFeaicetz:njjjbhoadci2gDceaDce0EhqcbhxindnaoaeRbbgkcetfgw8UebgDcu9kmbawax87ebaocjlfaxcdtfabakcdtfydbBdbaxhDaxcefhxkaeaD86bbaecefheaqcufgqmbkaxcdthDxekcbhDkabalcjlfaDz:mjjjb8AalcjPf8Kjjjjbk9teiucbcbyd11jjbgeabcifc98GfgbBd11jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;teeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiaeydlBdlaiaeydwBdwaiaeydxBdxaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk:3eedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdxaialBdwaialBdlaialBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabk9teiucbcbyd11jjbgeabcrfc94GfgbBd11jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik9:eiuZbhedndncbyd11jjbgdaecztgi9nmbcuheadai9RcFFifcz4nbcuSmekadhekcbabae9Rcifc98Gcbyd11jjbfgdBd11jjbdnadZbcztge9nmbadae9RcFFifcz4nb8Akk:;Deludndndnadch9pmbabaeSmdaeabadfgi9Rcbadcet9R0mekabaead;8qbbxekaeab7ciGhldndndnabae9pmbdnalTmbadhvabhixikdnabciGmbadhvabhixdkadTmiabaeRbb86bbadcufhvdnabcefgiciGmbaecefhexdkavTmiabaeRbe86beadc9:fhvdnabcdfgiciGmbaecdfhexdkavTmiabaeRbd86bdadc99fhvdnabcifgiciGmbaecifhexdkavTmiabaeRbi86biabclfhiaeclfheadc98fhvxekdnalmbdnaiciGTmbadTmlabadcufgifglaeaifRbb86bbdnalciGmbaihdxekaiTmlabadc9:fgifglaeaifRbb86bbdnalciGmbaihdxekaiTmlabadc99fgifglaeaifRbb86bbdnalciGmbaihdxekaiTmlabadc98fgdfaeadfRbb86bbkadcl6mbdnadc98fgocd4cefciGgiTmbaec98fhlabc98fhvinavadfaladfydbBdbadc98fhdaicufgimbkkaocx6mbaec9Wfhvabc9WfhoinaoadfgicxfavadfglcxfydbBdbaicwfalcwfydbBdbaiclfalclfydbBdbaialydbBdbadc9Wfgdci0mbkkadTmdadhidnadciGglTmbaecufhvabcufhoadhiinaoaifavaifRbb86bbaicufhialcufglmbkkadcl6mdaec98fhlabc98fhvinavaifgecifalaifgdcifRbb86bbaecdfadcdfRbb86bbaecefadcefRbb86bbaeadRbb86bbaic98fgimbxikkavcl6mbdnavc98fglcd4cefcrGgdTmbavadcdt9RhvinaiaeydbBdbaeclfheaiclfhiadcufgdmbkkalc36mbinaiaeydbBdbaiaeydlBdlaiaeydwBdwaiaeydxBdxaiaeydzBdzaiaeydCBdCaiaeydKBdKaiaeyd3Bd3aecafheaicafhiavc9Gfgvci0mbkkavTmbdndnavcrGgdmbavhlxekavc94GhlinaiaeRbb86bbaicefhiaecefheadcufgdmbkkavcw6mbinaiaeRbb86bbaiaeRbe86beaiaeRbd86bdaiaeRbi86biaiaeRbl86blaiaeRbv86bvaiaeRbo86boaiaeRbr86braicwfhiaecwfhealc94fglmbkkabkkAebcjwkxebbbdbbbzNbb"),{}).then(function(o){(r=o.instance).exports.__wasm_call_ctors()});function a(o){if(!o)throw new Error("Assertion failed")}function n(o){return new Uint8Array(o.buffer,o.byteOffset,o.byteLength)}function i(o){var s=new Float32Array(r.exports.memory.buffer,o,12);return{centerX:s[0],centerY:s[1],centerZ:s[2],radius:s[3],coneApexX:s[4],coneApexY:s[5],coneApexZ:s[6],coneAxisX:s[7],coneAxisY:s[8],coneAxisZ:s[9],coneCutoff:s[10]}}}();let ut=0;class Bn{constructor(e){if(this.downloadParallelism=e.downloadParallelism==null?8:e.downloadParallelism,this.timeout=e.timeout!=null?e.timeout:5e3,this.renderer=e.renderer,this.zUpToYUpMatrix=new G.Matrix4,this.zUpToYUpMatrix.set(1,0,0,0,0,0,-1,0,0,1,0,0,0,0,0,1),this.maxCachedItems=100,this.proxy=e.proxy,e&&(this.meshCallback=e.meshCallback,this.pointsCallback=e.pointsCallback,e.maxCachedItems!=null&&(this.maxCachedItems=e.maxCachedItems)),this.gltfLoader=new Jr,e&&e.dracoLoader)this.gltfLoader.setDRACOLoader(e.dracoLoader),this.hasDracoLoader=!0;else{const t=new Zr;t.setDecoderPath("https://storage.googleapis.com/ogc-3d-tiles/draco/"),this.dracoLoader=t,this.gltfLoader.setDRACOLoader(t),this.gltfLoader.hasDracoLoader=!0}if(e&&e.ktx2Loader)this.gltfLoader.setKTX2Loader(e.ktx2Loader),this.hasKTX2Loader=!0;else if(e&&e.renderer){const t=new Pe;t.setTranscoderPath("https://storage.googleapis.com/ogc-3d-tiles/basis/").detectSupport(e.renderer),this.ktx2loader=t,this.gltfLoader.setKTX2Loader(t),this.gltfLoader.hasKTX2Loader=!0}this.gltfLoader.setMeshoptDecoder(In),this.hasMeshOptDecoder=!0,this.b3dmDecoder=new zr(this.gltfLoader),this.splatsDecoder=new eo(this.gltfLoader,this.renderer),this.cache=new Gr,this.register={},this.ready=[],this.downloads=[],this.nextReady=[],this.nextDownloads=[]}update(){const e=this;ut<e.downloadParallelism&&e._download(),e._loadBatch()}_scheduleDownload(e){this.downloads.unshift(e)}_download(){if(this.nextDownloads.length!=0||(this._getNextDownloads(),this.nextDownloads.length!=0))for(;this.nextDownloads.length>0;){const e=this.nextDownloads.shift();e&&e.shouldDoDownload()&&e.doDownload()}}_meshReceived(e,t,a,n,i,o,s){this.ready.unshift([e,t,a,n,i,o,s])}_loadBatch(){for(this.nextReady.length==0&&this._getNextReady();this.nextReady.length>0;){const e=this.nextReady.shift();if(!e)return;const t=e[0],a=e[1],n=e[2],i=t.get(n);i&&a[n]&&Object.keys(a[n]).forEach(o=>{const s=a[n][o];s&&(s(i),a[n][o]=null)}),this.nextReady.length==0&&this._getNextReady()}}_getNextDownloads(){let e=Number.POSITIVE_INFINITY,t=-1;for(let s=this.downloads.length-1;s>=0;s--)this.downloads[s].shouldDoDownload()?this.downloads[s].distanceFunction||this.nextDownloads.push(this.downloads.splice(s,1)[0]):this.downloads.splice(s,1);if(this.nextDownloads.length>0)return;let a,n=0,i=Number.MAX_SAFE_INTEGER,o=-1;for(let s=this.downloads.length-1;s>=0;s--){const A=this.downloads[s].distanceFunction();A<=e&&(e=A,t=s),n=Math.max(this.downloads[s].level),this.downloads[s].loadingStrategy!="IMMEDIATE"&&this.downloads[s].level<i&&(i=this.downloads[s].level,o=s)}if(n>i+4?a=this.downloads.splice(o,1).pop():t>=0&&(a=this.downloads.splice(t,1).pop()),a){this.nextDownloads.push(a);const s=a.getSiblings();for(let A=this.downloads.length-1;A>=0;A--)s.map(u=>u.uuid).includes(this.downloads[A].uuid)&&this.nextDownloads.push(this.downloads.splice(A,1).pop())}}_getNextReady(){let e=Number.POSITIVE_INFINITY,t=-1;for(let a=this.ready.length-1;a>=0;a--)this.ready[a][3]||this.nextReady.push(this.ready.splice(a,1)[0]);if(!(this.nextReady.length>0)){for(let a=this.ready.length-1;a>=0;a--){const n=this.ready[a][3]()*this.ready[a][5];n<=e&&(e=n,t=a)}if(t>=0){const a=this.ready.splice(t,1).pop();this.nextReady.push(a);const n=a[4]();for(let i=this.ready.length-1;i>=0;i--)n.map(o=>o.uuid).includes(this.ready[i][6])&&this.nextReady.push(this.ready.splice(i,1).pop())}}}get(e,t,a,n,i,o,s,A,u,c,d,l){const h=this,b=Dn(a),g=new AbortController;if(e.signal.addEventListener("abort",()=>{h.register[b]&&Object.keys(h.register[b]).length!=0||g.abort("user abort")}),!(a.includes(".b3dm")||a.includes(".json")||a.includes(".gltf")||a.includes(".glb")))return void console.error("the 3DTiles cache can only be used to load B3DM, gltf and json data");if(h.register[b]||(h.register[b]={}),h.register[b][t]&&console.error(" a tile should only be loaded once"),h.register[b][t]=n,h.cache.get(b))this._meshReceived(h.cache,h.register,b,i,o,s,t);else{let f;a.includes(".b3dm")?f=()=>{var m;m=h.proxy?()=>fetch(h.proxy,{method:"POST",body:a,signal:g.signal}):()=>fetch(a,{signal:g.signal}),ut++,m().then(p=>{if(!p.ok)throw console.error("could not load tile with path : "+a),new Error(`couldn't load "${a}". Request failed with status ${p.status} : ${p.statusText}`);return p.arrayBuffer()}).then(p=>this.b3dmDecoder.parseB3DM(p,C=>{h.meshCallback(C,d)},u,c)).then(p=>{h.cache.put(b,p),this._meshReceived(h.cache,h.register,b,i,o,s,t),h._checkSize()}).catch(p=>{}).finally(()=>{ut--})}:a.includes(".glb")||a.includes(".gltf")?f=l?()=>{var m;m=h.proxy?()=>fetch(h.proxy,{method:"POST",body:a,signal:g.signal}):()=>fetch(a,{signal:g.signal}),ut++,m().then(p=>{if(!p.ok)throw console.error("could not load tile with path : "+a),new Error(`couldn't load "${a}". Request failed with status ${p.status} : ${p.statusText}`);return p.arrayBuffer()}).then(p=>this.splatsDecoder.parseSplats(p,u,c,l)).then(p=>{h.cache.put(b,p),h._meshReceived(h.cache,h.register,b,i,o,s,t),h._checkSize()}).catch(p=>{}).finally(()=>{ut--})}:()=>{var m;m=h.proxy?()=>fetch(h.proxy,{method:"POST",body:a,signal:g.signal}):()=>fetch(a,{signal:g.signal}),ut++,m().then(p=>{if(!p.ok)throw console.error("could not load tile with path : "+a),new Error(`couldn't load "${a}". Request failed with status ${p.status} : ${p.statusText}`);return p.arrayBuffer()}).then(async p=>{await async function(C){return new Promise(I=>{const x=setInterval(()=>{C.hasDracoLoader&&!C.dracoLoader||C.hasKTX2Loader&&!C.ktx2Loader||(clearInterval(x),I())},10)})}(this.gltfLoader),this.gltfLoader.parse(p,null,C=>{C.scene.asset=C.asset,u&&C.scene.applyMatrix4(this.zUpToYUpMatrix),C.scene.traverse(I=>{I.isMesh&&(c&&I.applyMatrix4(this.zUpToYUpMatrix),h.meshCallback&&h.meshCallback(I,d)),I.isPoints&&h.pointsCallback&&h.pointsCallback(I,d)}),h.cache.put(b,C.scene),h._meshReceived(h.cache,h.register,b,i,o,s,t),h._checkSize()})}).catch(p=>{p!=="user abort"&&p.code}).finally(()=>{ut--})}:a.includes(".json")&&(f=()=>{var m;m=h.proxy?()=>fetch(h.proxy,{method:"POST",body:a,signal:g.signal}):()=>fetch(a,{signal:g.signal}),ut++,m().then(p=>{if(!p.ok)throw console.error("could not load tile with path : "+a),new Error(`couldn't load "${a}". Request failed with status ${p.status} : ${p.statusText}`);return p.json()}).then(p=>$a(p,a)).then(p=>{h.cache.put(b,p),h._meshReceived(h.cache,h.register,b),h._checkSize()}).catch(p=>{console.error(p)}).finally(()=>{ut--})}),this._scheduleDownload({shouldDoDownload:()=>!e.signal.aborted&&!!h.register[b]&&Object.keys(h.register[b]).length>0&&!h.cache.get(b),doDownload:f,distanceFunction:i,getSiblings:o,level:s,loadingStrategy:A,uuid:t})}}clear(){const e=this.maxCachedItems;this.maxCachedItems=0,this._checkSize(),this.maxCachedItems=e}invalidate(e,t){const a=Dn(e),n=this;n.register[a]&&setTimeout(()=>{n.register&&n.register[a]&&(delete n.register[a][t],n._checkSize())},n.timeout)}dispose(){let e=this.cache.head();for(this._disposeEntryContent(e);(e=e.next()).key!=null;)this._disposeEntryContent(e);this.cache.reset(),this.cache=void 0,this.register=void 0,this.dracoLoader&&this.dracoLoader.dispose(),this.ktx2loader&&this.ktx2loader.dispose()}_checkSize(){const e=this;let t=0;for(;e.cache.size()>e.maxCachedItems&&t<e.cache.size();){t++;const a=e.cache.head(),n=e.register[a.key];n&&(Object.keys(n).length>0?(e.cache.remove(a.key),e.cache.put(a.key,a.value)):(e.cache.remove(a.key),delete e.register[a.key],e._disposeEntryContent(a)))}}_disposeEntryContent(e){e.value&&(e.value.isSplatsBatch?e.value.remove():e.value.traverse&&e.value.traverse(t=>{if(t.material)if(t.material.length)for(let a=0;a<t.material.length;++a)t.material[a].dispose();else t.material.dispose();t.geometry&&t.geometry.dispose()}))}}function Dn(r){for(var e=r.split("/"),t=[],a=0,n=0;n<e.length;n++){var i=e[n];i!=="."&&i!==""&&i!==".."?t[a++]=i:i===".."&&a>0&&a--}if(a===0)return"/";var o="";for(n=0;n<a;n++)o+="/"+t[n];return o}var yn,wn,ft=function(){if(wn)return yn;function r(a){if(typeof a!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(a))}function e(a,n){for(var i,o="",s=0,A=-1,u=0,c=0;c<=a.length;++c){if(c<a.length)i=a.charCodeAt(c);else{if(i===47)break;i=47}if(i===47){if(!(A===c-1||u===1))if(A!==c-1&&u===2){if(o.length<2||s!==2||o.charCodeAt(o.length-1)!==46||o.charCodeAt(o.length-2)!==46){if(o.length>2){var d=o.lastIndexOf("/");if(d!==o.length-1){d===-1?(o="",s=0):s=(o=o.slice(0,d)).length-1-o.lastIndexOf("/"),A=c,u=0;continue}}else if(o.length===2||o.length===1){o="",s=0,A=c,u=0;continue}}n&&(o.length>0?o+="/..":o="..",s=2)}else o.length>0?o+="/"+a.slice(A+1,c):o=a.slice(A+1,c),s=c-A-1;A=c,u=0}else i===46&&u!==-1?++u:u=-1}return o}wn=1;var t={resolve:function(){for(var a,n="",i=!1,o=arguments.length-1;o>=-1&&!i;o--){var s;o>=0?s=arguments[o]:(a===void 0&&(a=process.cwd()),s=a),r(s),s.length!==0&&(n=s+"/"+n,i=s.charCodeAt(0)===47)}return n=e(n,!i),i?n.length>0?"/"+n:"/":n.length>0?n:"."},normalize:function(a){if(r(a),a.length===0)return".";var n=a.charCodeAt(0)===47,i=a.charCodeAt(a.length-1)===47;return(a=e(a,!n)).length!==0||n||(a="."),a.length>0&&i&&(a+="/"),n?"/"+a:a},isAbsolute:function(a){return r(a),a.length>0&&a.charCodeAt(0)===47},join:function(){if(arguments.length===0)return".";for(var a,n=0;n<arguments.length;++n){var i=arguments[n];r(i),i.length>0&&(a===void 0?a=i:a+="/"+i)}return a===void 0?".":t.normalize(a)},relative:function(a,n){if(r(a),r(n),a===n||(a=t.resolve(a))===(n=t.resolve(n)))return"";for(var i=1;i<a.length&&a.charCodeAt(i)===47;++i);for(var o=a.length,s=o-i,A=1;A<n.length&&n.charCodeAt(A)===47;++A);for(var u=n.length-A,c=s<u?s:u,d=-1,l=0;l<=c;++l){if(l===c){if(u>c){if(n.charCodeAt(A+l)===47)return n.slice(A+l+1);if(l===0)return n.slice(A+l)}else s>c&&(a.charCodeAt(i+l)===47?d=l:l===0&&(d=0));break}var h=a.charCodeAt(i+l);if(h!==n.charCodeAt(A+l))break;h===47&&(d=l)}var b="";for(l=i+d+1;l<=o;++l)l!==o&&a.charCodeAt(l)!==47||(b.length===0?b+="..":b+="/..");return b.length>0?b+n.slice(A+d):(A+=d,n.charCodeAt(A)===47&&++A,n.slice(A))},_makeLong:function(a){return a},dirname:function(a){if(r(a),a.length===0)return".";for(var n=a.charCodeAt(0),i=n===47,o=-1,s=!0,A=a.length-1;A>=1;--A)if((n=a.charCodeAt(A))===47){if(!s){o=A;break}}else s=!1;return o===-1?i?"/":".":i&&o===1?"//":a.slice(0,o)},basename:function(a,n){if(n!==void 0&&typeof n!="string")throw new TypeError('"ext" argument must be a string');r(a);var i,o=0,s=-1,A=!0;if(n!==void 0&&n.length>0&&n.length<=a.length){if(n.length===a.length&&n===a)return"";var u=n.length-1,c=-1;for(i=a.length-1;i>=0;--i){var d=a.charCodeAt(i);if(d===47){if(!A){o=i+1;break}}else c===-1&&(A=!1,c=i+1),u>=0&&(d===n.charCodeAt(u)?--u==-1&&(s=i):(u=-1,s=c))}return o===s?s=c:s===-1&&(s=a.length),a.slice(o,s)}for(i=a.length-1;i>=0;--i)if(a.charCodeAt(i)===47){if(!A){o=i+1;break}}else s===-1&&(A=!1,s=i+1);return s===-1?"":a.slice(o,s)},extname:function(a){r(a);for(var n=-1,i=0,o=-1,s=!0,A=0,u=a.length-1;u>=0;--u){var c=a.charCodeAt(u);if(c!==47)o===-1&&(s=!1,o=u+1),c===46?n===-1?n=u:A!==1&&(A=1):n!==-1&&(A=-1);else if(!s){i=u+1;break}}return n===-1||o===-1||A===0||A===1&&n===o-1&&n===i+1?"":a.slice(n,o)},format:function(a){if(a===null||typeof a!="object")throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof a);return function(n,i){var o=i.dir||i.root,s=i.base||(i.name||"")+(i.ext||"");return o?o===i.root?o+s:o+n+s:s}("/",a)},parse:function(a){r(a);var n={root:"",dir:"",base:"",ext:"",name:""};if(a.length===0)return n;var i,o=a.charCodeAt(0),s=o===47;s?(n.root="/",i=1):i=0;for(var A=-1,u=0,c=-1,d=!0,l=a.length-1,h=0;l>=i;--l)if((o=a.charCodeAt(l))!==47)c===-1&&(d=!1,c=l+1),o===46?A===-1?A=l:h!==1&&(h=1):A!==-1&&(h=-1);else if(!d){u=l+1;break}return A===-1||c===-1||h===0||h===1&&A===c-1&&A===u+1?c!==-1&&(n.base=n.name=u===0&&s?a.slice(1,c):a.slice(u,c)):(u===0&&s?(n.name=a.slice(1,A),n.base=a.slice(1,c)):(n.name=a.slice(u,A),n.base=a.slice(u,c)),n.ext=a.slice(A,c)),u>0?n.dir=a.slice(0,u-1):s&&(n.dir="/"),n},sep:"/",delimiter:":",win32:null,posix:null};return t.posix=t,yn=t}();function oa(){return oa=Object.assign?Object.assign.bind():function(r){for(var e=1;e<arguments.length;e++){var t=arguments[e];for(var a in t)({}).hasOwnProperty.call(t,a)&&(r[a]=t[a])}return r},oa.apply(null,arguments)}var xn={relTol:1e-12,absTol:1e-15,matrix:"Matrix",number:"number",numberFallback:"number",precision:64,predictable:!1,randomSeed:null};function zo(r,e){if(sa(r,e))return r[e];throw typeof r[e]=="function"&&function(t,a){return t==null||typeof t[a]!="function"||ca(t,a)&&Object.getPrototypeOf&&a in Object.getPrototypeOf(t)?!1:ca(qo,a)?!0:!(a in Object.prototype||a in Function.prototype)}(r,e)?new Error('Cannot access method "'+e+'" as a property'):new Error('No access to property "'+e+'"')}function sa(r,e){return!(!function(t){return typeof t=="object"&&t&&t.constructor===Object}(r)&&!Array.isArray(r))&&(!!ca(Po,e)||!(e in Object.prototype)&&!(e in Function.prototype))}var Po={length:!0,name:!0},qo={toString:!0,valueOf:!0,toLocaleString:!0};class Jo{constructor(e){this.wrappedObject=e,this[Symbol.iterator]=this.entries}keys(){return Object.keys(this.wrappedObject).filter(e=>this.has(e)).values()}get(e){return zo(this.wrappedObject,e)}set(e,t){return function(a,n,i){if(sa(a,n))return a[n]=i,i;throw new Error('No access to property "'+n+'"')}(this.wrappedObject,e,t),this}has(e){return sa(this.wrappedObject,e)&&e in this.wrappedObject}entries(){return function(e,t){return{next:()=>{var a=e.next();return a.done?a:{value:t(a.value),done:!1}}}}(this.keys(),e=>[e,this.get(e)])}forEach(e){for(var t of this.keys())e(this.get(t),t,this)}delete(e){sa(this.wrappedObject,e)&&delete this.wrappedObject[e]}clear(){for(var e of this.keys())this.delete(e)}get size(){return Object.keys(this.wrappedObject).length}}function le(r){return typeof r=="number"}function xe(r){return!(!r||typeof r!="object"||typeof r.constructor!="function")&&(r.isBigNumber===!0&&typeof r.constructor.prototype=="object"&&r.constructor.prototype.isBigNumber===!0||typeof r.constructor.isDecimal=="function"&&r.constructor.isDecimal(r)===!0)}function Ko(r){return typeof r=="bigint"}function Fn(r){return r&&typeof r=="object"&&Object.getPrototypeOf(r).isComplex===!0||!1}function Qn(r){return r&&typeof r=="object"&&Object.getPrototypeOf(r).isFraction===!0||!1}function vn(r){return r&&r.constructor.prototype.isUnit===!0||!1}function rt(r){return typeof r=="string"}var ve=Array.isArray;function Be(r){return r&&r.constructor.prototype.isMatrix===!0||!1}function Aa(r){return Array.isArray(r)||Be(r)}function Vo(r){return r&&r.isDenseMatrix&&r.constructor.prototype.isMatrix===!0||!1}function Wo(r){return r&&r.isSparseMatrix&&r.constructor.prototype.isMatrix===!0||!1}function Yo(r){return r&&r.constructor.prototype.isRange===!0||!1}function er(r){return r&&r.constructor.prototype.isIndex===!0||!1}function Xo(r){return typeof r=="boolean"}function Zo(r){return r&&r.constructor.prototype.isResultSet===!0||!1}function $o(r){return r&&r.constructor.prototype.isHelp===!0||!1}function es(r){return typeof r=="function"}function ts(r){return r instanceof Date}function as(r){return r instanceof RegExp}function tr(r){return!(!r||typeof r!="object"||r.constructor!==Object||Fn(r)||Qn(r))}function rs(r){return!!r&&(r instanceof Map||r instanceof Jo||typeof r.set=="function"&&typeof r.get=="function"&&typeof r.keys=="function"&&typeof r.has=="function")}function ns(r){return r===null}function is(r){return r===void 0}function os(r){return r&&r.isAccessorNode===!0&&r.constructor.prototype.isNode===!0||!1}function ss(r){return r&&r.isArrayNode===!0&&r.constructor.prototype.isNode===!0||!1}function As(r){return r&&r.isAssignmentNode===!0&&r.constructor.prototype.isNode===!0||!1}function cs(r){return r&&r.isBlockNode===!0&&r.constructor.prototype.isNode===!0||!1}function us(r){return r&&r.isConditionalNode===!0&&r.constructor.prototype.isNode===!0||!1}function ds(r){return r&&r.isConstantNode===!0&&r.constructor.prototype.isNode===!0||!1}function hs(r){return r&&r.isFunctionAssignmentNode===!0&&r.constructor.prototype.isNode===!0||!1}function bs(r){return r&&r.isFunctionNode===!0&&r.constructor.prototype.isNode===!0||!1}function ls(r){return r&&r.isIndexNode===!0&&r.constructor.prototype.isNode===!0||!1}function gs(r){return r&&r.isNode===!0&&r.constructor.prototype.isNode===!0||!1}function fs(r){return r&&r.isObjectNode===!0&&r.constructor.prototype.isNode===!0||!1}function ps(r){return r&&r.isOperatorNode===!0&&r.constructor.prototype.isNode===!0||!1}function ms(r){return r&&r.isParenthesisNode===!0&&r.constructor.prototype.isNode===!0||!1}function Es(r){return r&&r.isRangeNode===!0&&r.constructor.prototype.isNode===!0||!1}function Cs(r){return r&&r.isRelationalNode===!0&&r.constructor.prototype.isNode===!0||!1}function Is(r){return r&&r.isSymbolNode===!0&&r.constructor.prototype.isNode===!0||!1}function Bs(r){return r&&r.constructor.prototype.isChain===!0||!1}function pt(r){var e=typeof r;return e==="object"?r===null?"null":xe(r)?"BigNumber":r.constructor&&r.constructor.name?r.constructor.name:"Object":e}function De(r){var e=typeof r;if(e==="number"||e==="bigint"||e==="string"||e==="boolean"||r==null)return r;if(typeof r.clone=="function")return r.clone();if(Array.isArray(r))return r.map(function(t){return De(t)});if(r instanceof Date)return new Date(r.valueOf());if(xe(r))return r;if(tr(r))return function(t,a){var n={};for(var i in t)ca(t,i)&&(n[i]=a(t[i]));return n}(r,De);if(e==="function")return r;throw new TypeError("Cannot clone: unknown type of value (value: ".concat(r,")"))}function Nt(r,e){var t,a,n;if(Array.isArray(r)){if(!Array.isArray(e)||r.length!==e.length)return!1;for(a=0,n=r.length;a<n;a++)if(!Nt(r[a],e[a]))return!1;return!0}if(typeof r=="function")return r===e;if(r instanceof Object){if(Array.isArray(e)||!(e instanceof Object))return!1;for(t in r)if(!(t in e)||!Nt(r[t],e[t]))return!1;for(t in e)if(!(t in r))return!1;return!0}return r===e}function ca(r,e){return r&&Object.hasOwnProperty.call(r,e)}var xt=function(r){if(r)throw new Error(`The global config is readonly.
|
|
6
|
+
*/class Gr{constructor(){this._data=new Map,this._link=new Map,this._head=void 0,this._tail=void 0}put(e,t,a=!1){this.has(e)?this._data.set(e,t):(this._data.set(e,t),this._link.set(e,{previous:void 0,next:void 0}),this._head==null?(this._head=e,this._tail=e):a?(this._link.get(this._head).previous=e,this._link.get(e).next=this._head,this._head=e):(this._link.get(this._tail).next=e,this._link.get(e).previous=this._tail,this._tail=e))}head(){return{key:this._head,value:this.get(this._head),next:()=>this.next(this._head),previous:()=>null}}tail(){return{key:this._tail,value:this.get(this._tail),next:()=>null,previous:()=>this.previous(this._tail)}}get(e){return this._data.get(e)}previousKey(e){const t=this._link.get(e);return t!=null?t.previous:void 0}previousValue(e){return this.get(this.previousKey(e))}previous(e){const t=this.previousKey(e);return{key:t,value:this.get(t),next:()=>this.next(t),previous:()=>this.previous(t)}}nextKey(e){const t=this._link.get(e);return t!=null?t.next:void 0}nextValue(e){return this.get(this.nextKey(e))}next(e){const t=this.nextKey(e);return{key:t,value:this.get(t),next:()=>this.next(t),previous:()=>this.previous(t)}}remove(e){const t=this._data.get(e);if(t!=null)if(this.size()===1)this.reset();else{if(e===this._head){const a=this._link.get(this._head);this._link.get(a.next).previous=null,this._head=a.next}else if(e===this._tail){const a=this._link.get(this._tail);this._link.get(a.previous).next=null,this._tail=a.previous}else{const a=this._link.get(e),n=this._link.get(a.previous),i=this._link.get(a.next);n.next=a.next,i.previous=a.previous}this._link.delete(e),this._data.delete(e)}return t}has(e){return this._data.has(e)}size(){return this._data.size}reset(){this._data.clear(),this._link.clear(),this._head=void 0,this._tail=void 0}keys(){return this._data.keys()}values(){return this._data.values()}entries(){return this._data.entries()}toArray(e="orderByInsert"){if(e!=="orderByInsert"){const t=[];let a=this._head;for(;a!=null;)t.push({key:a,value:this.get(a)}),a=this.nextKey(a);return t}return Array.from(this.keys()).map(t=>({key:t,value:this.get(t)}))}}const Xi=new TextDecoder;class _r{constructor(e,t,a,n){this.buffer=e,this.binOffset=t+a,this.binLength=n;let i=null;if(a!==0)try{const o=new Uint8Array(e,t,a);i=JSON.parse(Xi.decode(o))}catch{i={}}else i={};this.header=i}getKeys(){return Object.keys(this.header)}getData(e,t,a=null,n=null){const i=this.header;if(!(e in i))return null;const o=i[e];if(o instanceof Object){if(Array.isArray(o))return o;{const{buffer:s,binOffset:A,binLength:u}=this,c=o.byteOffset||0,d=o.type||n,l=o.componentType||a;if("type"in o&&n&&o.type!==n)throw new Error("FeatureTable: Specified type does not match expected type.");let h,b;switch(d){case"SCALAR":h=1;break;case"VEC2":h=2;break;case"VEC3":h=3;break;case"VEC4":h=4;break;default:throw new Error(`FeatureTable : Feature type not provided for "${e}".`)}const g=A+c,f=t*h;switch(l){case"BYTE":b=new Int8Array(s,g,f);break;case"UNSIGNED_BYTE":b=new Uint8Array(s,g,f);break;case"SHORT":b=new Int16Array(s,g,f);break;case"UNSIGNED_SHORT":b=new Uint16Array(s,g,f);break;case"INT":b=new Int32Array(s,g,f);break;case"UNSIGNED_INT":b=new Uint32Array(s,g,f);break;case"FLOAT":b=new Float32Array(s,g,f);break;case"DOUBLE":b=new Float64Array(s,g,f);break;default:throw new Error(`FeatureTable : Feature component type not provided for "${e}".`)}if(g+f*b.BYTES_PER_ELEMENT>A+u)throw new Error("FeatureTable: Feature data read outside binary body length.");return b}}return o}}class Zi extends _r{constructor(e,t,a,n,i){super(e,a,n,i),this.batchSize=t}getData(e,t=null,a=null){return super.getData(e,this.batchSize,t,a)}}function Hr(r){let e,t,a,n=-1,i=0;for(let u=0;u<r.length;++u){const c=r[u];if(e===void 0&&(e=c.array.constructor),e!==c.array.constructor)return console.error("THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.array must be of consistent array types across matching attributes."),null;if(t===void 0&&(t=c.itemSize),t!==c.itemSize)return console.error("THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.itemSize must be consistent across matching attributes."),null;if(a===void 0&&(a=c.normalized),a!==c.normalized)return console.error("THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.normalized must be consistent across matching attributes."),null;if(n===-1&&(n=c.gpuType),n!==c.gpuType)return console.error("THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.gpuType must be consistent across matching attributes."),null;i+=c.count*t}const o=new e(i),s=new E.BufferAttribute(o,t,a);let A=0;for(let u=0;u<r.length;++u){const c=r[u];if(c.isInterleavedBufferAttribute){const d=A/t;for(let l=0,h=c.count;l<h;l++)for(let b=0;b<t;b++){const g=c.getComponent(l,b);s.setComponent(l+d,b,g)}}else o.set(c.array,A);A+=c.count*t}return n!==void 0&&(s.gpuType=n),s}function Or(r,e){if(e===E.TrianglesDrawMode)return console.warn("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles."),r;if(e===E.TriangleFanDrawMode||e===E.TriangleStripDrawMode){let t=r.getIndex();if(t===null){const o=[],s=r.getAttribute("position");if(s===void 0)return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible."),r;for(let A=0;A<s.count;A++)o.push(A);r.setIndex(o),t=r.getIndex()}const a=t.count-2,n=[];if(e===E.TriangleFanDrawMode)for(let o=1;o<=a;o++)n.push(t.getX(0)),n.push(t.getX(o)),n.push(t.getX(o+1));else for(let o=0;o<a;o++)o%2==0?(n.push(t.getX(o)),n.push(t.getX(o+1)),n.push(t.getX(o+2))):(n.push(t.getX(o+2)),n.push(t.getX(o+1)),n.push(t.getX(o)));n.length/3!==a&&console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unable to generate correct amount of triangles.");const i=r.clone();return i.setIndex(n),i.clearGroups(),i}return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:",e),r}class zr{constructor(e){St(this,"checkLoaderInitialized",async()=>new Promise(e=>{const t=setInterval(()=>{this.gltfLoader.hasDracoLoader&&!this.gltfLoader.dracoLoader||this.gltfLoader.hasKTX2Loader&&!this.gltfLoader.ktx2Loader||(clearInterval(t),e())},10)}));this.gltfLoader=e,this.tempMatrix=new G.Matrix4,this.zUpToYUpMatrix=new G.Matrix4,this.zUpToYUpMatrix.set(1,0,0,0,0,0,-1,0,0,1,0,0,0,0,0,1)}parseB3DM(e,t,a,n){const i=this,o=new DataView(e),s=String.fromCharCode(o.getUint8(0))+String.fromCharCode(o.getUint8(1))+String.fromCharCode(o.getUint8(2))+String.fromCharCode(o.getUint8(3));console.assert(s==="b3dm");const A=o.getUint32(8,!0);console.assert(A===e.byteLength);const u=o.getUint32(12,!0),c=o.getUint32(16,!0),d=o.getUint32(20,!0),l=o.getUint32(24,!0),h=new _r(e,28,u,c),b=28+u+c;new Zi(e,h.getData("BATCH_LENGTH"),b,d,l);const g=b+d+l,f=new Uint8Array(e,g,A-g).slice().buffer;return new Promise(async(m,p)=>{await this.checkLoaderInitialized(),this.gltfLoader.parse(f,null,C=>{const I=h.getData("RTC_CENTER");I?(this.tempMatrix.makeTranslation(I[0],I[1],I[2]),C.scene.applyMatrix4(this.tempMatrix)):C.userData.gltfExtensions&&C.userData.gltfExtensions.CESIUM_RTC&&(this.tempMatrix.makeTranslation(C.userData.gltfExtensions.CESIUM_RTC.center[0],C.userData.gltfExtensions.CESIUM_RTC.center[1],C.userData.gltfExtensions.CESIUM_RTC.center[2]),C.scene.applyMatrix4(this.tempMatrix)),a&&C.scene.applyMatrix4(i.zUpToYUpMatrix),C.scene.asset=C.asset,C.scene.traverse(x=>{x.isMesh&&(n&&x.applyMatrix4(i.zUpToYUpMatrix),t&&t(x))}),m(C.scene)},C=>{console.error(C)})})}parseB3DMInstanced(e,t,a,n,i){return this.parseB3DM(e,t,n,i).then(o=>{let s,A=[],u=[];o.updateWorldMatrix(!1,!0),o.traverse(d=>{d.isMesh&&(d.geometry.applyMatrix4(d.matrixWorld),A.push(d.geometry),u.push(d.material))});let c=function(d){let l=new Set;return d.forEach(b=>{for(let g in b.attributes)l.add(g)}),d.forEach(b=>{l.forEach(g=>{if(!b.attributes[g]){const f=function(p){switch(p){case"position":case"normal":case"color":return 3;case"uv":case"uv2":return 2;default:throw new Error(`Unknown attribute ${p}`)}}(g),m=new Float32Array(f*b.getAttribute("position").count).fill(0);b.setAttribute(g,new G.BufferAttribute(m,f))}})}),function(b,g=!1){const f=b[0].index!==null,m=new Set(Object.keys(b[0].attributes)),p=new Set(Object.keys(b[0].morphAttributes)),C={},I={},x=b[0].morphTargetsRelative,y=new E.BufferGeometry;let F=0;for(let D=0;D<b.length;++D){const v=b[D];let M=0;if(f!==(v.index!==null))return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+D+". All geometries must have compatible attributes; make sure index attribute exists among all geometries, or in none of them."),null;for(const S in v.attributes){if(!m.has(S))return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+D+'. All geometries must have compatible attributes; make sure "'+S+'" attribute exists among all geometries, or in none of them.'),null;C[S]===void 0&&(C[S]=[]),C[S].push(v.attributes[S]),M++}if(M!==m.size)return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+D+". Make sure all geometries have the same number of attributes."),null;if(x!==v.morphTargetsRelative)return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+D+". .morphTargetsRelative must be consistent throughout all geometries."),null;for(const S in v.morphAttributes){if(!p.has(S))return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+D+". .morphAttributes must be consistent throughout all geometries."),null;I[S]===void 0&&(I[S]=[]),I[S].push(v.morphAttributes[S])}if(g){let S;if(f)S=v.index.count;else{if(v.attributes.position===void 0)return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+D+". The geometry must have either an index or a position attribute"),null;S=v.attributes.position.count}y.addGroup(F,S,D),F+=S}}if(f){let D=0;const v=[];for(let M=0;M<b.length;++M){const S=b[M].index;for(let O=0;O<S.count;++O)v.push(S.getX(O)+D);D+=b[M].attributes.position.count}y.setIndex(v)}for(const D in C){const v=Hr(C[D]);if(!v)return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed while trying to merge the "+D+" attribute."),null;y.setAttribute(D,v)}for(const D in I){const v=I[D][0].length;if(v===0)break;y.morphAttributes=y.morphAttributes||{},y.morphAttributes[D]=[];for(let M=0;M<v;++M){const S=[];for(let P=0;P<I[D].length;++P)S.push(I[D][P][M]);const O=Hr(S);if(!O)return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed while trying to merge the "+D+" morphAttribute."),null;y.morphAttributes[D].push(O)}}return y}(d,!0)}(A);return s=new G.InstancedMesh(c,u,a),s.baseMatrix=new G.Matrix4().identity(),s})}}const Me=[];for(let r=0;r<256;++r)Me.push((r+256).toString(16).slice(1));let Na;const $i=new Uint8Array(16),Pr={randomUUID:typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function qr(r,e,t){var n;if(Pr.randomUUID&&!r)return Pr.randomUUID();const a=(r=r||{}).random??((n=r.rng)==null?void 0:n.call(r))??function(){if(!Na){if(typeof crypto>"u"||!crypto.getRandomValues)throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");Na=crypto.getRandomValues.bind(crypto)}return Na($i)}();if(a.length<16)throw new Error("Random bytes length must be >= 16");return a[6]=15&a[6]|64,a[8]=63&a[8]|128,function(i,o=0){return(Me[i[o+0]]+Me[i[o+1]]+Me[i[o+2]]+Me[i[o+3]]+"-"+Me[i[o+4]]+Me[i[o+5]]+"-"+Me[i[o+6]]+Me[i[o+7]]+"-"+Me[i[o+8]]+Me[i[o+9]]+"-"+Me[i[o+10]]+Me[i[o+11]]+Me[i[o+12]]+Me[i[o+13]]+Me[i[o+14]]+Me[i[o+15]]).toLowerCase()}(a)}class eo{constructor(e,t){St(this,"checkLoaderInitialized",async()=>{const e=this;return new Promise(t=>{const a=setInterval(()=>{e.gltfLoader.hasDracoLoader&&!e.gltfLoader.dracoLoader||e.gltfLoader.hasKTX2Loader&&!e.gltfLoader.ktx2Loader||(clearInterval(a),t())},10)})});this.renderer=t,this.gltfLoader=e}parseSplats(e,t,a,n){const i=this;return new Promise(async(o,s)=>{await i.checkLoaderInitialized(),i.gltfLoader.parse(e,null,A=>{A.scene;const u=A.scene.children[0],c=u.geometry.attributes.position,d=u.geometry.attributes.color,l=u.geometry.attributes.cov_0,h=u.geometry.attributes.cov_1,b=n.addSplatsTile(c,d,l,h);A.scene.traverse(g=>{g.dispose&&g.dispose()}),o(b)},A=>{console.error(A)})})}}class Jr extends E.Loader{constructor(e){super(e),this.dracoLoader=null,this.ktx2Loader=null,this.meshoptDecoder=null,this.pluginCallbacks=[],this.register(function(t){return new io(t)}),this.register(function(t){return new oo(t)}),this.register(function(t){return new fo(t)}),this.register(function(t){return new po(t)}),this.register(function(t){return new mo(t)}),this.register(function(t){return new Ao(t)}),this.register(function(t){return new co(t)}),this.register(function(t){return new uo(t)}),this.register(function(t){return new ho(t)}),this.register(function(t){return new no(t)}),this.register(function(t){return new bo(t)}),this.register(function(t){return new so(t)}),this.register(function(t){return new go(t)}),this.register(function(t){return new lo(t)}),this.register(function(t){return new ao(t)}),this.register(function(t){return new Eo(t)}),this.register(function(t){return new Co(t)})}load(e,t,a,n){const i=this;let o;if(this.resourcePath!=="")o=this.resourcePath;else if(this.path!==""){const u=E.LoaderUtils.extractUrlBase(e);o=E.LoaderUtils.resolveURL(u,this.path)}else o=E.LoaderUtils.extractUrlBase(e);this.manager.itemStart(e);const s=function(u){n?n(u):console.error(u),i.manager.itemError(e),i.manager.itemEnd(e)},A=new E.FileLoader(this.manager);A.setPath(this.path),A.setResponseType("arraybuffer"),A.setRequestHeader(this.requestHeader),A.setWithCredentials(this.withCredentials),A.load(e,function(u){try{i.parse(u,o,function(c){t(c),i.manager.itemEnd(e)},s)}catch(c){s(c)}},a,s)}setDRACOLoader(e){return this.dracoLoader=e,this}setKTX2Loader(e){return this.ktx2Loader=e,this}setMeshoptDecoder(e){return this.meshoptDecoder=e,this}register(e){return this.pluginCallbacks.indexOf(e)===-1&&this.pluginCallbacks.push(e),this}unregister(e){return this.pluginCallbacks.indexOf(e)!==-1&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(e),1),this}parse(e,t,a,n){let i;const o={},s={},A=new TextDecoder;if(typeof e=="string")i=JSON.parse(e);else if(e instanceof ArrayBuffer)if(A.decode(new Uint8Array(e,0,4))===Kr){try{o[te.KHR_BINARY_GLTF]=new Do(e)}catch(c){return void(n&&n(c))}i=JSON.parse(o[te.KHR_BINARY_GLTF].content)}else i=JSON.parse(A.decode(e));else i=e;if(i.asset===void 0||i.asset.version[0]<2)return void(n&&n(new Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported.")));const u=new No(i,{path:t||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});u.fileLoader.setRequestHeader(this.requestHeader);for(let c=0;c<this.pluginCallbacks.length;c++){const d=this.pluginCallbacks[c](u);d.name||console.error("THREE.GLTFLoader: Invalid plugin found: missing name"),s[d.name]=d,o[d.name]=!0}if(i.extensionsUsed)for(let c=0;c<i.extensionsUsed.length;++c){const d=i.extensionsUsed[c],l=i.extensionsRequired||[];switch(d){case te.KHR_MATERIALS_UNLIT:o[d]=new ro;break;case te.KHR_DRACO_MESH_COMPRESSION:o[d]=new yo(i,this.dracoLoader);break;case te.KHR_TEXTURE_TRANSFORM:o[d]=new wo;break;case te.KHR_MESH_QUANTIZATION:o[d]=new xo;break;default:l.indexOf(d)>=0&&s[d]===void 0&&console.warn('THREE.GLTFLoader: Unknown extension "'+d+'".')}}u.setExtensions(o),u.setPlugins(s),u.parse(a,n)}parseAsync(e,t){const a=this;return new Promise(function(n,i){a.parse(e,t,n,i)})}}function to(){let r={};return{get:function(e){return r[e]},add:function(e,t){r[e]=t},remove:function(e){delete r[e]},removeAll:function(){r={}}}}const te={KHR_BINARY_GLTF:"KHR_binary_glTF",KHR_DRACO_MESH_COMPRESSION:"KHR_draco_mesh_compression",KHR_LIGHTS_PUNCTUAL:"KHR_lights_punctual",KHR_MATERIALS_CLEARCOAT:"KHR_materials_clearcoat",KHR_MATERIALS_DISPERSION:"KHR_materials_dispersion",KHR_MATERIALS_IOR:"KHR_materials_ior",KHR_MATERIALS_SHEEN:"KHR_materials_sheen",KHR_MATERIALS_SPECULAR:"KHR_materials_specular",KHR_MATERIALS_TRANSMISSION:"KHR_materials_transmission",KHR_MATERIALS_IRIDESCENCE:"KHR_materials_iridescence",KHR_MATERIALS_ANISOTROPY:"KHR_materials_anisotropy",KHR_MATERIALS_UNLIT:"KHR_materials_unlit",KHR_MATERIALS_VOLUME:"KHR_materials_volume",KHR_TEXTURE_BASISU:"KHR_texture_basisu",KHR_TEXTURE_TRANSFORM:"KHR_texture_transform",KHR_MESH_QUANTIZATION:"KHR_mesh_quantization",KHR_MATERIALS_EMISSIVE_STRENGTH:"KHR_materials_emissive_strength",EXT_MATERIALS_BUMP:"EXT_materials_bump",EXT_TEXTURE_WEBP:"EXT_texture_webp",EXT_TEXTURE_AVIF:"EXT_texture_avif",EXT_MESHOPT_COMPRESSION:"EXT_meshopt_compression",EXT_MESH_GPU_INSTANCING:"EXT_mesh_gpu_instancing"};class ao{constructor(e){this.parser=e,this.name=te.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){const e=this.parser,t=this.parser.json.nodes||[];for(let a=0,n=t.length;a<n;a++){const i=t[a];i.extensions&&i.extensions[this.name]&&i.extensions[this.name].light!==void 0&&e._addNodeRef(this.cache,i.extensions[this.name].light)}}_loadLight(e){const t=this.parser,a="light:"+e;let n=t.cache.get(a);if(n)return n;const i=t.json,o=((i.extensions&&i.extensions[this.name]||{}).lights||[])[e];let s;const A=new E.Color(16777215);o.color!==void 0&&A.setRGB(o.color[0],o.color[1],o.color[2],E.LinearSRGBColorSpace);const u=o.range!==void 0?o.range:0;switch(o.type){case"directional":s=new E.DirectionalLight(A),s.target.position.set(0,0,-1),s.add(s.target);break;case"point":s=new E.PointLight(A),s.distance=u;break;case"spot":s=new E.SpotLight(A),s.distance=u,o.spot=o.spot||{},o.spot.innerConeAngle=o.spot.innerConeAngle!==void 0?o.spot.innerConeAngle:0,o.spot.outerConeAngle=o.spot.outerConeAngle!==void 0?o.spot.outerConeAngle:Math.PI/4,s.angle=o.spot.outerConeAngle,s.penumbra=1-o.spot.innerConeAngle/o.spot.outerConeAngle,s.target.position.set(0,0,-1),s.add(s.target);break;default:throw new Error("THREE.GLTFLoader: Unexpected light type: "+o.type)}return s.position.set(0,0,0),At(s,o),o.intensity!==void 0&&(s.intensity=o.intensity),s.name=t.createUniqueName(o.name||"light_"+e),n=Promise.resolve(s),t.cache.add(a,n),n}getDependency(e,t){if(e==="light")return this._loadLight(t)}createNodeAttachment(e){const t=this,a=this.parser,n=a.json.nodes[e],i=(n.extensions&&n.extensions[this.name]||{}).light;return i===void 0?null:this._loadLight(i).then(function(o){return a._getNodeRef(t.cache,i,o)})}}class ro{constructor(){this.name=te.KHR_MATERIALS_UNLIT}getMaterialType(){return E.MeshBasicMaterial}extendParams(e,t,a){const n=[];e.color=new E.Color(1,1,1),e.opacity=1;const i=t.pbrMetallicRoughness;if(i){if(Array.isArray(i.baseColorFactor)){const o=i.baseColorFactor;e.color.setRGB(o[0],o[1],o[2],E.LinearSRGBColorSpace),e.opacity=o[3]}i.baseColorTexture!==void 0&&n.push(a.assignTexture(e,"map",i.baseColorTexture,E.SRGBColorSpace))}return Promise.all(n)}}class no{constructor(e){this.parser=e,this.name=te.KHR_MATERIALS_EMISSIVE_STRENGTH}extendMaterialParams(e,t){const a=this.parser.json.materials[e];if(!a.extensions||!a.extensions[this.name])return Promise.resolve();const n=a.extensions[this.name].emissiveStrength;return n!==void 0&&(t.emissiveIntensity=n),Promise.resolve()}}class io{constructor(e){this.parser=e,this.name=te.KHR_MATERIALS_CLEARCOAT}getMaterialType(e){const t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?E.MeshPhysicalMaterial:null}extendMaterialParams(e,t){const a=this.parser,n=a.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();const i=[],o=n.extensions[this.name];if(o.clearcoatFactor!==void 0&&(t.clearcoat=o.clearcoatFactor),o.clearcoatTexture!==void 0&&i.push(a.assignTexture(t,"clearcoatMap",o.clearcoatTexture)),o.clearcoatRoughnessFactor!==void 0&&(t.clearcoatRoughness=o.clearcoatRoughnessFactor),o.clearcoatRoughnessTexture!==void 0&&i.push(a.assignTexture(t,"clearcoatRoughnessMap",o.clearcoatRoughnessTexture)),o.clearcoatNormalTexture!==void 0&&(i.push(a.assignTexture(t,"clearcoatNormalMap",o.clearcoatNormalTexture)),o.clearcoatNormalTexture.scale!==void 0)){const s=o.clearcoatNormalTexture.scale;t.clearcoatNormalScale=new E.Vector2(s,s)}return Promise.all(i)}}class oo{constructor(e){this.parser=e,this.name=te.KHR_MATERIALS_DISPERSION}getMaterialType(e){const t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?E.MeshPhysicalMaterial:null}extendMaterialParams(e,t){const a=this.parser.json.materials[e];if(!a.extensions||!a.extensions[this.name])return Promise.resolve();const n=a.extensions[this.name];return t.dispersion=n.dispersion!==void 0?n.dispersion:0,Promise.resolve()}}class so{constructor(e){this.parser=e,this.name=te.KHR_MATERIALS_IRIDESCENCE}getMaterialType(e){const t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?E.MeshPhysicalMaterial:null}extendMaterialParams(e,t){const a=this.parser,n=a.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();const i=[],o=n.extensions[this.name];return o.iridescenceFactor!==void 0&&(t.iridescence=o.iridescenceFactor),o.iridescenceTexture!==void 0&&i.push(a.assignTexture(t,"iridescenceMap",o.iridescenceTexture)),o.iridescenceIor!==void 0&&(t.iridescenceIOR=o.iridescenceIor),t.iridescenceThicknessRange===void 0&&(t.iridescenceThicknessRange=[100,400]),o.iridescenceThicknessMinimum!==void 0&&(t.iridescenceThicknessRange[0]=o.iridescenceThicknessMinimum),o.iridescenceThicknessMaximum!==void 0&&(t.iridescenceThicknessRange[1]=o.iridescenceThicknessMaximum),o.iridescenceThicknessTexture!==void 0&&i.push(a.assignTexture(t,"iridescenceThicknessMap",o.iridescenceThicknessTexture)),Promise.all(i)}}class Ao{constructor(e){this.parser=e,this.name=te.KHR_MATERIALS_SHEEN}getMaterialType(e){const t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?E.MeshPhysicalMaterial:null}extendMaterialParams(e,t){const a=this.parser,n=a.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();const i=[];t.sheenColor=new E.Color(0,0,0),t.sheenRoughness=0,t.sheen=1;const o=n.extensions[this.name];if(o.sheenColorFactor!==void 0){const s=o.sheenColorFactor;t.sheenColor.setRGB(s[0],s[1],s[2],E.LinearSRGBColorSpace)}return o.sheenRoughnessFactor!==void 0&&(t.sheenRoughness=o.sheenRoughnessFactor),o.sheenColorTexture!==void 0&&i.push(a.assignTexture(t,"sheenColorMap",o.sheenColorTexture,E.SRGBColorSpace)),o.sheenRoughnessTexture!==void 0&&i.push(a.assignTexture(t,"sheenRoughnessMap",o.sheenRoughnessTexture)),Promise.all(i)}}class co{constructor(e){this.parser=e,this.name=te.KHR_MATERIALS_TRANSMISSION}getMaterialType(e){const t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?E.MeshPhysicalMaterial:null}extendMaterialParams(e,t){const a=this.parser,n=a.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();const i=[],o=n.extensions[this.name];return o.transmissionFactor!==void 0&&(t.transmission=o.transmissionFactor),o.transmissionTexture!==void 0&&i.push(a.assignTexture(t,"transmissionMap",o.transmissionTexture)),Promise.all(i)}}class uo{constructor(e){this.parser=e,this.name=te.KHR_MATERIALS_VOLUME}getMaterialType(e){const t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?E.MeshPhysicalMaterial:null}extendMaterialParams(e,t){const a=this.parser,n=a.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();const i=[],o=n.extensions[this.name];t.thickness=o.thicknessFactor!==void 0?o.thicknessFactor:0,o.thicknessTexture!==void 0&&i.push(a.assignTexture(t,"thicknessMap",o.thicknessTexture)),t.attenuationDistance=o.attenuationDistance||1/0;const s=o.attenuationColor||[1,1,1];return t.attenuationColor=new E.Color().setRGB(s[0],s[1],s[2],E.LinearSRGBColorSpace),Promise.all(i)}}class ho{constructor(e){this.parser=e,this.name=te.KHR_MATERIALS_IOR}getMaterialType(e){const t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?E.MeshPhysicalMaterial:null}extendMaterialParams(e,t){const a=this.parser.json.materials[e];if(!a.extensions||!a.extensions[this.name])return Promise.resolve();const n=a.extensions[this.name];return t.ior=n.ior!==void 0?n.ior:1.5,Promise.resolve()}}class bo{constructor(e){this.parser=e,this.name=te.KHR_MATERIALS_SPECULAR}getMaterialType(e){const t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?E.MeshPhysicalMaterial:null}extendMaterialParams(e,t){const a=this.parser,n=a.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();const i=[],o=n.extensions[this.name];t.specularIntensity=o.specularFactor!==void 0?o.specularFactor:1,o.specularTexture!==void 0&&i.push(a.assignTexture(t,"specularIntensityMap",o.specularTexture));const s=o.specularColorFactor||[1,1,1];return t.specularColor=new E.Color().setRGB(s[0],s[1],s[2],E.LinearSRGBColorSpace),o.specularColorTexture!==void 0&&i.push(a.assignTexture(t,"specularColorMap",o.specularColorTexture,E.SRGBColorSpace)),Promise.all(i)}}class lo{constructor(e){this.parser=e,this.name=te.EXT_MATERIALS_BUMP}getMaterialType(e){const t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?E.MeshPhysicalMaterial:null}extendMaterialParams(e,t){const a=this.parser,n=a.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();const i=[],o=n.extensions[this.name];return t.bumpScale=o.bumpFactor!==void 0?o.bumpFactor:1,o.bumpTexture!==void 0&&i.push(a.assignTexture(t,"bumpMap",o.bumpTexture)),Promise.all(i)}}class go{constructor(e){this.parser=e,this.name=te.KHR_MATERIALS_ANISOTROPY}getMaterialType(e){const t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?E.MeshPhysicalMaterial:null}extendMaterialParams(e,t){const a=this.parser,n=a.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();const i=[],o=n.extensions[this.name];return o.anisotropyStrength!==void 0&&(t.anisotropy=o.anisotropyStrength),o.anisotropyRotation!==void 0&&(t.anisotropyRotation=o.anisotropyRotation),o.anisotropyTexture!==void 0&&i.push(a.assignTexture(t,"anisotropyMap",o.anisotropyTexture)),Promise.all(i)}}class fo{constructor(e){this.parser=e,this.name=te.KHR_TEXTURE_BASISU}loadTexture(e){const t=this.parser,a=t.json,n=a.textures[e];if(!n.extensions||!n.extensions[this.name])return null;const i=n.extensions[this.name],o=t.options.ktx2Loader;if(!o){if(a.extensionsRequired&&a.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures");return null}return t.loadTextureImage(e,i.source,o)}}class po{constructor(e){this.parser=e,this.name=te.EXT_TEXTURE_WEBP}loadTexture(e){const t=this.name,a=this.parser,n=a.json,i=n.textures[e];if(!i.extensions||!i.extensions[t])return null;const o=i.extensions[t],s=n.images[o.source];let A=a.textureLoader;if(s.uri){const u=a.options.manager.getHandler(s.uri);u!==null&&(A=u)}return a.loadTextureImage(e,o.source,A)}}class mo{constructor(e){this.parser=e,this.name=te.EXT_TEXTURE_AVIF}loadTexture(e){const t=this.name,a=this.parser,n=a.json,i=n.textures[e];if(!i.extensions||!i.extensions[t])return null;const o=i.extensions[t],s=n.images[o.source];let A=a.textureLoader;if(s.uri){const u=a.options.manager.getHandler(s.uri);u!==null&&(A=u)}return a.loadTextureImage(e,o.source,A)}}class Eo{constructor(e){this.name=te.EXT_MESHOPT_COMPRESSION,this.parser=e}loadBufferView(e){const t=this.parser.json,a=t.bufferViews[e];if(a.extensions&&a.extensions[this.name]){const n=a.extensions[this.name],i=this.parser.getDependency("buffer",n.buffer),o=this.parser.options.meshoptDecoder;if(!o||!o.supported){if(t.extensionsRequired&&t.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files");return null}return i.then(function(s){const A=n.byteOffset||0,u=n.byteLength||0,c=n.count,d=n.byteStride,l=new Uint8Array(s,A,u);return o.decodeGltfBufferAsync?o.decodeGltfBufferAsync(c,d,l,n.mode,n.filter).then(function(h){return h.buffer}):o.ready.then(function(){const h=new ArrayBuffer(c*d);return o.decodeGltfBuffer(new Uint8Array(h),c,d,l,n.mode,n.filter),h})})}return null}}class Co{constructor(e){this.name=te.EXT_MESH_GPU_INSTANCING,this.parser=e}createNodeMesh(e){const t=this.parser.json,a=t.nodes[e];if(!a.extensions||!a.extensions[this.name]||a.mesh===void 0)return null;const n=t.meshes[a.mesh];for(const A of n.primitives)if(A.mode!==Ke.TRIANGLES&&A.mode!==Ke.TRIANGLE_STRIP&&A.mode!==Ke.TRIANGLE_FAN&&A.mode!==void 0)return null;const i=a.extensions[this.name].attributes,o=[],s={};for(const A in i)o.push(this.parser.getDependency("accessor",i[A]).then(u=>(s[A]=u,s[A])));return o.length<1?null:(o.push(this.parser.createNodeMesh(e)),Promise.all(o).then(A=>{const u=A.pop(),c=u.isGroup?u.children:[u],d=A[0].count,l=[];for(const h of c){const b=new E.Matrix4,g=new E.Vector3,f=new E.Quaternion,m=new E.Vector3(1,1,1),p=new E.InstancedMesh(h.geometry,h.material,d);for(let C=0;C<d;C++)s.TRANSLATION&&g.fromBufferAttribute(s.TRANSLATION,C),s.ROTATION&&f.fromBufferAttribute(s.ROTATION,C),s.SCALE&&m.fromBufferAttribute(s.SCALE,C),p.setMatrixAt(C,b.compose(g,f,m));for(const C in s)if(C==="_COLOR_0"){const I=s[C];p.instanceColor=new E.InstancedBufferAttribute(I.array,I.itemSize,I.normalized)}else C!=="TRANSLATION"&&C!=="ROTATION"&&C!=="SCALE"&&h.geometry.setAttribute(C,s[C]);E.Object3D.prototype.copy.call(p,h),this.parser.assignFinalMaterial(p),l.push(p)}return u.isGroup?(u.clear(),u.add(...l),u):l[0]}))}}const Kr="glTF",Io=1313821514,Bo=5130562;class Do{constructor(e){this.name=te.KHR_BINARY_GLTF,this.content=null,this.body=null;const t=new DataView(e,0,12),a=new TextDecoder;if(this.header={magic:a.decode(new Uint8Array(e.slice(0,4))),version:t.getUint32(4,!0),length:t.getUint32(8,!0)},this.header.magic!==Kr)throw new Error("THREE.GLTFLoader: Unsupported glTF-Binary header.");if(this.header.version<2)throw new Error("THREE.GLTFLoader: Legacy binary file detected.");const n=this.header.length-12,i=new DataView(e,12);let o=0;for(;o<n;){const s=i.getUint32(o,!0);o+=4;const A=i.getUint32(o,!0);if(o+=4,A===Io){const u=new Uint8Array(e,12+o,s);this.content=a.decode(u)}else if(A===Bo){const u=12+o;this.body=e.slice(u,u+s)}o+=s}if(this.content===null)throw new Error("THREE.GLTFLoader: JSON content not found.")}}class yo{constructor(e,t){if(!t)throw new Error("THREE.GLTFLoader: No DRACOLoader instance provided.");this.name=te.KHR_DRACO_MESH_COMPRESSION,this.json=e,this.dracoLoader=t,this.dracoLoader.preload()}decodePrimitive(e,t){const a=this.json,n=this.dracoLoader,i=e.extensions[this.name].bufferView,o=e.extensions[this.name].attributes,s={},A={},u={};for(const c in o){const d=La[c]||c.toLowerCase();s[d]=o[c]}for(const c in e.attributes){const d=La[c]||c.toLowerCase();if(o[c]!==void 0){const l=a.accessors[e.attributes[c]],h=Tt[l.componentType];u[d]=h.name,A[d]=l.normalized===!0}}return t.getDependency("bufferView",i).then(function(c){return new Promise(function(d,l){n.decodeDracoFile(c,function(h){for(const b in h.attributes){const g=h.attributes[b],f=A[b];f!==void 0&&(g.normalized=f)}d(h)},s,u,E.LinearSRGBColorSpace,l)})})}}class wo{constructor(){this.name=te.KHR_TEXTURE_TRANSFORM}extendTexture(e,t){return(t.texCoord!==void 0&&t.texCoord!==e.channel||t.offset!==void 0||t.rotation!==void 0||t.scale!==void 0)&&(e=e.clone(),t.texCoord!==void 0&&(e.channel=t.texCoord),t.offset!==void 0&&e.offset.fromArray(t.offset),t.rotation!==void 0&&(e.rotation=t.rotation),t.scale!==void 0&&e.repeat.fromArray(t.scale),e.needsUpdate=!0),e}}class xo{constructor(){this.name=te.KHR_MESH_QUANTIZATION}}class Vr extends E.Interpolant{constructor(e,t,a,n){super(e,t,a,n)}copySampleValue_(e){const t=this.resultBuffer,a=this.sampleValues,n=this.valueSize,i=e*n*3+n;for(let o=0;o!==n;o++)t[o]=a[i+o];return t}interpolate_(e,t,a,n){const i=this.resultBuffer,o=this.sampleValues,s=this.valueSize,A=2*s,u=3*s,c=n-t,d=(a-t)/c,l=d*d,h=l*d,b=e*u,g=b-u,f=-2*h+3*l,m=h-l,p=1-f,C=m-l+d;for(let I=0;I!==s;I++){const x=o[g+I+s],y=o[g+I+A]*c,F=o[b+I+s],D=o[b+I]*c;i[I]=p*x+C*y+f*F+m*D}return i}}const Fo=new E.Quaternion;class vo extends Vr{interpolate_(e,t,a,n){const i=super.interpolate_(e,t,a,n);return Fo.fromArray(i).normalize().toArray(i),i}}const Ke={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6},Tt={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},Wr={9728:E.NearestFilter,9729:E.LinearFilter,9984:E.NearestMipmapNearestFilter,9985:E.LinearMipmapNearestFilter,9986:E.NearestMipmapLinearFilter,9987:E.LinearMipmapLinearFilter},Yr={33071:E.ClampToEdgeWrapping,33648:E.MirroredRepeatWrapping,10497:E.RepeatWrapping},Ua={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},La={POSITION:"position",NORMAL:"normal",TANGENT:"tangent",TEXCOORD_0:"uv",TEXCOORD_1:"uv1",TEXCOORD_2:"uv2",TEXCOORD_3:"uv3",COLOR_0:"color",WEIGHTS_0:"skinWeight",JOINTS_0:"skinIndex"},gt={scale:"scale",translation:"position",rotation:"quaternion",weights:"morphTargetInfluences"},Qo={CUBICSPLINE:void 0,LINEAR:E.InterpolateLinear,STEP:E.InterpolateDiscrete},ko="OPAQUE",jo="MASK",Mo="BLEND";function wt(r,e,t){for(const a in t.extensions)r[a]===void 0&&(e.userData.gltfExtensions=e.userData.gltfExtensions||{},e.userData.gltfExtensions[a]=t.extensions[a])}function At(r,e){e.extras!==void 0&&(typeof e.extras=="object"?Object.assign(r.userData,e.extras):console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, "+e.extras))}function So(r,e){if(r.updateMorphTargets(),e.weights!==void 0)for(let t=0,a=e.weights.length;t<a;t++)r.morphTargetInfluences[t]=e.weights[t];if(e.extras&&Array.isArray(e.extras.targetNames)){const t=e.extras.targetNames;if(r.morphTargetInfluences.length===t.length){r.morphTargetDictionary={};for(let a=0,n=t.length;a<n;a++)r.morphTargetDictionary[t[a]]=a}else console.warn("THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.")}}function Ro(r){let e;const t=r.extensions&&r.extensions[te.KHR_DRACO_MESH_COMPRESSION];if(e=t?"draco:"+t.bufferView+":"+t.indices+":"+Ga(t.attributes):r.indices+":"+Ga(r.attributes)+":"+r.mode,r.targets!==void 0)for(let a=0,n=r.targets.length;a<n;a++)e+=":"+Ga(r.targets[a]);return e}function Ga(r){let e="";const t=Object.keys(r).sort();for(let a=0,n=t.length;a<n;a++)e+=t[a]+":"+r[t[a]]+";";return e}function _a(r){switch(r){case Int8Array:return 1/127;case Uint8Array:return 1/255;case Int16Array:return 1/32767;case Uint16Array:return 1/65535;default:throw new Error("THREE.GLTFLoader: Unsupported normalized accessor component type.")}}const To=new E.Matrix4;class No{constructor(e={},t={}){this.json=e,this.extensions={},this.plugins={},this.options=t,this.cache=new to,this.associations=new Map,this.primitiveCache={},this.nodeCache={},this.meshCache={refs:{},uses:{}},this.cameraCache={refs:{},uses:{}},this.lightCache={refs:{},uses:{}},this.sourceCache={},this.textureCache={},this.nodeNamesUsed={};let a=!1,n=-1,i=!1,o=-1;if(typeof navigator<"u"){const s=navigator.userAgent;a=/^((?!chrome|android).)*safari/i.test(s)===!0;const A=s.match(/Version\/(\d+)/);n=a&&A?parseInt(A[1],10):-1,i=s.indexOf("Firefox")>-1,o=i?s.match(/Firefox\/([0-9]+)\./)[1]:-1}typeof createImageBitmap>"u"||a&&n<17||i&&o<98?this.textureLoader=new E.TextureLoader(this.options.manager):this.textureLoader=new E.ImageBitmapLoader(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new E.FileLoader(this.options.manager),this.fileLoader.setResponseType("arraybuffer"),this.options.crossOrigin==="use-credentials"&&this.fileLoader.setWithCredentials(!0)}setExtensions(e){this.extensions=e}setPlugins(e){this.plugins=e}parse(e,t){const a=this,n=this.json,i=this.extensions;this.cache.removeAll(),this.nodeCache={},this._invokeAll(function(o){return o._markDefs&&o._markDefs()}),Promise.all(this._invokeAll(function(o){return o.beforeRoot&&o.beforeRoot()})).then(function(){return Promise.all([a.getDependencies("scene"),a.getDependencies("animation"),a.getDependencies("camera")])}).then(function(o){const s={scene:o[0][n.scene||0],scenes:o[0],animations:o[1],cameras:o[2],asset:n.asset,parser:a,userData:{}};return wt(i,s,n),At(s,n),Promise.all(a._invokeAll(function(A){return A.afterRoot&&A.afterRoot(s)})).then(function(){for(const A of s.scenes)A.updateMatrixWorld();e(s)})}).catch(t)}_markDefs(){const e=this.json.nodes||[],t=this.json.skins||[],a=this.json.meshes||[];for(let n=0,i=t.length;n<i;n++){const o=t[n].joints;for(let s=0,A=o.length;s<A;s++)e[o[s]].isBone=!0}for(let n=0,i=e.length;n<i;n++){const o=e[n];o.mesh!==void 0&&(this._addNodeRef(this.meshCache,o.mesh),o.skin!==void 0&&(a[o.mesh].isSkinnedMesh=!0)),o.camera!==void 0&&this._addNodeRef(this.cameraCache,o.camera)}}_addNodeRef(e,t){t!==void 0&&(e.refs[t]===void 0&&(e.refs[t]=e.uses[t]=0),e.refs[t]++)}_getNodeRef(e,t,a){if(e.refs[t]<=1)return a;const n=a.clone(),i=(o,s)=>{const A=this.associations.get(o);A!=null&&this.associations.set(s,A);for(const[u,c]of o.children.entries())i(c,s.children[u])};return i(a,n),n.name+="_instance_"+e.uses[t]++,n}_invokeOne(e){const t=Object.values(this.plugins);t.push(this);for(let a=0;a<t.length;a++){const n=e(t[a]);if(n)return n}return null}_invokeAll(e){const t=Object.values(this.plugins);t.unshift(this);const a=[];for(let n=0;n<t.length;n++){const i=e(t[n]);i&&a.push(i)}return a}getDependency(e,t){const a=e+":"+t;let n=this.cache.get(a);if(!n){switch(e){case"scene":n=this.loadScene(t);break;case"node":n=this._invokeOne(function(i){return i.loadNode&&i.loadNode(t)});break;case"mesh":n=this._invokeOne(function(i){return i.loadMesh&&i.loadMesh(t)});break;case"accessor":n=this.loadAccessor(t);break;case"bufferView":n=this._invokeOne(function(i){return i.loadBufferView&&i.loadBufferView(t)});break;case"buffer":n=this.loadBuffer(t);break;case"material":n=this._invokeOne(function(i){return i.loadMaterial&&i.loadMaterial(t)});break;case"texture":n=this._invokeOne(function(i){return i.loadTexture&&i.loadTexture(t)});break;case"skin":n=this.loadSkin(t);break;case"animation":n=this._invokeOne(function(i){return i.loadAnimation&&i.loadAnimation(t)});break;case"camera":n=this.loadCamera(t);break;default:if(n=this._invokeOne(function(i){return i!=this&&i.getDependency&&i.getDependency(e,t)}),!n)throw new Error("Unknown type: "+e)}this.cache.add(a,n)}return n}getDependencies(e){let t=this.cache.get(e);if(!t){const a=this,n=this.json[e+(e==="mesh"?"es":"s")]||[];t=Promise.all(n.map(function(i,o){return a.getDependency(e,o)})),this.cache.add(e,t)}return t}loadBuffer(e){const t=this.json.buffers[e],a=this.fileLoader;if(t.type&&t.type!=="arraybuffer")throw new Error("THREE.GLTFLoader: "+t.type+" buffer type is not supported.");if(t.uri===void 0&&e===0)return Promise.resolve(this.extensions[te.KHR_BINARY_GLTF].body);const n=this.options;return new Promise(function(i,o){a.load(E.LoaderUtils.resolveURL(t.uri,n.path),i,void 0,function(){o(new Error('THREE.GLTFLoader: Failed to load buffer "'+t.uri+'".'))})})}loadBufferView(e){const t=this.json.bufferViews[e];return this.getDependency("buffer",t.buffer).then(function(a){const n=t.byteLength||0,i=t.byteOffset||0;return a.slice(i,i+n)})}loadAccessor(e){const t=this,a=this.json,n=this.json.accessors[e];if(n.bufferView===void 0&&n.sparse===void 0){const o=Ua[n.type],s=Tt[n.componentType],A=n.normalized===!0,u=new s(n.count*o);return Promise.resolve(new E.BufferAttribute(u,o,A))}const i=[];return n.bufferView!==void 0?i.push(this.getDependency("bufferView",n.bufferView)):i.push(null),n.sparse!==void 0&&(i.push(this.getDependency("bufferView",n.sparse.indices.bufferView)),i.push(this.getDependency("bufferView",n.sparse.values.bufferView))),Promise.all(i).then(function(o){const s=o[0],A=Ua[n.type],u=Tt[n.componentType],c=u.BYTES_PER_ELEMENT,d=c*A,l=n.byteOffset||0,h=n.bufferView!==void 0?a.bufferViews[n.bufferView].byteStride:void 0,b=n.normalized===!0;let g,f;if(h&&h!==d){const m=Math.floor(l/h),p="InterleavedBuffer:"+n.bufferView+":"+n.componentType+":"+m+":"+n.count;let C=t.cache.get(p);C||(g=new u(s,m*h,n.count*h/c),C=new E.InterleavedBuffer(g,h/c),t.cache.add(p,C)),f=new E.InterleavedBufferAttribute(C,A,l%h/c,b)}else g=s===null?new u(n.count*A):new u(s,l,n.count*A),f=new E.BufferAttribute(g,A,b);if(n.sparse!==void 0){const m=Ua.SCALAR,p=Tt[n.sparse.indices.componentType],C=n.sparse.indices.byteOffset||0,I=n.sparse.values.byteOffset||0,x=new p(o[1],C,n.sparse.count*m),y=new u(o[2],I,n.sparse.count*A);s!==null&&(f=new E.BufferAttribute(f.array.slice(),f.itemSize,f.normalized)),f.normalized=!1;for(let F=0,D=x.length;F<D;F++){const v=x[F];if(f.setX(v,y[F*A]),A>=2&&f.setY(v,y[F*A+1]),A>=3&&f.setZ(v,y[F*A+2]),A>=4&&f.setW(v,y[F*A+3]),A>=5)throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}f.normalized=b}return f})}loadTexture(e){const t=this.json,a=this.options,n=t.textures[e].source,i=t.images[n];let o=this.textureLoader;if(i.uri){const s=a.manager.getHandler(i.uri);s!==null&&(o=s)}return this.loadTextureImage(e,n,o)}loadTextureImage(e,t,a){const n=this,i=this.json,o=i.textures[e],s=i.images[t],A=(s.uri||s.bufferView)+":"+o.sampler;if(this.textureCache[A])return this.textureCache[A];const u=this.loadImageSource(t,a).then(function(c){c.flipY=!1,c.name=o.name||s.name||"",c.name===""&&typeof s.uri=="string"&&s.uri.startsWith("data:image/")===!1&&(c.name=s.uri);const d=(i.samplers||{})[o.sampler]||{};return c.magFilter=Wr[d.magFilter]||E.LinearFilter,c.minFilter=Wr[d.minFilter]||E.LinearMipmapLinearFilter,c.wrapS=Yr[d.wrapS]||E.RepeatWrapping,c.wrapT=Yr[d.wrapT]||E.RepeatWrapping,c.generateMipmaps=!c.isCompressedTexture&&c.minFilter!==E.NearestFilter&&c.minFilter!==E.LinearFilter,n.associations.set(c,{textures:e}),c}).catch(function(){return null});return this.textureCache[A]=u,u}loadImageSource(e,t){const a=this,n=this.json,i=this.options;if(this.sourceCache[e]!==void 0)return this.sourceCache[e].then(d=>d.clone());const o=n.images[e],s=self.URL||self.webkitURL;let A=o.uri||"",u=!1;if(o.bufferView!==void 0)A=a.getDependency("bufferView",o.bufferView).then(function(d){u=!0;const l=new Blob([d],{type:o.mimeType});return A=s.createObjectURL(l),A});else if(o.uri===void 0)throw new Error("THREE.GLTFLoader: Image "+e+" is missing URI and bufferView");const c=Promise.resolve(A).then(function(d){return new Promise(function(l,h){let b=l;t.isImageBitmapLoader===!0&&(b=function(g){const f=new E.Texture(g);f.needsUpdate=!0,l(f)}),t.load(E.LoaderUtils.resolveURL(d,i.path),b,void 0,h)})}).then(function(d){var l;return u===!0&&s.revokeObjectURL(A),At(d,o),d.userData.mimeType=o.mimeType||((l=o.uri).search(/\.jpe?g($|\?)/i)>0||l.search(/^data\:image\/jpeg/)===0?"image/jpeg":l.search(/\.webp($|\?)/i)>0||l.search(/^data\:image\/webp/)===0?"image/webp":l.search(/\.ktx2($|\?)/i)>0||l.search(/^data\:image\/ktx2/)===0?"image/ktx2":"image/png"),d}).catch(function(d){throw console.error("THREE.GLTFLoader: Couldn't load texture",A),d});return this.sourceCache[e]=c,c}assignTexture(e,t,a,n){const i=this;return this.getDependency("texture",a.index).then(function(o){if(!o)return null;if(a.texCoord!==void 0&&a.texCoord>0&&((o=o.clone()).channel=a.texCoord),i.extensions[te.KHR_TEXTURE_TRANSFORM]){const s=a.extensions!==void 0?a.extensions[te.KHR_TEXTURE_TRANSFORM]:void 0;if(s){const A=i.associations.get(o);o=i.extensions[te.KHR_TEXTURE_TRANSFORM].extendTexture(o,s),i.associations.set(o,A)}}return n!==void 0&&(o.colorSpace=n),e[t]=o,o})}assignFinalMaterial(e){const t=e.geometry;let a=e.material;const n=t.attributes.tangent===void 0,i=t.attributes.color!==void 0,o=t.attributes.normal===void 0;if(e.isPoints){const s="PointsMaterial:"+a.uuid;let A=this.cache.get(s);A||(A=new E.PointsMaterial,E.Material.prototype.copy.call(A,a),A.color.copy(a.color),A.map=a.map,A.sizeAttenuation=!1,this.cache.add(s,A)),a=A}else if(e.isLine){const s="LineBasicMaterial:"+a.uuid;let A=this.cache.get(s);A||(A=new E.LineBasicMaterial,E.Material.prototype.copy.call(A,a),A.color.copy(a.color),A.map=a.map,this.cache.add(s,A)),a=A}if(n||i||o){let s="ClonedMaterial:"+a.uuid+":";n&&(s+="derivative-tangents:"),i&&(s+="vertex-colors:"),o&&(s+="flat-shading:");let A=this.cache.get(s);A||(A=a.clone(),i&&(A.vertexColors=!0),o&&(A.flatShading=!0),n&&(A.normalScale&&(A.normalScale.y*=-1),A.clearcoatNormalScale&&(A.clearcoatNormalScale.y*=-1)),this.cache.add(s,A),this.associations.set(A,this.associations.get(a))),a=A}e.material=a}getMaterialType(){return E.MeshStandardMaterial}loadMaterial(e){const t=this,a=this.json,n=this.extensions,i=a.materials[e];let o;const s={},A=[];if((i.extensions||{})[te.KHR_MATERIALS_UNLIT]){const c=n[te.KHR_MATERIALS_UNLIT];o=c.getMaterialType(),A.push(c.extendParams(s,i,t))}else{const c=i.pbrMetallicRoughness||{};if(s.color=new E.Color(1,1,1),s.opacity=1,Array.isArray(c.baseColorFactor)){const d=c.baseColorFactor;s.color.setRGB(d[0],d[1],d[2],E.LinearSRGBColorSpace),s.opacity=d[3]}c.baseColorTexture!==void 0&&A.push(t.assignTexture(s,"map",c.baseColorTexture,E.SRGBColorSpace)),s.metalness=c.metallicFactor!==void 0?c.metallicFactor:1,s.roughness=c.roughnessFactor!==void 0?c.roughnessFactor:1,c.metallicRoughnessTexture!==void 0&&(A.push(t.assignTexture(s,"metalnessMap",c.metallicRoughnessTexture)),A.push(t.assignTexture(s,"roughnessMap",c.metallicRoughnessTexture))),o=this._invokeOne(function(d){return d.getMaterialType&&d.getMaterialType(e)}),A.push(Promise.all(this._invokeAll(function(d){return d.extendMaterialParams&&d.extendMaterialParams(e,s)})))}i.doubleSided===!0&&(s.side=E.DoubleSide);const u=i.alphaMode||ko;if(u===Mo?(s.transparent=!0,s.depthWrite=!1):(s.transparent=!1,u===jo&&(s.alphaTest=i.alphaCutoff!==void 0?i.alphaCutoff:.5)),i.normalTexture!==void 0&&o!==E.MeshBasicMaterial&&(A.push(t.assignTexture(s,"normalMap",i.normalTexture)),s.normalScale=new E.Vector2(1,1),i.normalTexture.scale!==void 0)){const c=i.normalTexture.scale;s.normalScale.set(c,c)}if(i.occlusionTexture!==void 0&&o!==E.MeshBasicMaterial&&(A.push(t.assignTexture(s,"aoMap",i.occlusionTexture)),i.occlusionTexture.strength!==void 0&&(s.aoMapIntensity=i.occlusionTexture.strength)),i.emissiveFactor!==void 0&&o!==E.MeshBasicMaterial){const c=i.emissiveFactor;s.emissive=new E.Color().setRGB(c[0],c[1],c[2],E.LinearSRGBColorSpace)}return i.emissiveTexture!==void 0&&o!==E.MeshBasicMaterial&&A.push(t.assignTexture(s,"emissiveMap",i.emissiveTexture,E.SRGBColorSpace)),Promise.all(A).then(function(){const c=new o(s);return i.name&&(c.name=i.name),At(c,i),t.associations.set(c,{materials:e}),i.extensions&&wt(n,c,i),c})}createUniqueName(e){const t=E.PropertyBinding.sanitizeNodeName(e||"");return t in this.nodeNamesUsed?t+"_"+ ++this.nodeNamesUsed[t]:(this.nodeNamesUsed[t]=0,t)}loadGeometries(e){const t=this,a=this.extensions,n=this.primitiveCache;function i(s){return a[te.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(s,t).then(function(A){return Xr(A,s,t)})}const o=[];for(let s=0,A=e.length;s<A;s++){const u=e[s],c=Ro(u),d=n[c];if(d)o.push(d.promise);else{let l;l=u.extensions&&u.extensions[te.KHR_DRACO_MESH_COMPRESSION]?i(u):Xr(new E.BufferGeometry,u,t),n[c]={primitive:u,promise:l},o.push(l)}}return Promise.all(o)}loadMesh(e){const t=this,a=this.json,n=this.extensions,i=a.meshes[e],o=i.primitives,s=[];for(let u=0,c=o.length;u<c;u++){const d=o[u].material===void 0?((A=this.cache).DefaultMaterial===void 0&&(A.DefaultMaterial=new E.MeshStandardMaterial({color:16777215,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:E.FrontSide})),A.DefaultMaterial):this.getDependency("material",o[u].material);s.push(d)}var A;return s.push(t.loadGeometries(o)),Promise.all(s).then(function(u){const c=u.slice(0,u.length-1),d=u[u.length-1],l=[];for(let b=0,g=d.length;b<g;b++){const f=d[b],m=o[b];let p;const C=c[b];if(m.mode===Ke.TRIANGLES||m.mode===Ke.TRIANGLE_STRIP||m.mode===Ke.TRIANGLE_FAN||m.mode===void 0)p=i.isSkinnedMesh===!0?new E.SkinnedMesh(f,C):new E.Mesh(f,C),p.isSkinnedMesh===!0&&p.normalizeSkinWeights(),m.mode===Ke.TRIANGLE_STRIP?p.geometry=Or(p.geometry,E.TriangleStripDrawMode):m.mode===Ke.TRIANGLE_FAN&&(p.geometry=Or(p.geometry,E.TriangleFanDrawMode));else if(m.mode===Ke.LINES)p=new E.LineSegments(f,C);else if(m.mode===Ke.LINE_STRIP)p=new E.Line(f,C);else if(m.mode===Ke.LINE_LOOP)p=new E.LineLoop(f,C);else{if(m.mode!==Ke.POINTS)throw new Error("THREE.GLTFLoader: Primitive mode unsupported: "+m.mode);p=new E.Points(f,C)}Object.keys(p.geometry.morphAttributes).length>0&&So(p,i),p.name=t.createUniqueName(i.name||"mesh_"+e),At(p,i),m.extensions&&wt(n,p,m),t.assignFinalMaterial(p),l.push(p)}for(let b=0,g=l.length;b<g;b++)t.associations.set(l[b],{meshes:e,primitives:b});if(l.length===1)return i.extensions&&wt(n,l[0],i),l[0];const h=new E.Group;i.extensions&&wt(n,h,i),t.associations.set(h,{meshes:e});for(let b=0,g=l.length;b<g;b++)h.add(l[b]);return h})}loadCamera(e){let t;const a=this.json.cameras[e],n=a[a.type];if(n)return a.type==="perspective"?t=new E.PerspectiveCamera(E.MathUtils.radToDeg(n.yfov),n.aspectRatio||1,n.znear||1,n.zfar||2e6):a.type==="orthographic"&&(t=new E.OrthographicCamera(-n.xmag,n.xmag,n.ymag,-n.ymag,n.znear,n.zfar)),a.name&&(t.name=this.createUniqueName(a.name)),At(t,a),Promise.resolve(t);console.warn("THREE.GLTFLoader: Missing camera parameters.")}loadSkin(e){const t=this.json.skins[e],a=[];for(let n=0,i=t.joints.length;n<i;n++)a.push(this._loadNodeShallow(t.joints[n]));return t.inverseBindMatrices!==void 0?a.push(this.getDependency("accessor",t.inverseBindMatrices)):a.push(null),Promise.all(a).then(function(n){const i=n.pop(),o=n,s=[],A=[];for(let u=0,c=o.length;u<c;u++){const d=o[u];if(d){s.push(d);const l=new E.Matrix4;i!==null&&l.fromArray(i.array,16*u),A.push(l)}else console.warn('THREE.GLTFLoader: Joint "%s" could not be found.',t.joints[u])}return new E.Skeleton(s,A)})}loadAnimation(e){const t=this.json,a=this,n=t.animations[e],i=n.name?n.name:"animation_"+e,o=[],s=[],A=[],u=[],c=[];for(let d=0,l=n.channels.length;d<l;d++){const h=n.channels[d],b=n.samplers[h.sampler],g=h.target,f=g.node,m=n.parameters!==void 0?n.parameters[b.input]:b.input,p=n.parameters!==void 0?n.parameters[b.output]:b.output;g.node!==void 0&&(o.push(this.getDependency("node",f)),s.push(this.getDependency("accessor",m)),A.push(this.getDependency("accessor",p)),u.push(b),c.push(g))}return Promise.all([Promise.all(o),Promise.all(s),Promise.all(A),Promise.all(u),Promise.all(c)]).then(function(d){const l=d[0],h=d[1],b=d[2],g=d[3],f=d[4],m=[];for(let p=0,C=l.length;p<C;p++){const I=l[p],x=h[p],y=b[p],F=g[p],D=f[p];if(I===void 0)continue;I.updateMatrix&&I.updateMatrix();const v=a._createAnimationTracks(I,x,y,F,D);if(v)for(let M=0;M<v.length;M++)m.push(v[M])}return new E.AnimationClip(i,void 0,m)})}createNodeMesh(e){const t=this.json,a=this,n=t.nodes[e];return n.mesh===void 0?null:a.getDependency("mesh",n.mesh).then(function(i){const o=a._getNodeRef(a.meshCache,n.mesh,i);return n.weights!==void 0&&o.traverse(function(s){if(s.isMesh)for(let A=0,u=n.weights.length;A<u;A++)s.morphTargetInfluences[A]=n.weights[A]}),o})}loadNode(e){const t=this,a=this.json.nodes[e],n=t._loadNodeShallow(e),i=[],o=a.children||[];for(let A=0,u=o.length;A<u;A++)i.push(t.getDependency("node",o[A]));const s=a.skin===void 0?Promise.resolve(null):t.getDependency("skin",a.skin);return Promise.all([n,Promise.all(i),s]).then(function(A){const u=A[0],c=A[1],d=A[2];d!==null&&u.traverse(function(l){l.isSkinnedMesh&&l.bind(d,To)});for(let l=0,h=c.length;l<h;l++)u.add(c[l]);return u})}_loadNodeShallow(e){const t=this.json,a=this.extensions,n=this;if(this.nodeCache[e]!==void 0)return this.nodeCache[e];const i=t.nodes[e],o=i.name?n.createUniqueName(i.name):"",s=[],A=n._invokeOne(function(u){return u.createNodeMesh&&u.createNodeMesh(e)});return A&&s.push(A),i.camera!==void 0&&s.push(n.getDependency("camera",i.camera).then(function(u){return n._getNodeRef(n.cameraCache,i.camera,u)})),n._invokeAll(function(u){return u.createNodeAttachment&&u.createNodeAttachment(e)}).forEach(function(u){s.push(u)}),this.nodeCache[e]=Promise.all(s).then(function(u){let c;if(c=i.isBone===!0?new E.Bone:u.length>1?new E.Group:u.length===1?u[0]:new E.Object3D,c!==u[0])for(let d=0,l=u.length;d<l;d++)c.add(u[d]);if(i.name&&(c.userData.name=i.name,c.name=o),At(c,i),i.extensions&&wt(a,c,i),i.matrix!==void 0){const d=new E.Matrix4;d.fromArray(i.matrix),c.applyMatrix4(d)}else i.translation!==void 0&&c.position.fromArray(i.translation),i.rotation!==void 0&&c.quaternion.fromArray(i.rotation),i.scale!==void 0&&c.scale.fromArray(i.scale);return n.associations.has(c)||n.associations.set(c,{}),n.associations.get(c).nodes=e,c}),this.nodeCache[e]}loadScene(e){const t=this.extensions,a=this.json.scenes[e],n=this,i=new E.Group;a.name&&(i.name=n.createUniqueName(a.name)),At(i,a),a.extensions&&wt(t,i,a);const o=a.nodes||[],s=[];for(let A=0,u=o.length;A<u;A++)s.push(n.getDependency("node",o[A]));return Promise.all(s).then(function(A){for(let u=0,c=A.length;u<c;u++)i.add(A[u]);return n.associations=(u=>{const c=new Map;for(const[d,l]of n.associations)(d instanceof E.Material||d instanceof E.Texture)&&c.set(d,l);return u.traverse(d=>{const l=n.associations.get(d);l!=null&&c.set(d,l)}),c})(i),i})}_createAnimationTracks(e,t,a,n,i){const o=[],s=e.name?e.name:e.uuid,A=[];let u;switch(gt[i.path]===gt.weights?e.traverse(function(l){l.morphTargetInfluences&&A.push(l.name?l.name:l.uuid)}):A.push(s),gt[i.path]){case gt.weights:u=E.NumberKeyframeTrack;break;case gt.rotation:u=E.QuaternionKeyframeTrack;break;case gt.translation:case gt.scale:u=E.VectorKeyframeTrack;break;default:a.itemSize===1?u=E.NumberKeyframeTrack:u=E.VectorKeyframeTrack}const c=n.interpolation!==void 0?Qo[n.interpolation]:E.InterpolateLinear,d=this._getArrayFromAccessor(a);for(let l=0,h=A.length;l<h;l++){const b=new u(A[l]+"."+gt[i.path],t.array,d,c);n.interpolation==="CUBICSPLINE"&&this._createCubicSplineTrackInterpolant(b),o.push(b)}return o}_getArrayFromAccessor(e){let t=e.array;if(e.normalized){const a=_a(t.constructor),n=new Float32Array(t.length);for(let i=0,o=t.length;i<o;i++)n[i]=t[i]*a;t=n}return t}_createCubicSplineTrackInterpolant(e){e.createInterpolant=function(t){return new(this instanceof E.QuaternionKeyframeTrack?vo:Vr)(this.times,this.values,this.getValueSize()/3,t)},e.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline=!0}}function Xr(r,e,t){const a=e.attributes,n=[];function i(o,s){return t.getDependency("accessor",o).then(function(A){r.setAttribute(s,A)})}for(const o in a){const s=La[o]||o.toLowerCase();s in r.attributes||n.push(i(a[o],s))}if(e.indices!==void 0&&!r.index){const o=t.getDependency("accessor",e.indices).then(function(s){r.setIndex(s)});n.push(o)}return E.ColorManagement.workingColorSpace!==E.LinearSRGBColorSpace&&"COLOR_0"in a&&console.warn(`THREE.GLTFLoader: Converting vertex colors from "srgb-linear" to "${E.ColorManagement.workingColorSpace}" not supported.`),At(r,e),function(o,s,A){const u=s.attributes,c=new E.Box3;if(u.POSITION===void 0)return;{const h=A.json.accessors[u.POSITION],b=h.min,g=h.max;if(b===void 0||g===void 0)return void console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");if(c.set(new E.Vector3(b[0],b[1],b[2]),new E.Vector3(g[0],g[1],g[2])),h.normalized){const f=_a(Tt[h.componentType]);c.min.multiplyScalar(f),c.max.multiplyScalar(f)}}const d=s.targets;if(d!==void 0){const h=new E.Vector3,b=new E.Vector3;for(let g=0,f=d.length;g<f;g++){const m=d[g];if(m.POSITION!==void 0){const p=A.json.accessors[m.POSITION],C=p.min,I=p.max;if(C!==void 0&&I!==void 0){if(b.setX(Math.max(Math.abs(C[0]),Math.abs(I[0]))),b.setY(Math.max(Math.abs(C[1]),Math.abs(I[1]))),b.setZ(Math.max(Math.abs(C[2]),Math.abs(I[2]))),p.normalized){const x=_a(Tt[p.componentType]);b.multiplyScalar(x)}h.max(b)}else console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.")}}c.expandByVector(h)}o.boundingBox=c;const l=new E.Sphere;c.getCenter(l.center),l.radius=c.min.distanceTo(c.max)/2,o.boundingSphere=l}(r,e,t),Promise.all(n).then(function(){return e.targets!==void 0?function(o,s,A){let u=!1,c=!1,d=!1;for(let g=0,f=s.length;g<f;g++){const m=s[g];if(m.POSITION!==void 0&&(u=!0),m.NORMAL!==void 0&&(c=!0),m.COLOR_0!==void 0&&(d=!0),u&&c&&d)break}if(!u&&!c&&!d)return Promise.resolve(o);const l=[],h=[],b=[];for(let g=0,f=s.length;g<f;g++){const m=s[g];if(u){const p=m.POSITION!==void 0?A.getDependency("accessor",m.POSITION):o.attributes.position;l.push(p)}if(c){const p=m.NORMAL!==void 0?A.getDependency("accessor",m.NORMAL):o.attributes.normal;h.push(p)}if(d){const p=m.COLOR_0!==void 0?A.getDependency("accessor",m.COLOR_0):o.attributes.color;b.push(p)}}return Promise.all([Promise.all(l),Promise.all(h),Promise.all(b)]).then(function(g){const f=g[0],m=g[1],p=g[2];return u&&(o.morphAttributes.position=f),c&&(o.morphAttributes.normal=m),d&&(o.morphAttributes.color=p),o.morphTargetsRelative=!0,o})}(r,e.targets,t):r})}const Ha=new WeakMap;class Zr extends E.Loader{constructor(e){super(e),this.decoderPath="",this.decoderConfig={},this.decoderBinary=null,this.decoderPending=null,this.workerLimit=4,this.workerPool=[],this.workerNextTaskID=1,this.workerSourceURL="",this.defaultAttributeIDs={position:"POSITION",normal:"NORMAL",color:"COLOR",uv:"TEX_COORD"},this.defaultAttributeTypes={position:"Float32Array",normal:"Float32Array",color:"Float32Array",uv:"Float32Array"}}setDecoderPath(e){return this.decoderPath=e,this}setDecoderConfig(e){return this.decoderConfig=e,this}setWorkerLimit(e){return this.workerLimit=e,this}load(e,t,a,n){const i=new E.FileLoader(this.manager);i.setPath(this.path),i.setResponseType("arraybuffer"),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),i.load(e,o=>{this.parse(o,t,n)},a,n)}parse(e,t,a=()=>{}){this.decodeDracoFile(e,t,null,null,E.SRGBColorSpace,a).catch(a)}decodeDracoFile(e,t,a,n,i=E.LinearSRGBColorSpace,o=()=>{}){const s={attributeIDs:a||this.defaultAttributeIDs,attributeTypes:n||this.defaultAttributeTypes,useUniqueIDs:!!a,vertexColorSpace:i};return this.decodeGeometry(e,s).then(t).catch(o)}decodeGeometry(e,t){const a=JSON.stringify(t);if(Ha.has(e)){const A=Ha.get(e);if(A.key===a)return A.promise;if(e.byteLength===0)throw new Error("THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred.")}let n;const i=this.workerNextTaskID++,o=e.byteLength,s=this._getWorker(i,o).then(A=>(n=A,new Promise((u,c)=>{n._callbacks[i]={resolve:u,reject:c},n.postMessage({type:"decode",id:i,taskConfig:t,buffer:e},[e])}))).then(A=>this._createGeometry(A.geometry));return s.catch(()=>!0).then(()=>{n&&i&&this._releaseTask(n,i)}),Ha.set(e,{key:a,promise:s}),s}_createGeometry(e){const t=new E.BufferGeometry;e.index&&t.setIndex(new E.BufferAttribute(e.index.array,1));for(let a=0;a<e.attributes.length;a++){const n=e.attributes[a],i=n.name,o=n.array,s=n.itemSize,A=new E.BufferAttribute(o,s);i==="color"&&(this._assignVertexColorSpace(A,n.vertexColorSpace),A.normalized=!(o instanceof Float32Array)),t.setAttribute(i,A)}return t}_assignVertexColorSpace(e,t){if(t!==E.SRGBColorSpace)return;const a=new E.Color;for(let n=0,i=e.count;n<i;n++)a.fromBufferAttribute(e,n),E.ColorManagement.toWorkingColorSpace(a,E.SRGBColorSpace),e.setXYZ(n,a.r,a.g,a.b)}_loadLibrary(e,t){const a=new E.FileLoader(this.manager);return a.setPath(this.decoderPath),a.setResponseType(t),a.setWithCredentials(this.withCredentials),new Promise((n,i)=>{a.load(e,n,void 0,i)})}preload(){return this._initDecoder(),this}_initDecoder(){if(this.decoderPending)return this.decoderPending;const e=typeof WebAssembly!="object"||this.decoderConfig.type==="js",t=[];return e?t.push(this._loadLibrary("draco_decoder.js","text")):(t.push(this._loadLibrary("draco_wasm_wrapper.js","text")),t.push(this._loadLibrary("draco_decoder.wasm","arraybuffer"))),this.decoderPending=Promise.all(t).then(a=>{const n=a[0];e||(this.decoderConfig.wasmBinary=a[1]);const i=Uo.toString(),o=["/* draco decoder */",n,"","/* worker */",i.substring(i.indexOf("{")+1,i.lastIndexOf("}"))].join(`
|
|
7
|
+
`);this.workerSourceURL=URL.createObjectURL(new Blob([o]))}),this.decoderPending}_getWorker(e,t){return this._initDecoder().then(()=>{if(this.workerPool.length<this.workerLimit){const n=new Worker(this.workerSourceURL);n._callbacks={},n._taskCosts={},n._taskLoad=0,n.postMessage({type:"init",decoderConfig:this.decoderConfig}),n.onmessage=function(i){const o=i.data;switch(o.type){case"decode":n._callbacks[o.id].resolve(o);break;case"error":n._callbacks[o.id].reject(o);break;default:console.error('THREE.DRACOLoader: Unexpected message, "'+o.type+'"')}},this.workerPool.push(n)}else this.workerPool.sort(function(n,i){return n._taskLoad>i._taskLoad?-1:1});const a=this.workerPool[this.workerPool.length-1];return a._taskCosts[e]=t,a._taskLoad+=t,a})}_releaseTask(e,t){e._taskLoad-=e._taskCosts[t],delete e._callbacks[t],delete e._taskCosts[t]}debug(){console.log("Task load: ",this.workerPool.map(e=>e._taskLoad))}dispose(){for(let e=0;e<this.workerPool.length;++e)this.workerPool[e].terminate();return this.workerPool.length=0,this.workerSourceURL!==""&&URL.revokeObjectURL(this.workerSourceURL),this}}function Uo(){let r,e;function t(a,n,i,o,s,A){const u=A.num_components(),c=i.num_points()*u,d=c*s.BYTES_PER_ELEMENT,l=function(g,f){switch(f){case Float32Array:return g.DT_FLOAT32;case Int8Array:return g.DT_INT8;case Int16Array:return g.DT_INT16;case Int32Array:return g.DT_INT32;case Uint8Array:return g.DT_UINT8;case Uint16Array:return g.DT_UINT16;case Uint32Array:return g.DT_UINT32}}(a,s),h=a._malloc(d);n.GetAttributeDataArrayForAllPoints(i,A,l,d,h);const b=new s(a.HEAPF32.buffer,h,c).slice();return a._free(h),{name:o,array:b,itemSize:u}}onmessage=function(a){const n=a.data;switch(n.type){case"init":r=n.decoderConfig,e=new Promise(function(s){r.onModuleLoaded=function(A){s({draco:A})},DracoDecoderModule(r)});break;case"decode":const i=n.buffer,o=n.taskConfig;e.then(s=>{const A=s.draco,u=new A.Decoder;try{const c=function(l,h,b,g){const f=g.attributeIDs,m=g.attributeTypes;let p,C;const I=h.GetEncodedGeometryType(b);if(I===l.TRIANGULAR_MESH)p=new l.Mesh,C=h.DecodeArrayToMesh(b,b.byteLength,p);else{if(I!==l.POINT_CLOUD)throw new Error("THREE.DRACOLoader: Unexpected geometry type.");p=new l.PointCloud,C=h.DecodeArrayToPointCloud(b,b.byteLength,p)}if(!C.ok()||p.ptr===0)throw new Error("THREE.DRACOLoader: Decoding failed: "+C.error_msg());const x={index:null,attributes:[]};for(const y in f){const F=self[m[y]];let D,v;if(g.useUniqueIDs)v=f[y],D=h.GetAttributeByUniqueId(p,v);else{if(v=h.GetAttributeId(p,l[f[y]]),v===-1)continue;D=h.GetAttribute(p,v)}const M=t(l,h,p,y,F,D);y==="color"&&(M.vertexColorSpace=g.vertexColorSpace),x.attributes.push(M)}return I===l.TRIANGULAR_MESH&&(x.index=function(y,F,D){const v=D.num_faces(),M=3*v,S=4*M,O=y._malloc(S);F.GetTrianglesUInt32Array(D,S,O);const P=new Uint32Array(y.HEAPF32.buffer,O,M).slice();return y._free(O),{array:P,itemSize:1}}(l,h,p)),l.destroy(p),x}(A,u,new Int8Array(i),o),d=c.attributes.map(l=>l.array.buffer);c.index&&d.push(c.index.array.buffer),self.postMessage({type:"decode",id:n.id,geometry:c},d)}catch(c){console.error(c),self.postMessage({type:"error",id:n.id,error:c.message})}finally{A.destroy(u)}})}}}class Lo{constructor(e=4){this.pool=e,this.queue=[],this.workers=[],this.workersResolve=[],this.workerStatus=0,this.workerCreator=null}_initWorker(e){if(!this.workers[e]){const t=this.workerCreator();t.addEventListener("message",this._onMessage.bind(this,e)),this.workers[e]=t}}_getIdleWorker(){for(let e=0;e<this.pool;e++)if(!(this.workerStatus&1<<e))return e;return-1}_onMessage(e,t){const a=this.workersResolve[e];if(a&&a(t),this.queue.length){const{resolve:n,msg:i,transfer:o}=this.queue.shift();this.workersResolve[e]=n,this.workers[e].postMessage(i,o)}else this.workerStatus^=1<<e}setWorkerCreator(e){this.workerCreator=e}setWorkerLimit(e){this.pool=e}postMessage(e,t){return new Promise(a=>{const n=this._getIdleWorker();n!==-1?(this._initWorker(n),this.workerStatus|=1<<n,this.workersResolve[n]=a,this.workers[n].postMessage(e,t)):this.queue.push({resolve:a,msg:e,transfer:t})})}dispose(){this.workers.forEach(e=>e.terminate()),this.workersResolve.length=0,this.workers.length=0,this.queue.length=0,this.workerStatus=0}}const $r=9,en=15,tn=16,an=22,rn=37,nn=43,on=76,sn=83,An=97,cn=100,un=103,dn=109,hn=165,bn=166,Oa=1000066e3;class Go{constructor(){this.vkFormat=0,this.typeSize=1,this.pixelWidth=0,this.pixelHeight=0,this.pixelDepth=0,this.layerCount=0,this.faceCount=1,this.supercompressionScheme=0,this.levels=[],this.dataFormatDescriptor=[{vendorId:0,descriptorType:0,descriptorBlockSize:0,versionNumber:2,colorModel:0,colorPrimaries:1,transferFunction:2,flags:0,texelBlockDimension:[0,0,0,0],bytesPlane:[0,0,0,0,0,0,0,0],samples:[]}],this.keyValue={},this.globalData=null}}class Wt{constructor(e,t,a,n){this._dataView=void 0,this._littleEndian=void 0,this._offset=void 0,this._dataView=new DataView(e.buffer,e.byteOffset+t,a),this._littleEndian=n,this._offset=0}_nextUint8(){const e=this._dataView.getUint8(this._offset);return this._offset+=1,e}_nextUint16(){const e=this._dataView.getUint16(this._offset,this._littleEndian);return this._offset+=2,e}_nextUint32(){const e=this._dataView.getUint32(this._offset,this._littleEndian);return this._offset+=4,e}_nextUint64(){const e=this._dataView.getUint32(this._offset,this._littleEndian)+4294967296*this._dataView.getUint32(this._offset+4,this._littleEndian);return this._offset+=8,e}_nextInt32(){const e=this._dataView.getInt32(this._offset,this._littleEndian);return this._offset+=4,e}_nextUint8Array(e){const t=new Uint8Array(this._dataView.buffer,this._dataView.byteOffset+this._offset,e);return this._offset+=e,t}_skip(e){return this._offset+=e,this}_scan(e,t){t===void 0&&(t=0);const a=this._offset;let n=0;for(;this._dataView.getUint8(this._offset)!==t&&n<e;)n++,this._offset++;return n<e&&this._offset++,new Uint8Array(this._dataView.buffer,this._dataView.byteOffset+a,n)}}const Ue=[171,75,84,88,32,50,48,187,13,10,26,10];function ln(r){return new TextDecoder().decode(r)}let za,ct,Pa;const qa={env:{emscripten_notify_memory_growth:function(r){Pa=new Uint8Array(ct.exports.memory.buffer)}}};class _o{init(){return za||(za=typeof fetch<"u"?fetch("data:application/wasm;base64,"+gn).then(e=>e.arrayBuffer()).then(e=>WebAssembly.instantiate(e,qa)).then(this._init):WebAssembly.instantiate(Buffer.from(gn,"base64"),qa).then(this._init),za)}_init(e){ct=e.instance,qa.env.emscripten_notify_memory_growth(0)}decode(e,t=0){if(!ct)throw new Error("ZSTDDecoder: Await .init() before decoding.");const a=e.byteLength,n=ct.exports.malloc(a);Pa.set(e,n),t=t||Number(ct.exports.ZSTD_findDecompressedSize(n,a));const i=ct.exports.malloc(t),o=ct.exports.ZSTD_decompress(i,t,n,a),s=Pa.slice(i,i+o);return ct.exports.free(n),ct.exports.free(i),s}}const gn="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IAMNACAEQQNxBEADQCACRQ0FIAAgAkF/aiICaiIDIAEgAmotAAA6AAAgA0EDcQ0ACwsgAkEDTQ0AA0AgACACQXxqIgJqIAEgAmooAgA2AgAgAkEDSw0ACwsgAkUNAgNAIAAgAkF/aiICaiABIAJqLQAAOgAAIAINAAsMAgsgAkEDTQ0AIAIhBANAIAMgASgCADYCACABQQRqIQEgA0EEaiEDIARBfGoiBEEDSw0ACyACQQNxIQILIAJFDQADQCADIAEtAAA6AAAgA0EBaiEDIAFBAWohASACQX9qIgINAAsLIAAL8wICAn8BfgJAIAJFDQAgACACaiIDQX9qIAE6AAAgACABOgAAIAJBA0kNACADQX5qIAE6AAAgACABOgABIANBfWogAToAACAAIAE6AAIgAkEHSQ0AIANBfGogAToAACAAIAE6AAMgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgE2AgAgAyACIARrQXxxIgRqIgJBfGogATYCACAEQQlJDQAgAyABNgIIIAMgATYCBCACQXhqIAE2AgAgAkF0aiABNgIAIARBGUkNACADIAE2AhggAyABNgIUIAMgATYCECADIAE2AgwgAkFwaiABNgIAIAJBbGogATYCACACQWhqIAE2AgAgAkFkaiABNgIAIAQgA0EEcUEYciIEayICQSBJDQAgAa0iBUIghiAFhCEFIAMgBGohAQNAIAEgBTcDGCABIAU3AxAgASAFNwMIIAEgBTcDACABQSBqIQEgAkFgaiICQR9LDQALCyAACy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAIajYCACADCy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAFajYCACADCx8AIAAgASACKAIEEAg2AgAgARAEGiAAIAJBCGo2AgQLCAAgAGdBH3MLugUBDX8jAEEQayIKJAACfyAEQQNNBEAgCkEANgIMIApBDGogAyAEEAsaIAAgASACIApBDGpBBBAVIgBBbCAAEAMbIAAgACAESxsMAQsgAEEAIAEoAgBBAXRBAmoQECENQVQgAygAACIGQQ9xIgBBCksNABogAiAAQQVqNgIAIAMgBGoiAkF8aiEMIAJBeWohDiACQXtqIRAgAEEGaiELQQQh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ASIDNgLE4AEgACgCvOABIQQgACABNgK84AEgACABIAJqNgK44AEgACABIAQgA2tqNgLA4AELpgEBAX8gACAAKALs4QEQFjYCyOABIABCADcD+OABIABCADcDuOABIABBwOABakIANwMAIABBqNAAaiIBQYyAgOAANgIAIABBADYCmOIBIABCADcDiOEBIABCAzcDgOEBIABBrNABakHgEikCADcCACAAQbTQAWpB6BIoAgA2AgAgACABNgIMIAAgAEGYIGo2AgggACAAQaAwajYCBCAAIABBEGo2AgALYQEBf0G4fyEDAkAgAUEDSQ0AIAIgABAhIgFBA3YiADYCCCACIAFBAXE2AgQgAiABQQF2QQNxIgM2AgACQCADQX9qIgFBAksNAAJAIAFBAWsOAgEAAgtBbA8LIAAhAwsgAwsMACAAIAEgAkEAEC4LiAQCA38CfiADEBYhBCAAQQBBKBAQIQAgBCACSwRAIAQPCyABRQRAQX8PCwJAAkAgA0EBRg0AIAEoAAAiBkGo6r5pRg0AQXYhAyAGQXBxQdDUtMIBRw0BQQghAyACQQhJDQEgAEEAQSgQECEAIAEoAAQhASAAQQE2AhQgACABrTcDAEEADwsgASACIAMQLyIDIAJLDQAgACADNgIYQXIhAyABIARqIgVBf2otAAAiAkEIcQ0AIAJBIHEiBkUEQEFwIQMgBS0AACIFQacBSw0BIAVBB3GtQgEgBUEDdkEKaq2GIgdCA4h+IAd8IQggBEEBaiEECyACQQZ2IQMgAkECdiEFAkAgAkEDcUF/aiICQQJLBEBBACECDAELAkACQAJAIAJBAWsOAgECAAsgASAEai0AACECIARBAWohBAwCCyABIARqLwAAIQIgBEECaiEEDAELIAEgBGooAAAhAiAEQQRqIQQLIAVBAXEhBQJ+AkACQAJAIANBf2oiA0ECTQRAIANBAWsOAgIDAQtCfyAGRQ0DGiABIARqMQAADAMLIAEgBGovAACtQoACfAwCCyABIARqKAAArQwBCyABIARqKQAACyEHIAAgBTYCICAAIAI2AhwgACAHNwMAQQAhAyAAQQA2AhQgACAHIAggBhsiBzcDCCAAIAdCgIAIIAdCgIAIVBs+AhALIAMLWwEBf0G4fyEDIAIQFiICIAFNBH8gACACakF/ai0AACIAQQNxQQJ0QaAeaigC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C0Egak8NAQsgByAHKQNoNwMQIAcgBykDYDcDCCAEIA0gB0EIaiAHQdwAaiAPIA4gESAQEB4hCwwBCyACIARqIQggBCAKEAcgAkERTwRAIARBEGohAgNAIAIgCkEQaiIKEAcgAkEQaiICIAhJDQALCyAIIAlrIQIgByATNgJcIAkgCCAOa0sEQCAJIAggEWtLBEBBbCELDAILIBAgAiAOayICaiIKIANqIBBNBEAgCCAKIAMQDxoMAgsgCCAKQQAgAmsQDyEIIAcgAiADaiIDNgJkIAggAmshCCAOIQILIAlBEE8EQCADIAhqIQMDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALDAELAkAgCUEHTQRAIAggAi0AADoAACAIIAItAAE6AAEgCCACLQACOgACIAggAi0AAzoAAyAIQQRqIAIgCUECdCIDQcAeaigCAGoiAhAXIAIgA0HgHmooAgBrIQIgBygCZCEDDAELIAggAhAMCyADQQlJDQAgAyAIaiEDIAhBCGoiCCACQQhqIgJrQQ9MBEADQCAIIAIQDCACQQhqIQIgCEEIaiIIIANJDQAMAgALAAsDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALCyAHQRhqEAQaIAsgDCALEAMiAhshDCAEIAQgC2ogAhshBCAFQX9qIgUNAAsgDBADDQFBbCEMIAdBGGoQBEECSQ0BQQAhCANAIAhBA0cEQCAAIAhBAnQiAmpBrNABaiACIAdqKAJENgIAIAhBAWohCAwBCwsgBygCXCEIC0G6fyEMIA8gCGsiACANIARrSw0AIAQEfyAEIAggABALIABqBUEACyABayEMCyAHQfAAaiQAIAwLkRcCFn8FfiMAQdABayIHJAAgByAAKALw4QEiCDYCvAEgASACaiESIAggACgCgOIBaiETAkACQCAFRQRAIAEhAwwBCyAAKALE4AEhESAAKALA4AEhFSAAKAK84AEhDyAAQQE2AozhAUEAIQgDQCAIQQNHBEAgByAIQQJ0IgJqIAAgAmpBrNABaigCADYCVCAIQQFqIQgMAQsLIAcgETYCZCAHIA82AmAgByABIA9rNgJoQWwhECAHQShqIAMgBBAGEAMNASAFQQQgBUEESBshFyAHQTxqIAdBKGogACgCABATIAdBxABqIAdBKGogACgCCBATIAdBzABqIAdB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IAdB0AFqJAAgEAslACAAQgA3AgAgAEEAOwEIIABBADoACyAAIAE2AgwgACACOgAKC7QFAQN/IwBBMGsiBCQAIABB/wFqIgVBfWohBgJAIAMvAQIEQCAEQRhqIAEgAhAGIgIQAw0BIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahASOgAAIAMgBEEIaiAEQRhqEBI6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0FIAEgBEEQaiAEQRhqEBI6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBSABIARBCGogBEEYahASOgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEjoAACABIAJqIABrIQIMAwsgAyAEQRBqIARBGGoQEjoAAiADIARBCGogBEEYahASOgADIANBBGohAwwAAAsACyAEQRhqIAEgAhAGIgIQAw0AIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahAROgAAIAMgBEEIaiAEQRhqEBE6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0EIAEgBEEQaiAEQRhqEBE6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBCABIARBCGogBEEYahAROgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEToAACABIAJqIABrIQIMAgsgAyAEQRBqIARBGGoQEToAAiADIARBCGogBEEYahAROgADIANBBGohAwwAAAsACyAEQTBqJAAgAgtpAQF/An8CQAJAIAJBB00NACABKAAAQbfIwuF+Rw0AIAAgASgABDYCmOIBQWIgAEEQaiABIAIQPiIDEAMNAhogAEKBgICAEDcDiOEBIAAgASADaiACIANrECoMAQsgACABIAIQKgtBAAsLrQMBBn8jAEGAAWsiAyQAQWIhCAJAIAJBCUkNACAAQZjQAGogAUEIaiIEIAJBeGogAEGY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wOABCwutAgIEfwF+IwBBQGoiBCQAAkACQCACQQhJDQAgASgAAEFwcUHQ1LTCAUcNACABIAIQIiEBIABCADcDCCAAQQA2AgQgACABNgIADAELIARBGGogASACEC0iAxADBEAgACADEBoMAQsgAwRAIABBuH8QGgwBCyACIAQoAjAiA2shAiABIANqIQMDQAJAIAAgAyACIARBCGoQLCIFEAMEfyAFBSACIAVBA2oiBU8NAUG4fwsQGgwCCyAGQQFqIQYgAiAFayECIAMgBWohAyAEKAIMRQ0ACyAEKAI4BEAgAkEDTQRAIABBuH8QGgwCCyADQQRqIQMLIAQoAighAiAEKQMYIQcgAEEANgIEIAAgAyABazYCACAAIAIgBmytIAcgB0J/URs3AwgLIARBQGskAAslAQF/IwBBEGsiAiQAIAIgACABEFEgAigCACEAIAJBEGokACAAC30BBH8jAEGQBGsiBCQAIARB/wE2AggCQCAEQRBqIARBCGogBEEMaiABIAIQFSIGEAMEQCAGIQUMAQtBVCEFIAQoAgwiB0EGSw0AIAMgBEEQaiAEKAIIIAcQQSIFEAMNACAAIAEgBmogAiAGayADEDwhBQsgBEGQBGokACAFC4cBAgJ/An5BABAWIQMCQANAIAEgA08EQAJAIAAoAABBcHFB0NS0wgFGBEAgACABECIiAhADRQ0BQn4PCyAAIAEQVSIEQn1WDQMgBCAFfCIFIARUIQJCfiEEIAINAyAAIAEQUiICEAMNAwsgASACayEBIAAgAmohAAwBCwtCfiAFIAEbIQQLIAQLPwIBfwF+IwBBMGsiAiQAAn5CfiACQQhqIAAgARAtDQAaQgAgAigCHEEBRg0AGiACKQMICyEDIAJBMGokACADC40BAQJ/IwBBMGsiASQAAkAgAEUNACAAKAKI4gENACABIABB/OEBaigCADYCKCABIAApAvThATcDICAAEDAgACgCqOIBIQIgASABKAIoNgIYIAEgASkDIDcDECACIAFBEGoQGyAAQQA2AqjiASABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALKgECfyMAQRBrIgAkACAAQQA2AgggAEIANwMAIAAQWCEBIABBEGokACABC4cBAQN/IwBBEGsiAiQAAkAgACgCAEUgACgCBEVzDQAgAiAAKAIINgIIIAIgACkCADcDAAJ/IAIoAgAiAQRAIAIoAghBqOMJIAERBQAMAQtBqOMJECgLIgFFDQAgASAAKQIANwL04QEgAUH84QFqIAAoAgg2AgAgARBZIAEhAwsgAkEQaiQAIAMLywEBAn8jAEEgayIBJAAgAEGBgIDAADYCtOIBIABBADYCiOIBIABBADYC7OEBIABCADcDkOIBIABBADYCpOMJIABBADYC3OIBIABCADcCzOIBIABBADYCvOIBIABBADYCxOABIABCADcCnOIBIABBpOIBakIANwIAIABBrOIBakEANgIAIAFCADcCECABQgA3AhggASABKQMYNwMIIAEgASkDEDcDACABKAIIQQh2QQFxIQIgAEEANgLg4gEgACACNgKM4gEgAUEgaiQAC3YBA38jAEEwayIBJAAgAARAIAEgAEHE0AFqIgIoAgA2AiggASAAKQK80AE3AyAgACgCACEDIAEgAigCADYCGCABIAApArzQATcDECADIAFBEGoQGyABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALzAEBAX8gACABKAK00AE2ApjiASAAIAEoAgQiAjYCwOABIAAgAjYCvOABIAAgAiABKAIIaiICNgK44AEgACACNgLE4AEgASgCuNABBEAgAEKBgICAEDcDiOEBIAAgAUGk0ABqNgIMIAAgAUGUIGo2AgggACABQZwwajYCBCAAIAFBDGo2AgAgAEGs0AFqIAFBqNABaigCADYCACAAQbDQAWogAUGs0AFqKAIANgIAIABBtNABaiABQbDQAWooAgA2AgAPCyAAQgA3A4jhAQs7ACACRQRAQbp/DwsgBEUEQEFsDwsgAiAEEGAEQCAAIAEgAiADIAQgBRBhDwsgACABIAIgAyAEIAUQZQtGAQF/IwBBEGsiBSQAIAVBCGogBBAOAn8gBS0ACQRAIAAgASACIAMgBBAyDAELIAAgASACIAMgBBA0CyEAIAVBEGokACAACzQAIAAgAyAEIAUQNiIFEAMEQCAFDwsgBSAESQR/IAEgAiADIAVqIAQgBWsgABA1BUG4fwsLRgEBfyMAQRBrIgUkACAFQQhqIAQQDgJ/IAUtAAkEQCAAIAEgAiADIAQQYgwBCyAAIAEgAiADIAQQNQshACAFQRBqJAAgAAtZAQF/QQ8hAiABIABJBEAgAUEE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",Ja=new WeakMap;let Ka,Va=0;class Pe extends E.Loader{constructor(e){super(e),this.transcoderPath="",this.transcoderBinary=null,this.transcoderPending=null,this.workerPool=new Lo,this.workerSourceURL="",this.workerConfig=null,typeof MSC_TRANSCODER<"u"&&console.warn('THREE.KTX2Loader: Please update to latest "basis_transcoder". "msc_basis_transcoder" is no longer supported in three.js r125+.')}setTranscoderPath(e){return this.transcoderPath=e,this}setWorkerLimit(e){return this.workerPool.setWorkerLimit(e),this}async detectSupportAsync(e){return this.workerConfig={astcSupported:await e.hasFeatureAsync("texture-compression-astc"),astcHDRSupported:!1,etc1Supported:await e.hasFeatureAsync("texture-compression-etc1"),etc2Supported:await e.hasFeatureAsync("texture-compression-etc2"),dxtSupported:await e.hasFeatureAsync("texture-compression-bc"),bptcSupported:await e.hasFeatureAsync("texture-compression-bptc"),pvrtcSupported:await e.hasFeatureAsync("texture-compression-pvrtc")},this}detectSupport(e){return e.isWebGPURenderer===!0?this.workerConfig={astcSupported:e.hasFeature("texture-compression-astc"),astcHDRSupported:!1,etc1Supported:e.hasFeature("texture-compression-etc1"),etc2Supported:e.hasFeature("texture-compression-etc2"),dxtSupported:e.hasFeature("texture-compression-bc"),bptcSupported:e.hasFeature("texture-compression-bptc"),pvrtcSupported:e.hasFeature("texture-compression-pvrtc")}:this.workerConfig={astcSupported:e.extensions.has("WEBGL_compressed_texture_astc"),astcHDRSupported:e.extensions.has("WEBGL_compressed_texture_astc")&&e.extensions.get("WEBGL_compressed_texture_astc").getSupportedProfiles().includes("hdr"),etc1Supported:e.extensions.has("WEBGL_compressed_texture_etc1"),etc2Supported:e.extensions.has("WEBGL_compressed_texture_etc"),dxtSupported:e.extensions.has("WEBGL_compressed_texture_s3tc"),bptcSupported:e.extensions.has("EXT_texture_compression_bptc"),pvrtcSupported:e.extensions.has("WEBGL_compressed_texture_pvrtc")||e.extensions.has("WEBKIT_WEBGL_compressed_texture_pvrtc")},this}init(){if(!this.transcoderPending){const e=new E.FileLoader(this.manager);e.setPath(this.transcoderPath),e.setWithCredentials(this.withCredentials);const t=e.loadAsync("basis_transcoder.js"),a=new E.FileLoader(this.manager);a.setPath(this.transcoderPath),a.setResponseType("arraybuffer"),a.setWithCredentials(this.withCredentials);const n=a.loadAsync("basis_transcoder.wasm");this.transcoderPending=Promise.all([t,n]).then(([i,o])=>{const s=Pe.BasisWorker.toString(),A=["/* constants */","let _EngineFormat = "+JSON.stringify(Pe.EngineFormat),"let _EngineType = "+JSON.stringify(Pe.EngineType),"let _TranscoderFormat = "+JSON.stringify(Pe.TranscoderFormat),"let _BasisFormat = "+JSON.stringify(Pe.BasisFormat),"/* basis_transcoder.js */",i,"/* worker */",s.substring(s.indexOf("{")+1,s.lastIndexOf("}"))].join(`
|
|
8
|
+
`);this.workerSourceURL=URL.createObjectURL(new Blob([A])),this.transcoderBinary=o,this.workerPool.setWorkerCreator(()=>{const u=new Worker(this.workerSourceURL),c=this.transcoderBinary.slice(0);return u.postMessage({type:"init",config:this.workerConfig,transcoderBinary:c},[c]),u})}),Va>0&&console.warn("THREE.KTX2Loader: Multiple active KTX2 loaders may cause performance issues. Use a single KTX2Loader instance, or call .dispose() on old instances."),Va++}return this.transcoderPending}load(e,t,a,n){if(this.workerConfig===null)throw new Error("THREE.KTX2Loader: Missing initialization with `.detectSupport( renderer )`.");const i=new E.FileLoader(this.manager);i.setResponseType("arraybuffer"),i.setWithCredentials(this.withCredentials),i.load(e,o=>{this.parse(o,t,n)},a,n)}parse(e,t,a){if(this.workerConfig===null)throw new Error("THREE.KTX2Loader: Missing initialization with `.detectSupport( renderer )`.");if(Ja.has(e))return Ja.get(e).promise.then(t).catch(a);this._createTexture(e).then(n=>t?t(n):null).catch(a)}_createTextureFrom(e,t){const{type:a,error:n,data:{faces:i,width:o,height:s,format:A,type:u,dfdFlags:c}}=e;if(a==="error")return Promise.reject(n);let d;if(t.faceCount===6)d=new E.CompressedCubeTexture(i,A,u);else{const l=i[0].mipmaps;d=t.layerCount>1?new E.CompressedArrayTexture(l,o,s,t.layerCount,A,u):new E.CompressedTexture(l,o,s,A,u)}return d.minFilter=i[0].mipmaps.length===1?E.LinearFilter:E.LinearMipmapLinearFilter,d.magFilter=E.LinearFilter,d.generateMipmaps=!1,d.needsUpdate=!0,d.colorSpace=fn(t),d.premultiplyAlpha=!!(1&c),d}async _createTexture(e,t={}){const a=function(s){const A=new Uint8Array(s.buffer,s.byteOffset,Ue.length);if(A[0]!==Ue[0]||A[1]!==Ue[1]||A[2]!==Ue[2]||A[3]!==Ue[3]||A[4]!==Ue[4]||A[5]!==Ue[5]||A[6]!==Ue[6]||A[7]!==Ue[7]||A[8]!==Ue[8]||A[9]!==Ue[9]||A[10]!==Ue[10]||A[11]!==Ue[11])throw new Error("Missing KTX 2.0 identifier.");const u=new Go,c=17*Uint32Array.BYTES_PER_ELEMENT,d=new Wt(s,Ue.length,c,!0);u.vkFormat=d._nextUint32(),u.typeSize=d._nextUint32(),u.pixelWidth=d._nextUint32(),u.pixelHeight=d._nextUint32(),u.pixelDepth=d._nextUint32(),u.layerCount=d._nextUint32(),u.faceCount=d._nextUint32();const l=d._nextUint32();u.supercompressionScheme=d._nextUint32();const h=d._nextUint32(),b=d._nextUint32(),g=d._nextUint32(),f=d._nextUint32(),m=d._nextUint64(),p=d._nextUint64(),C=new Wt(s,Ue.length+c,3*l*8,!0);for(let Y=0;Y<l;Y++)u.levels.push({levelData:new Uint8Array(s.buffer,s.byteOffset+C._nextUint64(),C._nextUint64()),uncompressedByteLength:C._nextUint64()});const I=new Wt(s,h,b,!0),x={vendorId:I._skip(4)._nextUint16(),descriptorType:I._nextUint16(),versionNumber:I._nextUint16(),descriptorBlockSize:I._nextUint16(),colorModel:I._nextUint8(),colorPrimaries:I._nextUint8(),transferFunction:I._nextUint8(),flags:I._nextUint8(),texelBlockDimension:[I._nextUint8(),I._nextUint8(),I._nextUint8(),I._nextUint8()],bytesPlane:[I._nextUint8(),I._nextUint8(),I._nextUint8(),I._nextUint8(),I._nextUint8(),I._nextUint8(),I._nextUint8(),I._nextUint8()],samples:[]},y=(x.descriptorBlockSize/4-6)/4;for(let Y=0;Y<y;Y++){const ee={bitOffset:I._nextUint16(),bitLength:I._nextUint8(),channelType:I._nextUint8(),samplePosition:[I._nextUint8(),I._nextUint8(),I._nextUint8(),I._nextUint8()],sampleLower:-1/0,sampleUpper:1/0};64&ee.channelType?(ee.sampleLower=I._nextInt32(),ee.sampleUpper=I._nextInt32()):(ee.sampleLower=I._nextUint32(),ee.sampleUpper=I._nextUint32()),x.samples[Y]=ee}u.dataFormatDescriptor.length=0,u.dataFormatDescriptor.push(x);const F=new Wt(s,g,f,!0);for(;F._offset<f;){const Y=F._nextUint32(),ee=F._scan(Y),Ae=ln(ee);if(u.keyValue[Ae]=F._nextUint8Array(Y-ee.byteLength-1),Ae.match(/^ktx/i)){const Ee=ln(u.keyValue[Ae]);u.keyValue[Ae]=Ee.substring(0,Ee.lastIndexOf("\0"))}F._skip(Y%4?4-Y%4:0)}if(p<=0)return u;const D=new Wt(s,m,p,!0),v=D._nextUint16(),M=D._nextUint16(),S=D._nextUint32(),O=D._nextUint32(),P=D._nextUint32(),K=D._nextUint32(),J=[];for(let Y=0;Y<l;Y++)J.push({imageFlags:D._nextUint32(),rgbSliceByteOffset:D._nextUint32(),rgbSliceByteLength:D._nextUint32(),alphaSliceByteOffset:D._nextUint32(),alphaSliceByteLength:D._nextUint32()});const q=m+D._offset,se=q+S,ue=se+O,re=ue+P,be=new Uint8Array(s.buffer,s.byteOffset+q,S),de=new Uint8Array(s.buffer,s.byteOffset+se,O),$=new Uint8Array(s.buffer,s.byteOffset+ue,P),pe=new Uint8Array(s.buffer,s.byteOffset+re,K);return u.globalData={endpointCount:v,selectorCount:M,imageDescs:J,endpointsData:be,selectorsData:de,tablesData:$,extendedData:pe},u}(new Uint8Array(e)),n=a.vkFormat===Oa&&a.dataFormatDescriptor[0].colorModel===167;if(!(a.vkFormat===0||n&&!this.workerConfig.astcHDRSupported))return async function(s){const{vkFormat:A}=s;if(Wa[A]===void 0)throw new Error("THREE.KTX2Loader: Unsupported vkFormat.");let u;s.supercompressionScheme===2&&(Ka||(Ka=new Promise(async l=>{const h=new _o;await h.init(),l(h)})),u=await Ka);const c=[];for(let l=0;l<s.levels.length;l++){const h=Math.max(1,s.pixelWidth>>l),b=Math.max(1,s.pixelHeight>>l),g=s.pixelDepth?Math.max(1,s.pixelDepth>>l):0,f=s.levels[l];let m,p;if(s.supercompressionScheme===0)m=f.levelData;else{if(s.supercompressionScheme!==2)throw new Error("THREE.KTX2Loader: Unsupported supercompressionScheme.");m=u.decode(f.levelData,f.uncompressedByteLength)}p=Ya[A]===E.FloatType?new Float32Array(m.buffer,m.byteOffset,m.byteLength/Float32Array.BYTES_PER_ELEMENT):Ya[A]===E.HalfFloatType?new Uint16Array(m.buffer,m.byteOffset,m.byteLength/Uint16Array.BYTES_PER_ELEMENT):m,c.push({data:p,width:h,height:b,depth:g})}let d;if(Ho.has(Wa[A]))d=s.pixelDepth===0?new E.DataTexture(c[0].data,s.pixelWidth,s.pixelHeight):new E.Data3DTexture(c[0].data,s.pixelWidth,s.pixelHeight,s.pixelDepth);else{if(s.pixelDepth>0)throw new Error("THREE.KTX2Loader: Unsupported pixelDepth.");d=new E.CompressedTexture(c,s.pixelWidth,s.pixelHeight),d.minFilter=c.length===1?E.LinearFilter:E.LinearMipmapLinearFilter,d.magFilter=E.LinearFilter}return d.mipmaps=c,d.type=Ya[A],d.format=Wa[A],d.colorSpace=fn(s),d.needsUpdate=!0,Promise.resolve(d)}(a);const i=t,o=this.init().then(()=>this.workerPool.postMessage({type:"transcode",buffer:e,taskConfig:i},[e])).then(s=>this._createTextureFrom(s.data,a));return Ja.set(e,{promise:o}),o}dispose(){this.workerPool.dispose(),this.workerSourceURL&&URL.revokeObjectURL(this.workerSourceURL),Va--}}Pe.BasisFormat={ETC1S:0,UASTC:1,UASTC_HDR:2},Pe.TranscoderFormat={ETC1:0,ETC2:1,BC1:2,BC3:3,BC4:4,BC5:5,BC7_M6_OPAQUE_ONLY:6,BC7_M5:7,PVRTC1_4_RGB:8,PVRTC1_4_RGBA:9,ASTC_4x4:10,ATC_RGB:11,ATC_RGBA_INTERPOLATED_ALPHA:12,RGBA32:13,RGB565:14,BGR565:15,RGBA4444:16,BC6H:22,RGB_HALF:24,RGBA_HALF:25},Pe.EngineFormat={RGBAFormat:E.RGBAFormat,RGBA_ASTC_4x4_Format:E.RGBA_ASTC_4x4_Format,RGB_BPTC_UNSIGNED_Format:E.RGB_BPTC_UNSIGNED_Format,RGBA_BPTC_Format:E.RGBA_BPTC_Format,RGBA_ETC2_EAC_Format:E.RGBA_ETC2_EAC_Format,RGBA_PVRTC_4BPPV1_Format:E.RGBA_PVRTC_4BPPV1_Format,RGBA_S3TC_DXT5_Format:E.RGBA_S3TC_DXT5_Format,RGB_ETC1_Format:E.RGB_ETC1_Format,RGB_ETC2_Format:E.RGB_ETC2_Format,RGB_PVRTC_4BPPV1_Format:E.RGB_PVRTC_4BPPV1_Format,RGBA_S3TC_DXT1_Format:E.RGBA_S3TC_DXT1_Format},Pe.EngineType={UnsignedByteType:E.UnsignedByteType,HalfFloatType:E.HalfFloatType,FloatType:E.FloatType},Pe.BasisWorker=function(){let r,e,t;const a=_EngineFormat,n=_EngineType,i=_TranscoderFormat,o=_BasisFormat;self.addEventListener("message",function(d){const l=d.data;switch(l.type){case"init":r=l.config,h=l.transcoderBinary,e=new Promise(b=>{t={wasmBinary:h,onRuntimeInitialized:b},BASIS(t)}).then(()=>{t.initializeBasis(),t.KTX2File===void 0&&console.warn("THREE.KTX2Loader: Please update Basis Universal transcoder.")});break;case"transcode":e.then(()=>{try{const{faces:b,buffers:g,width:f,height:m,hasAlpha:p,format:C,type:I,dfdFlags:x}=function(y){const F=new t.KTX2File(new Uint8Array(y));function D(){F.close(),F.delete()}if(!F.isValid())throw D(),new Error("THREE.KTX2Loader: Invalid or unsupported .ktx2 file");let v;if(F.isUASTC())v=o.UASTC;else if(F.isETC1S())v=o.ETC1S;else{if(!F.isHDR())throw new Error("THREE.KTX2Loader: Unknown Basis encoding");v=o.UASTC_HDR}const M=F.getWidth(),S=F.getHeight(),O=F.getLayers()||1,P=F.getLevels(),K=F.getFaces(),J=F.getHasAlpha(),q=F.getDFDFlags(),{transcoderFormat:se,engineFormat:ue,engineType:re}=function($,pe,Y,ee){const Ae=A[$];for(let Ee=0;Ee<Ae.length;Ee++){const ye=Ae[Ee];if(!(ye.if&&!r[ye.if])&&ye.basisFormat.includes($)&&!(ee&&ye.transcoderFormat.length<2)&&!(ye.needsPowerOfTwo&&(!u(pe)||!u(Y))))return{transcoderFormat:ye.transcoderFormat[ee?1:0],engineFormat:ye.engineFormat[ee?1:0],engineType:ye.engineType[0]}}throw new Error("THREE.KTX2Loader: Failed to identify transcoding target.")}(v,M,S,J);if(!M||!S||!P)throw D(),new Error("THREE.KTX2Loader: Invalid texture");if(!F.startTranscoding())throw D(),new Error("THREE.KTX2Loader: .startTranscoding failed");const be=[],de=[];for(let $=0;$<K;$++){const pe=[];for(let Y=0;Y<P;Y++){const ee=[];let Ae,Ee;for(let Ne=0;Ne<O;Ne++){const qe=F.getImageLevelInfo(Y,Ne,$);$!==0||Y!==0||Ne!==0||qe.origWidth%4==0&&qe.origHeight%4==0||console.warn("THREE.KTX2Loader: ETC1S and UASTC textures should use multiple-of-four dimensions."),P>1?(Ae=qe.origWidth,Ee=qe.origHeight):(Ae=qe.width,Ee=qe.height);let Je=new Uint8Array(F.getImageTranscodedSizeInBytes(Y,Ne,0,se));const ta=F.transcodeImage(Je,Y,Ne,$,se,0,-1,-1);if(re===n.HalfFloatType&&(Je=new Uint16Array(Je.buffer,Je.byteOffset,Je.byteLength/Uint16Array.BYTES_PER_ELEMENT)),!ta)throw D(),new Error("THREE.KTX2Loader: .transcodeImage failed.");ee.push(Je)}const ye=c(ee);pe.push({data:ye,width:Ae,height:Ee}),de.push(ye.buffer)}be.push({mipmaps:pe,width:M,height:S,format:ue,type:re})}return D(),{faces:be,buffers:de,width:M,height:S,hasAlpha:J,dfdFlags:q,format:ue,type:re}}(l.buffer);self.postMessage({type:"transcode",id:l.id,data:{faces:b,width:f,height:m,hasAlpha:p,format:C,type:I,dfdFlags:x}},g)}catch(b){console.error(b),self.postMessage({type:"error",id:l.id,error:b.message})}})}var h});const s=[{if:"astcSupported",basisFormat:[o.UASTC],transcoderFormat:[i.ASTC_4x4,i.ASTC_4x4],engineFormat:[a.RGBA_ASTC_4x4_Format,a.RGBA_ASTC_4x4_Format],engineType:[n.UnsignedByteType],priorityETC1S:1/0,priorityUASTC:1,needsPowerOfTwo:!1},{if:"bptcSupported",basisFormat:[o.ETC1S,o.UASTC],transcoderFormat:[i.BC7_M5,i.BC7_M5],engineFormat:[a.RGBA_BPTC_Format,a.RGBA_BPTC_Format],engineType:[n.UnsignedByteType],priorityETC1S:3,priorityUASTC:2,needsPowerOfTwo:!1},{if:"dxtSupported",basisFormat:[o.ETC1S,o.UASTC],transcoderFormat:[i.BC1,i.BC3],engineFormat:[a.RGBA_S3TC_DXT1_Format,a.RGBA_S3TC_DXT5_Format],engineType:[n.UnsignedByteType],priorityETC1S:4,priorityUASTC:5,needsPowerOfTwo:!1},{if:"etc2Supported",basisFormat:[o.ETC1S,o.UASTC],transcoderFormat:[i.ETC1,i.ETC2],engineFormat:[a.RGB_ETC2_Format,a.RGBA_ETC2_EAC_Format],engineType:[n.UnsignedByteType],priorityETC1S:1,priorityUASTC:3,needsPowerOfTwo:!1},{if:"etc1Supported",basisFormat:[o.ETC1S,o.UASTC],transcoderFormat:[i.ETC1],engineFormat:[a.RGB_ETC1_Format],engineType:[n.UnsignedByteType],priorityETC1S:2,priorityUASTC:4,needsPowerOfTwo:!1},{if:"pvrtcSupported",basisFormat:[o.ETC1S,o.UASTC],transcoderFormat:[i.PVRTC1_4_RGB,i.PVRTC1_4_RGBA],engineFormat:[a.RGB_PVRTC_4BPPV1_Format,a.RGBA_PVRTC_4BPPV1_Format],engineType:[n.UnsignedByteType],priorityETC1S:5,priorityUASTC:6,needsPowerOfTwo:!0},{if:"bptcSupported",basisFormat:[o.UASTC_HDR],transcoderFormat:[i.BC6H],engineFormat:[a.RGB_BPTC_UNSIGNED_Format],engineType:[n.HalfFloatType],priorityHDR:1,needsPowerOfTwo:!1},{basisFormat:[o.ETC1S,o.UASTC],transcoderFormat:[i.RGBA32,i.RGBA32],engineFormat:[a.RGBAFormat,a.RGBAFormat],engineType:[n.UnsignedByteType,n.UnsignedByteType],priorityETC1S:100,priorityUASTC:100,needsPowerOfTwo:!1},{basisFormat:[o.UASTC_HDR],transcoderFormat:[i.RGBA_HALF],engineFormat:[a.RGBAFormat],engineType:[n.HalfFloatType],priorityHDR:100,needsPowerOfTwo:!1}],A={[o.ETC1S]:s.filter(d=>d.basisFormat.includes(o.ETC1S)).sort((d,l)=>d.priorityUASTC-l.priorityUASTC),[o.UASTC]:s.filter(d=>d.basisFormat.includes(o.UASTC)).sort((d,l)=>d.priorityUASTC-l.priorityUASTC),[o.UASTC_HDR]:s.filter(d=>d.basisFormat.includes(o.UASTC_HDR)).sort((d,l)=>d.priorityHDR-l.priorityHDR)};function u(d){return d<=2||!(d&d-1)&&d!==0}function c(d){if(d.length===1)return d[0];let l=0;for(let g=0;g<d.length;g++)l+=d[g].byteLength;const h=new Uint8Array(l);let b=0;for(let g=0;g<d.length;g++){const f=d[g];h.set(f,b),b+=f.byteLength}return h}};const Ho=new Set([E.RGBAFormat,E.RGFormat,E.RedFormat]),Wa={[dn]:E.RGBAFormat,[An]:E.RGBAFormat,[rn]:E.RGBAFormat,[nn]:E.RGBAFormat,[un]:E.RGFormat,[sn]:E.RGFormat,[tn]:E.RGFormat,[an]:E.RGFormat,[cn]:E.RedFormat,[on]:E.RedFormat,[en]:E.RedFormat,[$r]:E.RedFormat,[Oa]:E.RGBA_ASTC_4x4_Format,[bn]:E.RGBA_ASTC_6x6_Format,[hn]:E.RGBA_ASTC_6x6_Format},Ya={[dn]:E.FloatType,[An]:E.HalfFloatType,[rn]:E.UnsignedByteType,[nn]:E.UnsignedByteType,[un]:E.FloatType,[sn]:E.HalfFloatType,[tn]:E.UnsignedByteType,[an]:E.UnsignedByteType,[cn]:E.FloatType,[on]:E.HalfFloatType,[en]:E.UnsignedByteType,[$r]:E.UnsignedByteType,[Oa]:E.HalfFloatType,[bn]:E.UnsignedByteType,[hn]:E.UnsignedByteType};function fn(r){const e=r.dataFormatDescriptor[0];return e.colorPrimaries===1?e.transferFunction===2?E.SRGBColorSpace:E.LinearSRGBColorSpace:e.colorPrimaries===10?e.transferFunction===2?"display-p3":"display-p3-linear":(e.colorPrimaries===0||console.warn(`THREE.KTX2Loader: Unsupported color primaries, "${e.colorPrimaries}"`),E.NoColorSpace)}async function pn(r){const e=r.split("?")[0].split(".").pop(),t=await fetch(r);if(!t.ok)throw new Error(`Failed to fetch ${r}: ${t.statusText}`);if(e==="json"){const a=await t.json();return handleJSONSubtree(a,mn(r))}if(e==="subtree")return async function(a,n){const i=new DataView(a),o=i.getBigUint64(8,!0),s=i.getBigUint64(16,!0),A=24,u=A+Number(o),c=u+(8-u%8)%8,d=c+Number(s),l=a.slice(A,u),h=new TextDecoder().decode(l).trim(),b=JSON.parse(h);if(!b.buffers)throw new Error("subtree has no buffers");const g=b.buffers.map(async m=>{if(m.uri){const p=new URL(m.uri,n).href,C=await fetch(p);if(!C.ok)throw new Error(`Failed to fetch binary file ${p}: ${C.statusText}`);return new Uint8Array(await C.arrayBuffer())}return new Uint8Array(a.slice(c,d))}),f=await Promise.all(g);return function(m,p){function C(D,v){if(!D)throw new Error("incomplete json subtree");if(D.constant){if(D.constant==0)return!1;if(D.constant==1)return!0}if(D.bitstream==null)throw new Error('json subtree "tileAvailability" does not specify a bitstream');if(!m.bufferViews||!m.bufferViews[D.bitstream])throw new Error('json subtree "bufferViews" does not specify a bitstream');const M=m.bufferViews[D.bitstream];return I(p[M.buffer],M.byteOffset,v)}function I(D,v,M){const S=M%8;return D[v+Math.floor(M/8)]>>S&!0}function x(D){let v=0;return v=D.z==null?Xa(D.x,D.y,D.level):$a(D.x,D.y,D.z,D.level),C(m.tileAvailability,v)}function y(D){let v=0;v=D.z==null?Xa(D.x,D.y,D.level):$a(D.x,D.y,D.z,D.level);const M=[];return m.contentAvailability.forEach(S=>{M.push(C(S,v))}),M}function F(D){let v=0;return v=D.z==null?Xa(D.x,D.y):$a(D.x,D.y,D.z),C(m.childSubtreeAvailability,v)}return{isTileAvailable:x,isContentAvailable:y,isChildSubtreeAvailable:F}}(b,f)}(await t.arrayBuffer(),mn(r));throw new Error(`Unsupported file extension: ${e}`)}function mn(r){const e=r.split("?")[0];return e.substring(0,e.lastIndexOf("/")+1)}function En(r){return r=1431655765&((r=858993459&((r=252645135&((r=16711935&((r&=65535)^r<<8))^r<<4))^r<<2))^r<<1)}function Xa(r,e,t){let a=0;return t&&(a=(Math.pow(4,t)-1)/3),a+(En(r)|En(e)<<1)}function Za(r){return r=153391689&((r=51130563&((r=50393103&((r=4278190335&((r&=1023)^r<<16))^r<<8))^r<<4))^r<<2)}function $a(r,e,t,a){let n=0;return a&&(n=(Math.pow(8,a)-1)/7),n+(Za(r)|Za(e)<<1|Za(t)<<2)}const Yt=new Map;async function er(r,e){if(!r.root||!r.root.implicitTiling)return r;if(!r.root.content&&!r.root.contents)throw new Error("implicit tiling requires a Template URI");let t=!0;r.root.implicitTiling.subdivisionScheme&&(t=r.root.implicitTiling.subdivisionScheme.toUpperCase()==="QUADTREE");let a="";r.root.implicitTiling.subtrees&&(r.root.implicitTiling.subtrees.uri?a=r.root.implicitTiling.subtrees.uri:r.root.implicitTiling.subtrees.url&&(a=r.root.implicitTiling.subtrees.url));let n=[];r.root.content?r.root.content.uri?n.push(r.root.content.uri):r.root.content.url&&n.push(r.root.content.url):r.root.contents&&r.root.contents.forEach(h=>{h.uri?n.push(h.uri):h.url&&n.push(h.url)});const i=function(h){const b=h.split("?")[0];return b.substring(0,b.lastIndexOf("/")+1)}(e);let o;t&&(o=a.replace("{level}",0).replace("{x}",0).replace("{y}",0)),t||(o=a.replace("{level}",0).replace("{x}",0).replace("{y}",0).replace("{z}",0));const s={level:0,x:0,y:0},A={level:0,x:0,y:0};t||(s.z=0,A.z=0),Yt.set(o,await pn(i+o));const u=Yt.get(o),c=[];u.isContentAvailable(A)&&n.forEach(h=>{let b;t&&(b=h.replace("{level}",s.level).replace("{x}",s.x).replace("{y}",s.y)),t||(b=h.replace("{level}",s.level).replace("{x}",s.x).replace("{y}",s.y).replace("{z}",s.z)),c.push({uri:b})});const d={geometricError:r.root.geometricError,boundingVolume:r.root.boundingVolume,refine:r.root.refine,globalAddress:s,localAddress:A,subtree:u,contents:c,getChildren:async()=>l(d)};return{root:d};async function l(h){const b=[];if(h.localAddress.level==r.root.implicitTiling.availableLevels-1)return b;if((h.localAddress.level+1)%r.root.implicitTiling.subtreeLevels==0){const g=ia(h.localAddress),f=ia(h.globalAddress),m=Cn(t,r.root.boundingVolume,f);for(let p=0;p<g.length;p++){const C=g[p],I=f[p];h.subtree.isChildSubtreeAvailable(C)&&(t&&a.replace("{level}",I.level).replace("{x}",I.x).replace("{y}",I.y),t||a.replace("{level}",I.level).replace("{x}",I.x).replace("{y}",I.y).replace("{z}",I.z)),Yt.has(o)||Yt.set(o,await pn(i+o));const x=Yt.get(o),y={level:0,x:0,y:0};t||(y.z=0);const F=[];x.isContentAvailable(y)&&n.forEach(v=>{let M;t&&(M=v.replace("{level}",I.level).replace("{x}",I.x).replace("{y}",I.y)),t||(M=v.replace("{level}",I.level).replace("{x}",I.x).replace("{y}",I.y).replace("{z}",I.z)),F.push({uri:M})});const D={geometricError:h.geometricError/2,boundingVolume:m[p],refine:r.root.refine,globalAddress:I,localAddress:y,subtree:x,contents:F,getChildren:async()=>l(D)};b.push(D)}}else{const g=ia(h.localAddress),f=ia(h.globalAddress),m=Cn(t,r.root.boundingVolume,f);for(let p=0;p<g.length;p++){const C=g[p],I=f[p];if(!h.subtree.isTileAvailable(C))continue;const x=[],y=h.subtree.isContentAvailable(C);for(let D=0;D<n.length;D++){if(!y[D])continue;const v=n[D];let M;t&&(M=v.replace("{level}",I.level).replace("{x}",I.x).replace("{y}",I.y)),t||(M=v.replace("{level}",I.level).replace("{x}",I.x).replace("{y}",I.y).replace("{z}",I.z)),x.push({uri:M})}const F={geometricError:h.geometricError/2,boundingVolume:m[p],refine:r.root.refine,globalAddress:I,localAddress:C,subtree:h.subtree,contents:x,getChildren:async()=>l(F)};b.push(F)}}return b.length>0?b:void 0}}function ia(r){const{level:e,x:t,y:a,z:n}=r,i=e+1;let o=[];return o=n===void 0?[{level:i,x:2*t,y:2*a},{level:i,x:2*t+1,y:2*a},{level:i,x:2*t,y:2*a+1},{level:i,x:2*t+1,y:2*a+1}]:[{level:i,x:2*t,y:2*a,z:2*n},{level:i,x:2*t+1,y:2*a,z:2*n},{level:i,x:2*t,y:2*a+1,z:2*n},{level:i,x:2*t+1,y:2*a+1,z:2*n},{level:i,x:2*t,y:2*a,z:2*n+1},{level:i,x:2*t+1,y:2*a,z:2*n+1},{level:i,x:2*t,y:2*a+1,z:2*n+1},{level:i,x:2*t+1,y:2*a+1,z:2*n+1}],o}function Cn(r,e,t){const a=[];for(let n=0;n<t.length;n++)a.push(Oo(r,e,t[n]));return a}function Oo(r,e,t){if(e.region)return function(a,n,i){const[o,s,A,u,c,d]=n,l=(A-o)/2**i.level,h=(u-s)/2**i.level,b=a?0:(d-c)/2**i.level,g=o+l*i.x,f=s+h*i.y,m=g+l,p=f+h,C=a?c:c+b*i.z,I=a?d:C+b;return{region:[g,f,m,p,C,I]}}(r,e.region,t);if(e.box)return function(a,n,i){const o=n.slice(0,3),s=[n.slice(3,6),n.slice(6,9),n.slice(9,12)],A=1/Math.pow(2,i.level),u=[A,A,a?1:A],c=s.map((h,b)=>h.map(g=>g*u[b])),d=[o[0]-s[0][0]-s[1][0]-s[2][0],o[1]-s[0][1]-s[1][1]-s[2][1],o[2]-s[0][2]-s[1][2]-s[2][2]];return{box:[d[0]+(2*i.x+1)*(c[0][0]+c[1][0]+c[2][0]),d[1]+(2*i.y+1)*(c[0][1]+c[1][1]+c[2][1]),a?o[2]:d[2]+(2*i.z+1)*(c[0][2]+c[1][2]+c[2][2])].concat(...c)}}(r,e.box,t);throw new Error("Unsupported bounding volume type")}(function(){var r,e=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if(typeof WebAssembly!="object")return{supported:!1};function t(A){if(!A)throw new Error("Assertion failed")}function a(A){return new Uint8Array(A.buffer,A.byteOffset,A.byteLength)}function n(A,u,c,d,l){var h=r.exports.sbrk,b=h(u),g=h(d*l),f=new Uint8Array(r.exports.memory.buffer);f.set(a(c),g);var m=A(b,u,g,d,l),p=new Uint8Array(m);return p.set(f.subarray(b,b+m)),h(b-h(0)),p}function i(A){for(var u=0,c=0;c<A.length;++c)var d=A[c];return u}function o(A,u){if(t(u==2||u==4),u==4)return new Uint32Array(A.buffer,A.byteOffset,A.byteLength/4);var c=new Uint16Array(A.buffer,A.byteOffset,A.byteLength/2);return new Uint32Array(c)}function s(A,u,c,d,l,h,b){var g=r.exports.sbrk,f=g(c*d),m=g(c*h),p=new Uint8Array(r.exports.memory.buffer);p.set(a(u),m),A(f,c,d,l,m,b);var C=new Uint8Array(c*d);return C.set(p.subarray(f,f+c*d)),g(f-g(0)),C}WebAssembly.instantiate(function(A){for(var u=new Uint8Array(A.length),c=0;c<A.length;++c){var d=A.charCodeAt(c);u[c]=d>96?d-97:d>64?d-39:d+4}var l=0;for(c=0;c<A.length;++c)u[l++]=u[c]<60?e[u[c]]:64*(u[c]-60)+u[++c];return u.buffer.slice(0,l)}("b9H79Tebbbe9nk9Geueu9Geub9Gbb9Gouuuuuueu9Gvuuuuueu9Gduueu9Gluuuueu9Gvuuuuub9Gouuuuuub9Gluuuub9GiuuueuiYKdilveoveovrrwrrDDoDbqqbelve9Weiiviebeoweuec;G:Qdkr:nlAo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8F9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949c919M9MWV9mW4W2be8A9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949c919M9MWVbd8F9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949c919M9MWV9c9V919U9KbiE9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949wWV79P9V9UblY9TW79O9V9Wt9FW9U9J9V9KW69U9KW949c919M9MWVbv8E9TW79O9V9Wt9FW9U9J9V9KW69U9KW949c919M9MWV9c9V919U9Kbo8A9TW79O9V9Wt9FW9U9J9V9KW69U9KW949wWV79P9V9UbrE9TW79O9V9Wt9FW9U9J9V9KW69U9KW949tWG91W9U9JWbwa9TW79O9V9Wt9FW9U9J9V9KW69U9KW949tWG91W9U9JW9c9V919U9KbDL9TW79O9V9Wt9FW9U9J9V9KWS9P2tWV9p9JtbqK9TW79O9V9Wt9FW9U9J9V9KWS9P2tWV9r919HtbkL9TW79O9V9Wt9FW9U9J9V9KWS9P2tWVT949WbxE9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94J9H9J9OWbsa9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94J9H9J9OW9ttV9P9Wbza9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94SWt9J9O9sW9T9H9WbHK9TW79O9V9Wt9F79W9Ht9P9H29t9VVt9sW9T9H9WbOl79IV9RbADwebcekdLQq:X9MKdbk:xhdgud9:8Jjjjjbc;qw9Rgo8Kjjjjbdndnaembcbhrxekabcbyd;C:kjjbgwc:GeV86bbaoc;adfcbcjdz:vjjjb8AdnaiTmbaoc;adfadalzNjjjb8Akaoc;abfalfcbcbcjdal9RalcFe0Ez:vjjjb8Aaoc;abfaoc;adfalzNjjjb8AaocUf9cb83ibaoc8Wf9cb83ibaocyf9cb83ibaocaf9cb83ibaocKf9cb83ibaoczf9cb83ibao9cb83iwao9cb83ibcj;abal9Uc;WFbGcjdalca0EhDdnaicd6mbavcd9imbawTmbadcefhqaDci2gkal2hxaoc;alfclfhmaoc;qlfceVhPaoc;qofclVhsaoc;qofcKfhzaoc;qofczfhHcbhOincdhAcbhrdnavci6mbaz9cb83ibaH9cb83ibao9cb83i;yoao9cb83i;qoadaOfgrybbhCcbhXincbhQcbhLdninaralfhKarybbgYaC7aLVhLaQcP0meaKhraYhCaQcefgQaXfai6mbkkcbhCaoc;qofhQincwh8AcwhEdnaLaC93grcFeGg3cs0mbclhEa3ci0mba3cb9hcethEkdnarcw4cFeGg3cs0mbclh8Aa3ci0mba3cb9hceth8Aka8AaEfh3aQydbh5cwh8AcwhEdnarcz4cFeGg8Ecs0mbclhEa8Eci0mba8Ecb9hcethEka3a5fh3dnarcFFFFb0mbclh8AarcFFF8F0mbarcFFFr0ceth8AkaQa3aEfa8AfBdbaQclfhQaCcefgCcw9hmbkaKhraYhCaXczfgXai6mbkcbhrcehQashLinaQaraLydbaoc;qofarcdtfydb6EhraLclfhLaQcefgQcw9hmbkcihAkcbh3aoc;qlfcbcjdz:vjjjb8Aaoc;alfcwfcbBdbao9cb83i;alarclth8FadhaaDhhaqh5inaoc;qlfadcba3cufgrara30Eal2falzNjjjb8Aaiahaiah6EhgdnaDaia39Ra3aDfai6EgYcsfc9WGgraY9nmbaoc;qofaYfcbaraY9Rz:vjjjb8Akada3al2fh8Jcbh8Kina8Ka8FVcl4hXaoc;alfa8Kcdtfh8LaOh8Mcbh8Nina8NaOfhQdndndndndndna8KPldebidkaPa8Mc98GgLfhra5aLfh8Aaoc;qlfaQc98GgLfRbbhCcwhQinarRbbaQtaCVhCarcefhraQcwfgQca9hmbkaYTmla8Ncith8Ea8JaLfhEcbhKinaERbbhLcwhra8AhQinaQRbbartaLVhLaQcefhQarcwfgrca9hmbkaoc;qofaKfaLaC7aX93a8E486bba8Aalfh8AaEalfhEaLhCaKcefgKaY9hmbxlkkaYTmia8Mc9:Ghra8NcitcwGhEaoc;qlfaQceVfRbbcwtaoc;qlfaQc9:GfRbbVhLaoc;qofhQaghCinaQa5arfRbbcwtaaarfRbbVg8AaL9RgLcetaLcztcz91cs47cFFiGaE486bbaralfhraQcefhQa8AhLa3aCcufgC9hmbxikkaYTmda8JaQfhraoc;qlfaQfRbbhLaoc;qofhQaghCinaQarRbbg8AaL9RgLcetaLcKtcK91cr4786bbaQcefhQaralfhra8AhLa3aCcufgC9hmbxdkkaYTmeka8LydbhEcbhKaoc;qofhrincdhLcbhQinaLaraQfRbbcb9hfhLaQcefgQcz9hmbkclhCcbhQinaCaraQfRbbcd0fhCaQcefgQcz9hmbkcwh8AcbhQina8AaraQfRbbcP0fh8AaQcefgQcz9hmbkaLaCaLaC6EgQa8AaQa8A6EgQczaQcz6EaEfhEarczfhraKczfgKaY6mbka8LaEBdbka8Mcefh8Ma8Ncefg8Ncl9hmbka8Kcefg8KaA9hmbkaaaxfhaahakfhha5axfh5a3akfg3ai6mbkcbhrcehQamhLinaQaraLydbaoc;alfarcdtfydb6EhraLclfhLaQcefgChQaAaC9hmbkaoaOcd4fa8FcdVararcdSE86bbaOclfgOal6mbkkabaefh8Kabcefhralcd4gecbawEhqadcefhHaoc;abfceVhzcbhxdndninaiax9nmeaoc;qofcbcjdz:vjjjb8Aa8Kar9Raq6mdadaxal2gQfhkcbh8JaHaQfhsarcbaqz:vjjjbghaqfh5aDaiax9RaxaDfai6EgPcsfgrcl4cifcd4hAarc9WGg8LThmindndndndndndndndndndnawTmbaoa8Jcd4fRbbgLciGPlbedlbkaPTmdaka8Jfhraoc;abfa8JfRbbhLaoc;qofhQaPhCinaQarRbbg8AaL9RgLcetaLcKtcK91cr4786bbaQcefhQaralfhra8AhLaCcufgCmbxikkaPTmia8JcitcwGhEaoc;abfa8JceVfRbbcwtaoc;abfa8Jc9:GgrfRbbVhLakarfhraoc;qofhQaPhCinaQar8Vbbg8AaL9RgLcetaLcztcz91cs47cFFiGaE486bbaQcefhQaralfhra8AhLaCcufgCmbxdkkaza8Jc98GgEfhrasaEfh8Aaoc;abfaEfRbbhCcwhQinarRbbaQtaCVhCarcefhraQcwfgQca9hmbkaPTmbaLcl4hYa8JcitcKGh3akaEfhEcbhKinaERbbhLcwhra8AhQinaQRbbartaLVhLaQcefhQarcwfgrca9hmbkaoc;qofaKfaLaC7aY93a3486bba8Aalfh8AaEalfhEaLhCaKcefgKaP9hmbkkawmbcbhrxlka8LTmbcbhrdninaoc;qofarfgQcwf8PibaQ8Pib:e9qTmearczfgra8L9pmdxbkkdnavmbcehrxikcbhEaAhKaAhYinaoc;qofaEfgrcwf8Pibhyar8Pibh8PcdhLcbhQinaLaraQfRbbcb9hfhLaQcefgQcz9hmbkclhCcbhQinaCaraQfRbbcd0fhCaQcefgQcz9hmbkcwh8AcbhQina8AaraQfRbbcP0fh8AaQcefgQcz9hmbkaLaCaLaC6Egra8Aara8A6Egrczarcz6EaYfhYarcucbaya8P:e9cb9sEgQaraQ6EaKfhKaEczfgEa8L9pmdxbkkaha8Jcd4fgrarRbbcda8JcetcoGtV86bbxikdnaKaP6mbaYaP6mbaha8Jcd4fgrarRbbcia8JcetcoGtV86bba8Ka59RaP6mra5aoc;qofaPzNjjjbaPfh5xikaKaY9phrkaha8Jcd4fgQaQRbbara8JcetcoGtV86bbka8Ka59RaA6mla5cbaAz:vjjjbgOaAfhYdndna8Lmbamhrxekdna8KaY9RcK9pmbamhrxekarcdtc:q1jjbfcj1jjbawEg5ydxggcetc;:FFFeGh8Fcuh3cuagtcu7cFeGhacbh8Maoc;qofhLinaoc;qofa8MfhXczhEdndndnagPDbeeeeeeedekcucbaXcwf8PibaX8Pib:e9cb9sEhExekcbhra8FhEinaEaaaLarfRbb9nfhEarcefgrcz9hmbkkcih8Ecbh8AinczhQdndndna5a8AcdtfydbgKPDbeeeeeeedekcucbaXcwf8PibaX8Pib:e9cb9sEhQxekaKcetc;:FFFeGhQcuaKtcu7cFeGhCcbhrinaQaCaLarfRbb9nfhQarcefgrcz9hmbkkdndnaQaE6mbaKa39hmeaQaE9hmea5a8EcdtfydbcwSmeka8Ah8EaQhEka8Acefg8Aci9hmbkaOa8Mco4fgrarRbba8Ea8Mci4coGtV86bbdndndna5a8Ecdtfydbg3PDdbbbbbbbebkdncwa39Tg8ETmbcua3tcu7hQdndna3ceSmbcbh8NaLhXinaXhra8Eh8AcbhCinarRbbgEaQcFeGgKaEaK6EaCa3tVhCarcefhra8Acufg8AmbkaYaC86bbaXa8EfhXaYcefhYa8Na8Efg8Ncz6mbxdkkcbh8NaLhXinaXhra8Eh8AcbhCinarRbbgEaQcFeGgKaEaK6EaCcetVhCarcefhra8Acufg8AmbkaYaC:T9cFe:d9c:c:qj:bw9:9c:q;c1:I1e:d9c:b:c:e1z9:9ca188bbaXa8EfhXaYcefhYa8Na8Efg8Ncz6mbkkcbhrinaYaLarfRbbgC86bbaYaCaQcFeG9pfhYarcefgrcz9hmbxikkdna3ceSmbinaYcb86bbaYcefhYxbkkinaYcb86bbaYcefhYxbkkaYaX8Pbb83bbaYcwfaXcwf8Pbb83bbaYczfhYka8Mczfg8Ma8L9pgrmeaLczfhLa8KaY9RcK9pmbkkarTmlaYh5aYTmlka8Jcefg8Jal9hmbkaoc;abfakaPcufal2falzNjjjb8AaPaxfhxa5hra5mbkcbhrxdkdna8Kar9RaqalfgQcKcaawEgLaQaL0EgC9pmbcbhrxdkdnaQaL9pmbarcbaCaQ9RgQz:vjjjbaQfhrkaraoc;adfalzNjjjbalfhrdnawTmbaraoaezNjjjbaefhrkarab9Rhrxekcbhrkaoc;qwf8KjjjjbarkCbabaeadaialcdz:bjjjbk9reduaecd4gdaefgicaaica0Eabcj;abae9Uc;WFbGcjdaeca0Egifcufai9Uae2aiadfaicl4cifcd4f2fcefkmbcbabBd;C:kjjbk:Ese5u8Jjjjjbc;ae9Rgl8Kjjjjbcbhvdnaici9UgocHfae0mbabcbyd;m:kjjbgrc;GeV86bbalc;abfcFecjez:vjjjb8AalcUfgw9cu83ibalc8WfgD9cu83ibalcyfgq9cu83ibalcafgk9cu83ibalcKfgx9cu83ibalczfgm9cu83ibal9cu83iwal9cu83ibabaefc9WfhPabcefgsaofhednaiTmbcmcsarcb9kgzEhHcbhOcbhAcbhCcbhXcbhQindnaeaP9nmbcbhvxikaQcufhvadaCcdtfgLydbhKaLcwfydbhYaLclfydbh8AcbhEdndndninalc;abfavcsGcitfgoydlh3dndndnaoydbgoaK9hmba3a8ASmekdnaoa8A9hmba3aY9hmbaEcefhExekaoaY9hmea3aK9hmeaEcdfhEkaEc870mdaXcufhvaLaEciGcx2goc;i1jjbfydbcdtfydbh3aLaoc;e1jjbfydbcdtfydbh8AaLaoc;a1jjbfydbcdtfydbhKcbhodnindnalavcsGcdtfydba39hmbaohYxdkcuhYavcufhvaocefgocz9hmbkkaOa3aOSgvaYce9iaYaH9oVgoGfhOdndndncbcsavEaYaoEgvcs9hmbarce9imba3a3aAa3cefaASgvEgAcefSmecmcsavEhvkasavaEcdtc;WeGV86bbavcs9hmea3aA9Rgvcetavc8F917hvinaeavcFb0crtavcFbGV86bbaecefheavcje6hoavcr4hvaoTmbka3hAxvkcPhvasaEcdtcPV86bba3hAkavTmiavaH9omicdhocehEaQhYxlkavcufhvaEclfgEc;ab9hmbkkdnaLceaYaOSceta8AaOSEcx2gvc;a1jjbfydbcdtfydbgKTaLavc;e1jjbfydbcdtfydbg8AceSGaLavc;i1jjbfydbcdtfydbg3cdSGaOcb9hGazGg5ce9hmbaw9cu83ibaD9cu83ibaq9cu83ibak9cu83ibax9cu83ibam9cu83ibal9cu83iwal9cu83ibcbhOkcbhEaXcufgvhodnindnalaocsGcdtfydba8A9hmbaEhYxdkcuhYaocufhoaEcefgEcz9hmbkkcbhodnindnalavcsGcdtfydba39hmbaohExdkcuhEavcufhvaocefgocz9hmbkkaOaKaOSg8EfhLdndnaYcm0mbaYcefhYxekcbcsa8AaLSgvEhYaLavfhLkdndnaEcm0mbaEcefhExekcbcsa3aLSgvEhEaLavfhLkc9:cua8EEh8FcbhvaEaYcltVgacFeGhodndndninavc:W1jjbfRbbaoSmeavcefgvcz9hmbxdkka5aKaO9havcm0VVmbasavc;WeV86bbxekasa8F86bbaeaa86bbaecefhekdna8EmbaKaA9Rgvcetavc8F917hvinaeavcFb0gocrtavcFbGV86bbavcr4hvaecefheaombkaKhAkdnaYcs9hmba8AaA9Rgvcetavc8F917hvinaeavcFb0gocrtavcFbGV86bbavcr4hvaecefheaombka8AhAkdnaEcs9hmba3aA9Rgvcetavc8F917hvinaeavcFb0gocrtavcFbGV86bbavcr4hvaecefheaombka3hAkalaXcdtfaKBdbaXcefcsGhvdndnaYPzbeeeeeeeeeeeeeebekalavcdtfa8ABdbaXcdfcsGhvkdndnaEPzbeeeeeeeeeeeeeebekalavcdtfa3BdbavcefcsGhvkcihoalc;abfaQcitfgEaKBdlaEa8ABdbaQcefcsGhYcdhEavhXaLhOxekcdhoalaXcdtfa3BdbcehEaXcefcsGhXaQhYkalc;abfaYcitfgva8ABdlava3Bdbalc;abfaQaEfcsGcitfgva3BdlavaKBdbascefhsaQaofcsGhQaCcifgCai6mbkkdnaeaP9nmbcbhvxekcbhvinaeavfavc:W1jjbfRbb86bbavcefgvcz9hmbkaeab9Ravfhvkalc;aef8KjjjjbavkZeeucbhddninadcefgdc8F0meceadtae6mbkkadcrfcFeGcr9Uci2cdfabci9U2cHfkmbcbabBd;m:kjjbk:Adewu8Jjjjjbcz9Rhlcbhvdnaicvfae0mbcbhvabcbRb;m:kjjbc;qeV86bbal9cb83iwabcefhoabaefc98fhrdnaiTmbcbhwcbhDindnaoar6mbcbskadaDcdtfydbgqalcwfawaqav9Rgvavc8F91gv7av9Rc507gwcdtfgkydb9Rgvc8E91c9:Gavcdt7awVhvinaoavcFb0gecrtavcFbGV86bbavcr4hvaocefhoaembkakaqBdbaqhvaDcefgDai9hmbkkdnaoar9nmbcbskaocbBbbaoab9RclfhvkavkBeeucbhddninadcefgdc8F0meceadtae6mbkkadcwfcFeGcr9Uab2cvfk:bvli99dui99ludnaeTmbcuadcetcuftcu7:Zhvdndncuaicuftcu7:ZgoJbbbZMgr:lJbbb9p9DTmbar:Ohwxekcjjjj94hwkcbhicbhDinalclfIdbgrJbbbbJbbjZalIdbgq:lar:lMalcwfIdbgk:lMgr:varJbbbb9BEgrNhxaqarNhrdndnakJbbbb9GTmbaxhqxekJbbjZar:l:tgqaq:maxJbbbb9GEhqJbbjZax:l:tgxax:marJbbbb9GEhrkdndnalcxfIdbgxJbbj:;axJbbj:;9GEgkJbbjZakJbbjZ9FEavNJbbbZJbbb:;axJbbbb9GEMgx:lJbbb9p9DTmbax:Ohmxekcjjjj94hmkdndnaqJbbj:;aqJbbj:;9GEgxJbbjZaxJbbjZ9FEaoNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:OhPxekcjjjj94hPkdndnarJbbj:;arJbbj:;9GEgqJbbjZaqJbbjZ9FEaoNJbbbZJbbb:;arJbbbb9GEMgr:lJbbb9p9DTmbar:Ohsxekcjjjj94hskdndnadcl9hmbabaifgzas86bbazcifam86bbazcdfaw86bbazcefaP86bbxekabaDfgzas87ebazcofam87ebazclfaw87ebazcdfaP87ebkalczfhlaiclfhiaDcwfhDaecufgembkkk;hlld99eud99eudnaeTmbdndncuaicuftcu7:ZgvJbbbZMgo:lJbbb9p9DTmbao:Ohixekcjjjj94hikaic;8FiGhrinabcofcicdalclfIdb:lalIdb:l9EgialcwfIdb:lalaicdtfIdb:l9EEgialcxfIdb:lalaicdtfIdb:l9EEgiarV87ebdndnJbbj:;JbbjZalaicdtfIdbJbbbb9DEgoalaicd7cdtfIdbJ;Zl:1ZNNgwJbbj:;awJbbj:;9GEgDJbbjZaDJbbjZ9FEavNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohqxekcjjjj94hqkabcdfaq87ebdndnalaicefciGcdtfIdbJ;Zl:1ZNaoNgwJbbj:;awJbbj:;9GEgDJbbjZaDJbbjZ9FEavNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohqxekcjjjj94hqkabaq87ebdndnaoalaicufciGcdtfIdbJ;Zl:1ZNNgoJbbj:;aoJbbj:;9GEgwJbbjZawJbbjZ9FEavNJbbbZJbbb:;aoJbbbb9GEMgo:lJbbb9p9DTmbao:Ohixekcjjjj94hikabclfai87ebabcwfhbalczfhlaecufgembkkk;3viDue99eu8Jjjjjbcjd9Rgo8Kjjjjbadcd4hrdndndndnavcd9hmbadcl6meaohwarhDinawc:CuBdbawclfhwaDcufgDmbkaeTmiadcl6mdarcdthqalhkcbhxinaohwakhDarhminawawydbgPcbaDIdbgs:8cL4cFeGc:cufasJbbbb9BEgzaPaz9kEBdbaDclfhDawclfhwamcufgmmbkakaqfhkaxcefgxaeSmixbkkaeTmdxekaeTmekarcdthkavce9hhqadcl6hdcbhxindndndnaqmbadmdc:CuhDalhwarhminaDcbawIdbgs:8cL4cFeGc:cufasJbbbb9BEgPaDaP9kEhDawclfhwamcufgmmbxdkkc:CuhDdndnavPleddbdkadmdaohwalhmarhPinawcbamIdbgs:8cL4cFeGgzc;:bazc;:b0Ec:cufasJbbbb9BEBdbamclfhmawclfhwaPcufgPmbxdkkadmecbhwarhminaoawfcbalawfIdbgs:8cL4cFeGgPc8AaPc8A0Ec:cufasJbbbb9BEBdbawclfhwamcufgmmbkkadmbcbhwarhPinaDhmdnavceSmbaoawfydbhmkdndnalawfIdbgscjjj;8iamai9RcefgmcLt9R::NJbbbZJbbb:;asJbbbb9GEMgs:lJbbb9p9DTmbas:Ohzxekcjjjj94hzkabawfazcFFFrGamcKtVBdbawclfhwaPcufgPmbkkabakfhbalakfhlaxcefgxae9hmbkkaocjdf8Kjjjjbk;YqdXui998Jjjjjbc:qd9Rgv8Kjjjjbavc:Sefcbc;Kbz:vjjjb8AcbhodnadTmbcbhoaiTmbdndnabaeSmbaehrxekavcuadcdtgwadcFFFFi0Ecbyd;u:kjjbHjjjjbbgrBd:SeavceBd:mdaraeawzNjjjb8Akavc:GefcwfcbBdbav9cb83i:Geavc:Gefaradaiavc:Sefz:ojjjbavyd:GehDadci9Ugqcbyd;u:kjjbHjjjjbbheavc:Sefavyd:mdgkcdtfaeBdbavakcefgwBd:mdaecbaqz:vjjjbhxavc:SefawcdtfcuaicdtaicFFFFi0Ecbyd;u:kjjbHjjjjbbgmBdbavakcdfgPBd:mdalc;ebfhsaDheamhwinawalIdbasaeydbgzcwazcw6EcdtfIdbMUdbaeclfheawclfhwaicufgimbkavc:SefaPcdtfcuaqcdtadcFFFF970Ecbyd;u:kjjbHjjjjbbgPBdbdnadci6mbarheaPhwaqhiinawamaeydbcdtfIdbamaeclfydbcdtfIdbMamaecwfydbcdtfIdbMUdbaecxfheawclfhwaicufgimbkkakcifhoalc;ebfhHavc;qbfhOavheavyd:KehAavyd:OehCcbhzcbhwcbhXcehQinaehLcihkarawci2gKcdtfgeydbhsaeclfydbhdabaXcx2fgicwfaecwfydbgYBdbaiclfadBdbaiasBdbaxawfce86bbaOaYBdwaOadBdlaOasBdbaPawcdtfcbBdbdnazTmbcihkaLhiinaOakcdtfaiydbgeBdbakaeaY9haeas9haead9hGGfhkaiclfhiazcufgzmbkkaXcefhXcbhzinaCaAarazaKfcdtfydbcdtgifydbcdtfgYheaDaifgdydbgshidnasTmbdninaeydbawSmeaeclfheaicufgiTmdxbkkaeaYascdtfc98fydbBdbadadydbcufBdbkazcefgzci9hmbkdndnakTmbcuhwJbbbbh8Acbhdavyd:KehYavyd:OehKindndnaDaOadcdtfydbcdtgzfydbgembadcefhdxekadcs0hiamazfgsIdbhEasalcbadcefgdaiEcdtfIdbaHaecwaecw6EcdtfIdbMg3Udba3aE:th3aecdthiaKaYazfydbcdtfheinaPaeydbgzcdtfgsa3asIdbMgEUdbaEa8Aa8AaE9DgsEh8AazawasEhwaeclfheaic98fgimbkkadak9hmbkawcu9hmekaQaq9pmdindnaxaQfRbbmbaQhwxdkaqaQcefgQ9hmbxikkakczakcz6EhzaOheaLhOawcu9hmbkkaocdtavc:Seffc98fhedninaoTmeaeydbcbyd;q:kjjbH:bjjjbbaec98fheaocufhoxbkkavc:qdf8Kjjjjbk;IlevucuaicdtgvaicFFFFi0Egocbyd;u:kjjbHjjjjbbhralalyd9GgwcdtfarBdbalawcefBd9GabarBdbaocbyd;u:kjjbHjjjjbbhralalyd9GgocdtfarBdbalaocefBd9GabarBdlcuadcdtadcFFFFi0Ecbyd;u:kjjbHjjjjbbhralalyd9GgocdtfarBdbalaocefBd9GabarBdwabydbcbavz:vjjjb8Aadci9UhDdnadTmbabydbhoaehladhrinaoalydbcdtfgvavydbcefBdbalclfhlarcufgrmbkkdnaiTmbabydbhlabydlhrcbhvaihoinaravBdbarclfhralydbavfhvalclfhlaocufgombkkdnadci6mbabydlhrabydwhvcbhlinaecwfydbhoaeclfydbhdaraeydbcdtfgwawydbgwcefBdbavawcdtfalBdbaradcdtfgdadydbgdcefBdbavadcdtfalBdbaraocdtfgoaoydbgocefBdbavaocdtfalBdbaecxfheaDalcefgl9hmbkkdnaiTmbabydlheabydbhlinaeaeydbalydb9RBdbalclfhlaeclfheaicufgimbkkkQbabaeadaic;K1jjbz:njjjbkQbabaeadaic;m:jjjbz:njjjbk9DeeuabcFeaicdtz:vjjjbhlcbhbdnadTmbindnalaeydbcdtfgiydbcu9hmbaiabBdbabcefhbkaeclfheadcufgdmbkkabk;:kivuo99lu8Jjjjjbcj;Hb9Rgl8Kjjjjbcbhvalc:m;Gbfcbc;Kbz:vjjjb8AalcuadcdtadcFFFFi0Egocbyd;u:kjjbHjjjjbbgrBd:m9GalceBd;S9Galcwfcbyd:8:kjjbBdbalcb8Pd:0:kjjb83ibalc;W;Gbfcwfcbyd;i:kjjbBdbalcb8Pd;a:kjjb83i;W9Gaicd4hwdndnadmbJFFuFhDJFFuuhqJFFuuhkJFFuFhxJFFuuhmJFFuFhPxekawcdthsaehzincbhiinalaifgHazaifIdbgDaHIdbgxaxaD9EEUdbalc;W;GbfaifgHaDaHIdbgxaxaD9DEUdbaiclfgicx9hmbkazasfhzavcefgvad9hmbkalIdwhqalId;49GhDalIdlhkalId;09GhxalIdbhmalId;W9GhPkdndnadTmbJbbbbJbbjZJbbbbaPam:tgPaPJbbbb9DEgPaxak:tgxaxaP9DEgxaDaq:tgDaDax9DEgD:vaDJbbbb9BEhDawcdthsarhHadhzindndnaDaeIdbam:tNJb;au9eNJbbbZMgx:lJbbb9p9DTmbax:Ohixekcjjjj94hikaicztaicwtcj;GiGVaicsGVc:p;G:dKGcH2c;d;H:WKGcv2c;j:KM;jbGhvdndnaDaeclfIdbak:tNJb;au9eNJbbbZMgx:lJbbb9p9DTmbax:Ohixekcjjjj94hikaicztaicwtcj;GiGVaicsGVc:p;G:dKGcH2c;d;H:WKGcq2cM;j:KMeGavVhvdndnaDaecwfIdbaq:tNJb;au9eNJbbbZMgx:lJbbb9p9DTmbax:Ohixekcjjjj94hikaHavaicztaicwtcj;GiGVaicsGVc:p;G:dKGcH2c;d;H:WKGcC2c:KM;j:KdGVBdbaeasfheaHclfhHazcufgzmbkalcbcj;Gbz:vjjjbhiarhHadheinaiaHydbgzcFrGcx2fgvavydbcefBdbaiazcq4cFrGcx2fgvavydlcefBdlaiazcC4cFrGcx2fgzazydwcefBdwaHclfhHaecufgembxdkkalcbcj;Gbz:vjjjb8AkcbhHcbhzcbhecbhvinalaHfgiydbhsaiazBdbaicwfgwydbhOawavBdbaiclfgiydbhwaiaeBdbasazfhzaOavfhvawaefheaHcxfgHcj;Gb9hmbkcbhHalaocbyd;u:kjjbHjjjjbbgiBd:q9GdnadTmbabhzinazaHBdbazclfhzadaHcefgH9hmbkabhHadhzinalaraHydbgecdtfydbcFrGcx2fgvavydbgvcefBdbaiavcdtfaeBdbaHclfhHazcufgzmbkaihHadhzinalaraHydbgecdtfydbcq4cFrGcx2fgvavydlgvcefBdlabavcdtfaeBdbaHclfhHazcufgzmbkabhHadhzinalaraHydbgecdtfydbcC4cFrGcx2fgvavydwgvcefBdwaiavcdtfaeBdbaHclfhHazcufgzmbkcbhHinabaiydbcdtfaHBdbaiclfhiadaHcefgH9hmbkkclhidninaic98Smealc:m;Gbfaifydbcbyd;q:kjjbH:bjjjbbaic98fhixbkkalcj;Hbf8Kjjjjbk9teiucbcbyd;y:kjjbgeabcifc98GfgbBd;y:kjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;teeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiaeydlBdlaiaeydwBdwaiaeydxBdxaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk:3eedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdxaialBdwaialBdlaialBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabk9teiucbcbyd;y:kjjbgeabcrfc94GfgbBd;y:kjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik9:eiuZbhedndncbyd;y:kjjbgdaecztgi9nmbcuheadai9RcFFifcz4nbcuSmekadhekcbabae9Rcifc98Gcbyd;y:kjjbfgdBd;y:kjjbdnadZbcztge9nmbadae9RcFFifcz4nb8Akkk;Qddbcjwk;mdbbbbdbbblbbbwbbbbbbbebbbdbbblbbbwbbbbbbbbbbbbbbbb4:h9w9N94:P:gW:j9O:ye9Pbbbbbbebbbdbbbebbbdbbbbbbbdbbbbbbbebbbbbbb:l29hZ;69:9kZ;N;76Z;rg97Z;z;o9xZ8J;B85Z;:;u9yZ;b;k9HZ:2;Z9DZ9e:l9mZ59A8KZ:r;T3Z:A:zYZ79OHZ;j4::8::Y:D9V8:bbbb9s:49:Z8R:hBZ9M9M;M8:L;z;o8:;8:PG89q;x:J878R:hQ8::M:B;e87bbbbbbjZbbjZbbjZ:E;V;N8::Y:DsZ9i;H;68:xd;R8:;h0838:;W:NoZbbbb:WV9O8:uf888:9i;H;68:9c9G;L89;n;m9m89;D8Ko8:bbbbf:8tZ9m836ZS:2AZL;zPZZ818EZ9e:lxZ;U98F8:819E;68:FFuuFFuuFFuuFFuFFFuFFFuFbc;mqkzebbbebbbdbbb9G:vbb"),{}).then(function(A){(r=A.instance).exports.__wasm_call_ctors(),r.exports.meshopt_encodeVertexVersion(0),r.exports.meshopt_encodeIndexVersion(1)})})();var In=function(){var r=new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,3,2,0,0,5,3,1,0,1,12,1,0,10,22,2,12,0,65,0,65,0,65,0,252,10,0,0,11,7,0,65,0,253,15,26,11]),e=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if(typeof WebAssembly!="object")return{supported:!1};var t,a=WebAssembly.validate(r)?i("b9H79TebbbeKl9Gbb9Gvuuuuueu9Giuuub9Geueuikqbbebeedddilve9Weeeviebeoweuec:q:6dkr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbdY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVblE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtboK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbrL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbwl79IV9RbDq;X9Mqlbzik9:evu8Jjjjjbcz9Rhbcbheincbhdcbhiinabcwfadfaicjuaead4ceGglE86bbaialfhiadcefgdcw9hmbkaec:q:yjjbfai86bbaecitc:q1jjbfab8Piw83ibaecefgecjd9hmbkk:183lYud97dur978Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnalTmbcuhoaiRbbgrc;WeGc:Ge9hmbarcsGgwce0mbc9:hoalcufadcd4cbawEgDadfgrcKcaawEgqaraq0Egk6mbaicefhxavaialfgmar9Rgoad;8qbbcj;abad9Uc;WFbGcjdadca0EhPdndndnadTmbaoadfhscbhzinaeaz9nmdamax9RaD6miabazad2fhHaxaDfhOaPaeaz9RazaPfae6EgAcsfgocl4cifcd4hCavcj;cbfaoc9WGgXcetfhQavcj;cbfaXci2fhLavcj;cbfaXfhKcbhYaoc;ab6h8AincbhodnawTmbaxaYcd4fRbbhokaocFeGhEcbh3avcj;cbfh5indndndndnaEa3cet4ciGgoc9:fPdebdkamaO9RaX6mwavcj;cbfa3aX2faOaX;8qbbaOaAfhOxdkavcj;cbfa3aX2fcbaX;8kbxekamaO9RaC6moaoclVcbawEhraOaCfhocbhidna8Ambamao9Rc;Gb6mbcbhlina5alfhidndndndndndnaOalco4fRbbgqciGarfPDbedibledibkaipxbbbbbbbbbbbbbbbbpklbxlkaiaopbblaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLg8Ecdp:mea8EpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9og8Fpxiiiiiiiiiiiiiiiip8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaaaoclffahc:q:yjjbfRbbfhoxikaiaopbbwaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9og8Fpxssssssssssssssssp8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaaaocwffahc:q:yjjbfRbbfhoxdkaiaopbbbpklbaoczfhoxekaiaopbbdaoRbbgacitc:q1jjbfpbibaac:q:yjjbfRbbgapsaoRbeghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPpklbaaaocdffahc:q:yjjbfRbbfhokdndndndndndnaqcd4ciGarfPDbedibledibkaiczfpxbbbbbbbbbbbbbbbbpklbxlkaiczfaopbblaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLg8Ecdp:mea8EpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9og8Fpxiiiiiiiiiiiiiiiip8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaaaoclffahc:q:yjjbfRbbfhoxikaiczfaopbbwaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9og8Fpxssssssssssssssssp8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaaaocwffahc:q:yjjbfRbbfhoxdkaiczfaopbbbpklbaoczfhoxekaiczfaopbbdaoRbbgacitc:q1jjbfpbibaac:q:yjjbfRbbgapsaoRbeghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPpklbaaaocdffahc:q:yjjbfRbbfhokdndndndndndnaqcl4ciGarfPDbedibledibkaicafpxbbbbbbbbbbbbbbbbpklbxlkaicafaopbblaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLg8Ecdp:mea8EpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9og8Fpxiiiiiiiiiiiiiiiip8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaaaoclffahc:q:yjjbfRbbfhoxikaicafaopbbwaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9og8Fpxssssssssssssssssp8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaaaocwffahc:q:yjjbfRbbfhoxdkaicafaopbbbpklbaoczfhoxekaicafaopbbdaoRbbgacitc:q1jjbfpbibaac:q:yjjbfRbbgapsaoRbeghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPpklbaaaocdffahc:q:yjjbfRbbfhokdndndndndndnaqco4arfPDbedibledibkaic8Wfpxbbbbbbbbbbbbbbbbpklbxlkaic8Wfaopbblaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLg8Ecdp:mea8EpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9og8Fpxiiiiiiiiiiiiiiiip8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngicitc:q1jjbfpbibaic:q:yjjbfRbbgipsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Ngqcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaiaoclffaqc:q:yjjbfRbbfhoxikaic8Wfaopbbwaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9og8Fpxssssssssssssssssp8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngicitc:q1jjbfpbibaic:q:yjjbfRbbgipsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Ngqcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaiaocwffaqc:q:yjjbfRbbfhoxdkaic8Wfaopbbbpklbaoczfhoxekaic8WfaopbbdaoRbbgicitc:q1jjbfpbibaic:q:yjjbfRbbgipsaoRbegqcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPpklbaiaocdffaqc:q:yjjbfRbbfhokalc;abfhialcjefaX0meaihlamao9Rc;Fb0mbkkdnaiaX9pmbaici4hlinamao9RcK6mwa5aifhqdndndndndndnaOaico4fRbbalcoG4ciGarfPDbedibledibkaqpxbbbbbbbbbbbbbbbbpkbbxlkaqaopbblaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLg8Ecdp:mea8EpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9og8Fpxiiiiiiiiiiiiiiiip8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spkbbaaaoclffahc:q:yjjbfRbbfhoxikaqaopbbwaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9og8Fpxssssssssssssssssp8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spkbbaaaocwffahc:q:yjjbfRbbfhoxdkaqaopbbbpkbbaoczfhoxekaqaopbbdaoRbbgacitc:q1jjbfpbibaac:q:yjjbfRbbgapsaoRbeghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPpkbbaaaocdffahc:q:yjjbfRbbfhokalcdfhlaiczfgiaX6mbkkaohOaoTmoka5aXfh5a3cefg3cl9hmbkdndndndnawTmbasaYcd4fRbbglciGPlbedwbkaXTmdavcjdfaYfhlavaYfpbdbhgcbhoinalavcj;cbfaofpblbg8JaKaofpblbg8KpmbzeHdOiAlCvXoQrLg8LaQaofpblbg8MaLaofpblbg8NpmbzeHdOiAlCvXoQrLgypmbezHdiOAlvCXorQLg8Ecep9Ta8Epxeeeeeeeeeeeeeeeeg8Fp9op9Hp9rg8Eagp9Uggp9Abbbaladfglaga8Ea8Epmlvorlvorlvorlvorp9Uggp9Abbbaladfglaga8Ea8EpmwDqkwDqkwDqkwDqkp9Uggp9Abbbaladfglaga8Ea8EpmxmPsxmPsxmPsxmPsp9Uggp9Abbbaladfglaga8LaypmwDKYqk8AExm35Ps8E8Fg8Ecep9Ta8Ea8Fp9op9Hp9rg8Ep9Uggp9Abbbaladfglaga8Ea8Epmlvorlvorlvorlvorp9Uggp9Abbbaladfglaga8Ea8EpmwDqkwDqkwDqkwDqkp9Uggp9Abbbaladfglaga8Ea8EpmxmPsxmPsxmPsxmPsp9Uggp9Abbbaladfglaga8Ja8KpmwKDYq8AkEx3m5P8Es8Fg8Ja8Ma8NpmwKDYq8AkEx3m5P8Es8Fg8KpmbezHdiOAlvCXorQLg8Ecep9Ta8Ea8Fp9op9Hp9rg8Ep9Uggp9Abbbaladfglaga8Ea8Epmlvorlvorlvorlvorp9Uggp9Abbbaladfglaga8Ea8EpmwDqkwDqkwDqkwDqkp9Uggp9Abbbaladfglaga8Ea8EpmxmPsxmPsxmPsxmPsp9Uggp9Abbbaladfglaga8Ja8KpmwDKYqk8AExm35Ps8E8Fg8Ecep9Ta8Ea8Fp9op9Hp9rg8Ep9Ug8Fp9Abbbaladfgla8Fa8Ea8Epmlvorlvorlvorlvorp9Ug8Fp9Abbbaladfgla8Fa8Ea8EpmwDqkwDqkwDqkwDqkp9Ug8Fp9Abbbaladfgla8Fa8Ea8EpmxmPsxmPsxmPsxmPsp9Uggp9AbbbaladfhlaoczfgoaX6mbxikkaXTmeavcjdfaYfhlavaYfpbdbhgcbhoinalavcj;cbfaofpblbg8JaKaofpblbg8KpmbzeHdOiAlCvXoQrLg8LaQaofpblbg8MaLaofpblbg8NpmbzeHdOiAlCvXoQrLgypmbezHdiOAlvCXorQLg8Ecep:nea8Epxebebebebebebebebg8Fp9op:bep9rg8Eagp:oeggp9Abbbaladfglaga8Ea8Epmlvorlvorlvorlvorp:oeggp9Abbbaladfglaga8Ea8EpmwDqkwDqkwDqkwDqkp:oeggp9Abbbaladfglaga8Ea8EpmxmPsxmPsxmPsxmPsp:oeggp9Abbbaladfglaga8LaypmwDKYqk8AExm35Ps8E8Fg8Ecep:nea8Ea8Fp9op:bep9rg8Ep:oeggp9Abbbaladfglaga8Ea8Epmlvorlvorlvorlvorp:oeggp9Abbbaladfglaga8Ea8EpmwDqkwDqkwDqkwDqkp:oeggp9Abbbaladfglaga8Ea8EpmxmPsxmPsxmPsxmPsp:oeggp9Abbbaladfglaga8Ja8KpmwKDYq8AkEx3m5P8Es8Fg8Ja8Ma8NpmwKDYq8AkEx3m5P8Es8Fg8KpmbezHdiOAlvCXorQLg8Ecep:nea8Ea8Fp9op:bep9rg8Ep:oeggp9Abbbaladfglaga8Ea8Epmlvorlvorlvorlvorp:oeggp9Abbbaladfglaga8Ea8EpmwDqkwDqkwDqkwDqkp:oeggp9Abbbaladfglaga8Ea8EpmxmPsxmPsxmPsxmPsp:oeggp9Abbbaladfglaga8Ja8KpmwDKYqk8AExm35Ps8E8Fg8Ecep:nea8Ea8Fp9op:bep9rg8Ep:oeg8Fp9Abbbaladfgla8Fa8Ea8Epmlvorlvorlvorlvorp:oeg8Fp9Abbbaladfgla8Fa8Ea8EpmwDqkwDqkwDqkwDqkp:oeg8Fp9Abbbaladfgla8Fa8Ea8EpmxmPsxmPsxmPsxmPsp:oeggp9AbbbaladfhlaoczfgoaX6mbxdkkaXTmbcbhocbalcl4gl9Rc8FGhiavcjdfaYfhravaYfpbdbh8Finaravcj;cbfaofpblbggaKaofpblbg8JpmbzeHdOiAlCvXoQrLg8KaQaofpblbg8LaLaofpblbg8MpmbzeHdOiAlCvXoQrLg8NpmbezHdiOAlvCXorQLg8Eaip:Rea8Ealp:Sep9qg8Ea8Fp9rg8Fp9Abbbaradfgra8Fa8Ea8Epmlvorlvorlvorlvorp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmwDqkwDqkwDqkwDqkp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmxmPsxmPsxmPsxmPsp9rg8Fp9Abbbaradfgra8Fa8Ka8NpmwDKYqk8AExm35Ps8E8Fg8Eaip:Rea8Ealp:Sep9qg8Ep9rg8Fp9Abbbaradfgra8Fa8Ea8Epmlvorlvorlvorlvorp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmwDqkwDqkwDqkwDqkp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmxmPsxmPsxmPsxmPsp9rg8Fp9Abbbaradfgra8Faga8JpmwKDYq8AkEx3m5P8Es8Fgga8La8MpmwKDYq8AkEx3m5P8Es8Fg8JpmbezHdiOAlvCXorQLg8Eaip:Rea8Ealp:Sep9qg8Ep9rg8Fp9Abbbaradfgra8Fa8Ea8Epmlvorlvorlvorlvorp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmwDqkwDqkwDqkwDqkp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmxmPsxmPsxmPsxmPsp9rg8Fp9Abbbaradfgra8Faga8JpmwDKYqk8AExm35Ps8E8Fg8Eaip:Rea8Ealp:Sep9qg8Ep9rg8Fp9Abbbaradfgra8Fa8Ea8Epmlvorlvorlvorlvorp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmwDqkwDqkwDqkwDqkp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmxmPsxmPsxmPsxmPsp9rg8Fp9AbbbaradfhraoczfgoaX6mbkkaYclfgYad6mbkaHavcjdfaAad2;8qbbavavcjdfaAcufad2fad;8qbbaAazfhzc9:hoaOhxaOmbxlkkaeTmbaDalfhrcbhocuhlinaralaD9RglfaD6mdaPaeao9RaoaPfae6Eaofgoae6mbkaial9Rhxkcbc99amax9RakSEhoxekc9:hokavcj;kbf8Kjjjjbaokwbz:bjjjbk::seHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgwce0mbavc;abfcFecje;8kbavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhDaicefgqarfhidnaeTmbcmcsawceSEhkcbhxcbhmcbhPcbhwcbhlindnaiaD9nmbc9:hoxikdndnaqRbbgoc;Ve0mbavc;abfalaocu7gscl4fcsGcitfgzydlhrazydbhzdnaocsGgHak9pmbavawasfcsGcdtfydbaxaHEhoaHThsdndnadcd9hmbabaPcetfgHaz87ebaHclfao87ebaHcdfar87ebxekabaPcdtfgHazBdbaHcwfaoBdbaHclfarBdbkaxasfhxcdhHavawcdtfaoBdbawasfhwcehsalhOxdkdndnaHcsSmbaHc987aHamffcefhoxekaicefhoai8SbbgHcFeGhsdndnaHcu9mmbaohixekaicvfhiascFbGhscrhHdninao8SbbgOcFbGaHtasVhsaOcu9kmeaocefhoaHcrfgHc8J9hmbxdkkaocefhikasce4cbasceG9R7amfhokdndnadcd9hmbabaPcetfgHaz87ebaHclfao87ebaHcdfar87ebxekabaPcdtfgHazBdbaHcwfaoBdbaHclfarBdbkcdhHavawcdtfaoBdbcehsawcefhwalhOaohmxekdnaocpe0mbaxcefgHavawaDaocsGfRbbgocl49RcsGcdtfydbaocz6gzEhravawao9RcsGcdtfydbaHazfgAaocsGgHEhoaHThCdndnadcd9hmbabaPcetfgHax87ebaHclfao87ebaHcdfar87ebxekabaPcdtfgHaxBdbaHcwfaoBdbaHclfarBdbkcdhsavawcdtfaxBdbavawcefgwcsGcdtfarBdbcihHavc;abfalcitfgOaxBdlaOarBdbavawazfgwcsGcdtfaoBdbalcefcsGhOawaCfhwaxhzaAaCfhxxekaxcbaiRbbgOEgzaoc;:eSgHfhraOcsGhCaOcl4hAdndnaOcs0mbarcefhoxekarhoavawaA9RcsGcdtfydbhrkdndnaCmbaocefhxxekaohxavawaO9RcsGcdtfydbhokdndnaHTmbaicefhHxekaicdfhHai8SbegscFeGhzdnascu9kmbaicofhXazcFbGhzcrhidninaH8SbbgscFbGaitazVhzascu9kmeaHcefhHaicrfgic8J9hmbkaXhHxekaHcefhHkazce4cbazceG9R7amfgmhzkdndnaAcsSmbaHhsxekaHcefhsaH8SbbgicFeGhrdnaicu9kmbaHcvfhXarcFbGhrcrhidninas8SbbgHcFbGaitarVhraHcu9kmeascefhsaicrfgic8J9hmbkaXhsxekascefhskarce4cbarceG9R7amfgmhrkdndnaCcsSmbashixekascefhias8SbbgocFeGhHdnaocu9kmbascvfhXaHcFbGhHcrhodninai8SbbgscFbGaotaHVhHascu9kmeaicefhiaocrfgoc8J9hmbkaXhixekaicefhikaHce4cbaHceG9R7amfgmhokdndnadcd9hmbabaPcetfgHaz87ebaHclfao87ebaHcdfar87ebxekabaPcdtfgHazBdbaHcwfaoBdbaHclfarBdbkcdhsavawcdtfazBdbavawcefgwcsGcdtfarBdbcihHavc;abfalcitfgXazBdlaXarBdbavawaOcz6aAcsSVfgwcsGcdtfaoBdbawaCTaCcsSVfhwalcefcsGhOkaqcefhqavc;abfaOcitfgOarBdlaOaoBdbavc;abfalasfcsGcitfgraoBdlarazBdbawcsGhwalaHfcsGhlaPcifgPae6mbkkcbc99aiaDSEhokavc;aef8Kjjjjbaok:clevu8Jjjjjbcz9Rhvdnaecvfal9nmbc9:skdnaiRbbc;:eGc;qeSmbcuskav9cb83iwaicefhoaialfc98fhrdnaeTmbdnadcdSmbcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcdtfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgiBdbalaiBdbawcefgwae9hmbxdkkcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcetfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgi87ebalaiBdbawcefgwae9hmbkkcbc99aoarSEk:SPliuo97eue978Jjjjjbca9Rhiaec98Ghldndnadcl9hmbdnalTmbcbhvabhdinadadpbbbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDpxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpkbbadczfhdavclfgval6mbkkalaeSmeaipxbbbbbbbbbbbbbbbbgqpklbaiabalcdtfgdaeciGglcdtgv;8qbbdnalTmbaiaipblbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDaqp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpklbkadaiav;8qbbskdnalTmbcbhvabhdinadczfgxaxpbbbgopxbbbbbbFFbbbbbbFFgkp9oadpbbbgDaopmbediwDqkzHOAKY8AEgwczp:Reczp:Sep;6egraDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;7eawczp:Sep;6egwp;Gearp;Gep;Kep;Legopxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegrpxb;:FSb;:FSb;:FSb;:FSararp;Meaoaop;Meawaqawamp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFFbbFFbbFFbbFFbbp9oaoawp;Meaqp;Keczp:Rep9qgoarawp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogrpmwDKYqk8AExm35Ps8E8Fp9qpkbbadaDakp9oaoarpmbezHdiOAlvCXorQLp9qpkbbadcafhdavclfgval6mbkkalaeSmbaiczfpxbbbbbbbbbbbbbbbbgopklbaiaopklbaiabalcitfgdaeciGglcitgv;8qbbdnalTmbaiaipblzgopxbbbbbbFFbbbbbbFFgkp9oaipblbgDaopmbediwDqkzHOAKY8AEgwczp:Reczp:Sep;6egraDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;7eawczp:Sep;6egwp;Gearp;Gep;Kep;Legopxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegrpxb;:FSb;:FSb;:FSb;:FSararp;Meaoaop;Meawaqawamp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFFbbFFbbFFbbFFbbp9oaoawp;Meaqp;Keczp:Rep9qgoarawp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogrpmwDKYqk8AExm35Ps8E8Fp9qpklzaiaDakp9oaoarpmbezHdiOAlvCXorQLp9qpklbkadaiav;8qbbkk:oDllue97euv978Jjjjjbc8W9Rhidnaec98GglTmbcbhvabhoinaiaopbbbgraoczfgwpbbbgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklbaopxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaDakp;Mearp;Keamp9oaqakp;Mearp;Keczp:Rep9qgkpmbezHdiOAlvCXorQLgrp5baipblbpEb:T:j83ibaocwfarp5eaipblbpEe:T:j83ibawaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblbpEd:T:j83ibaocKfakp5eaipblbpEi:T:j83ibaocafhoavclfgval6mbkkdnalaeSmbaiczfpxbbbbbbbbbbbbbbbbgkpklbaiakpklbaiabalcitfgoaeciGgvcitgw;8qbbdnavTmbaiaipblbgraipblzgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklaaipxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaDakp;Mearp;Keamp9oaqakp;Mearp;Keczp:Rep9qgkpmbezHdiOAlvCXorQLgrp5baipblapEb:T:j83ibaiarp5eaipblapEe:T:j83iwaiaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblapEd:T:j83izaiakp5eaipblapEi:T:j83iKkaoaiaw;8qbbkk;uddiue978Jjjjjbc;ab9Rhidnadcd4ae2glc98GgvTmbcbheabhdinadadpbbbgocwp:Recwp:Sep;6eaocep:SepxbbjFbbjFbbjFbbjFp9opxbbjZbbjZbbjZbbjZp:Uep;Mepkbbadczfhdaeclfgeav6mbkkdnavalSmbaic8WfpxbbbbbbbbbbbbbbbbgopklbaicafaopklbaiczfaopklbaiaopklbaiabavcdtfgdalciGgecdtgv;8qbbdnaeTmbaiaipblbgocwp:Recwp:Sep;6eaocep:SepxbbjFbbjFbbjFbbjFp9opxbbjZbbjZbbjZbbjZp:Uep;Mepklbkadaiav;8qbbkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaikkkebcjwklz:Dbb"):i("b9H79Tebbbe8Fv9Gbb9Gvuuuuueu9Giuuub9Geueu9Giuuueuikqbeeedddillviebeoweuec:W:Odkr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbeY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVbdE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbiL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtblK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbol79IV9Rbrq:986qdbk;jYi5ud9:du8Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnalTmbcuhoaiRbbgrc;WeGc:Ge9hmbarcsGgwce0mbc9:hoalcufadcd4cbawEgDadfgrcKcaawEgqaraq0Egk6mbaicefhxcj;abad9Uc;WFbGcjdadca0EhmaialfgPar9Rgoadfhsavaoadz1jjjbgzceVhHcbhOdndninaeaO9nmeaPax9RaD6mdamaeaO9RaOamfgoae6EgAcsfglc9WGhCabaOad2fhXaAcethQaxaDfhiaOaeaoaeao6E9RhLalcl4cifcd4hKazcj;cbfaAfhYcbh8AazcjdfhEaHh3incbhodnawTmbaxa8Acd4fRbbhokaocFeGh5cbh8Eazcj;cbfhqinaih8Fdndndndna5a8Ecet4ciGgoc9:fPdebdkaPa8F9RaA6mrazcj;cbfa8EaA2fa8FaAz1jjjb8Aa8FaAfhixdkazcj;cbfa8EaA2fcbaAz:jjjjb8Aa8FhixekaPa8F9RaK6mva8FaKfhidnaCTmbaPai9RcK6mbaocdtc:q1jjbfcj1jjbawEhaczhrcbhlinargoc9Wfghaqfhrdndndndndndnaaa8Fahco4fRbbalcoG4ciGcdtfydbPDbedvivvvlvkar9cb83bbarcwf9cb83bbxlkarcbaiRbdai8Xbb9c:c:qj:bw9:9c:q;c1:I1e:d9c:b:c:e1z9:gg9cjjjjjz:dg8J9qE86bbaqaofgrcGfag9c8F1:NghcKtc8F91aicdfa8J9c8N1:Nfg8KRbbG86bbarcVfcba8KahcjeGcr4fghRbbag9cjjjjjl:dg8J9qE86bbarc7fcbaha8J9c8L1:NfghRbbag9cjjjjjd:dg8J9qE86bbarctfcbaha8J9c8K1:NfghRbbag9cjjjjje:dg8J9qE86bbarc91fcbaha8J9c8J1:NfghRbbag9cjjjj;ab:dg8J9qE86bbarc4fcbaha8J9cg1:NfghRbbag9cjjjja:dg8J9qE86bbarc93fcbaha8J9ch1:NfghRbbag9cjjjjz:dgg9qE86bbarc94fcbahag9ca1:NfghRbbai8Xbe9c:c:qj:bw9:9c:q;c1:I1e:d9c:b:c:e1z9:gg9cjjjjjz:dg8J9qE86bbarc95fag9c8F1:NgicKtc8F91aha8J9c8N1:NfghRbbG86bbarc96fcbahaicjeGcr4fgiRbbag9cjjjjjl:dg8J9qE86bbarc97fcbaia8J9c8L1:NfgiRbbag9cjjjjjd:dg8J9qE86bbarc98fcbaia8J9c8K1:NfgiRbbag9cjjjjje:dg8J9qE86bbarc99fcbaia8J9c8J1:NfgiRbbag9cjjjj;ab:dg8J9qE86bbarc9:fcbaia8J9cg1:NfgiRbbag9cjjjja:dg8J9qE86bbarcufcbaia8J9ch1:NfgiRbbag9cjjjjz:dgg9qE86bbaiag9ca1:NfhixikaraiRblaiRbbghco4g8Ka8KciSg8KE86bbaqaofgrcGfaiclfa8Kfg8KRbbahcl4ciGg8La8LciSg8LE86bbarcVfa8Ka8Lfg8KRbbahcd4ciGg8La8LciSg8LE86bbarc7fa8Ka8Lfg8KRbbahciGghahciSghE86bbarctfa8Kahfg8KRbbaiRbeghco4g8La8LciSg8LE86bbarc91fa8Ka8Lfg8KRbbahcl4ciGg8La8LciSg8LE86bbarc4fa8Ka8Lfg8KRbbahcd4ciGg8La8LciSg8LE86bbarc93fa8Ka8Lfg8KRbbahciGghahciSghE86bbarc94fa8Kahfg8KRbbaiRbdghco4g8La8LciSg8LE86bbarc95fa8Ka8Lfg8KRbbahcl4ciGg8La8LciSg8LE86bbarc96fa8Ka8Lfg8KRbbahcd4ciGg8La8LciSg8LE86bbarc97fa8Ka8Lfg8KRbbahciGghahciSghE86bbarc98fa8KahfghRbbaiRbigico4g8Ka8KciSg8KE86bbarc99faha8KfghRbbaicl4ciGg8Ka8KciSg8KE86bbarc9:faha8KfghRbbaicd4ciGg8Ka8KciSg8KE86bbarcufaha8KfgrRbbaiciGgiaiciSgiE86bbaraifhixdkaraiRbwaiRbbghcl4g8Ka8KcsSg8KE86bbaqaofgrcGfaicwfa8Kfg8KRbbahcsGghahcsSghE86bbarcVfa8KahfghRbbaiRbeg8Kcl4g8La8LcsSg8LE86bbarc7faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarctfaha8KfghRbbaiRbdg8Kcl4g8La8LcsSg8LE86bbarc91faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc4faha8KfghRbbaiRbig8Kcl4g8La8LcsSg8LE86bbarc93faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc94faha8KfghRbbaiRblg8Kcl4g8La8LcsSg8LE86bbarc95faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc96faha8KfghRbbaiRbvg8Kcl4g8La8LcsSg8LE86bbarc97faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc98faha8KfghRbbaiRbog8Kcl4g8La8LcsSg8LE86bbarc99faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc9:faha8KfghRbbaiRbrgicl4g8Ka8KcsSg8KE86bbarcufaha8KfgrRbbaicsGgiaicsSgiE86bbaraifhixekarai8Pbb83bbarcwfaicwf8Pbb83bbaiczfhikdnaoaC9pmbalcdfhlaoczfhraPai9RcL0mekkaoaC6moaimexokaCmva8FTmvkaqaAfhqa8Ecefg8Ecl9hmbkdndndndnawTmbasa8Acd4fRbbgociGPlbedrbkaATmdaza8Afh8Fazcj;cbfhhcbh8EaEhaina8FRbbhraahocbhlinaoahalfRbbgqce4cbaqceG9R7arfgr86bbaoadfhoaAalcefgl9hmbkaacefhaa8Fcefh8FahaAfhha8Ecefg8Ecl9hmbxikkaATmeaza8Afhaazcj;cbfhhcbhoceh8EaYh8FinaEaofhlaa8Vbbhrcbhoinala8FaofRbbcwtahaofRbbgqVc;:FiGce4cbaqceG9R7arfgr87bbaladfhlaLaocefgofmbka8FaQfh8FcdhoaacdfhaahaQfhha8EceGhlcbh8EalmbxdkkaATmbcbaocl49Rh8Eaza8AfRbbhqcwhoa3hlinalRbbaotaqVhqalcefhlaocwfgoca9hmbkcbhhaEh8FaYhainazcj;cbfahfRbbhrcwhoaahlinalRbbaotarVhralaAfhlaocwfgoca9hmbkara8E93aq7hqcbhoa8Fhlinalaqao486bbalcefhlaocwfgoca9hmbka8Fadfh8FaacefhaahcefghaA9hmbkkaEclfhEa3clfh3a8Aclfg8Aad6mbkaXazcjdfaAad2z1jjjb8AazazcjdfaAcufad2fadz1jjjb8AaAaOfhOaihxaimbkc9:hoxdkcbc99aPax9RakSEhoxekc9:hokavcj;kbf8Kjjjjbaok;cseHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgwce0mbavc;abfcFecjez:jjjjb8AavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhDaicefgqarfhidnaeTmbcmcsawceSEhkcbhxcbhmcbhPcbhwcbhlindnaiaD9nmbc9:hoxikdndnaqRbbgoc;Ve0mbavc;abfalaocu7gscl4fcsGcitfgzydlhrazydbhzdnaocsGgHak9pmbavawasfcsGcdtfydbaxaHEhoaHThsdndnadcd9hmbabaPcetfgHaz87ebaHclfao87ebaHcdfar87ebxekabaPcdtfgHazBdbaHcwfaoBdbaHclfarBdbkaxasfhxcdhHavawcdtfaoBdbawasfhwcehsalhOxdkdndnaHcsSmbaHc987aHamffcefhoxekaicefhoai8SbbgHcFeGhsdndnaHcu9mmbaohixekaicvfhiascFbGhscrhHdninao8SbbgOcFbGaHtasVhsaOcu9kmeaocefhoaHcrfgHc8J9hmbxdkkaocefhikasce4cbasceG9R7amfhokdndnadcd9hmbabaPcetfgHaz87ebaHclfao87ebaHcdfar87ebxekabaPcdtfgHazBdbaHcwfaoBdbaHclfarBdbkcdhHavawcdtfaoBdbcehsawcefhwalhOaohmxekdnaocpe0mbaxcefgHavawaDaocsGfRbbgocl49RcsGcdtfydbaocz6gzEhravawao9RcsGcdtfydbaHazfgAaocsGgHEhoaHThCdndnadcd9hmbabaPcetfgHax87ebaHclfao87ebaHcdfar87ebxekabaPcdtfgHaxBdbaHcwfaoBdbaHclfarBdbkcdhsavawcdtfaxBdbavawcefgwcsGcdtfarBdbcihHavc;abfalcitfgOaxBdlaOarBdbavawazfgwcsGcdtfaoBdbalcefcsGhOawaCfhwaxhzaAaCfhxxekaxcbaiRbbgOEgzaoc;:eSgHfhraOcsGhCaOcl4hAdndnaOcs0mbarcefhoxekarhoavawaA9RcsGcdtfydbhrkdndnaCmbaocefhxxekaohxavawaO9RcsGcdtfydbhokdndnaHTmbaicefhHxekaicdfhHai8SbegscFeGhzdnascu9kmbaicofhXazcFbGhzcrhidninaH8SbbgscFbGaitazVhzascu9kmeaHcefhHaicrfgic8J9hmbkaXhHxekaHcefhHkazce4cbazceG9R7amfgmhzkdndnaAcsSmbaHhsxekaHcefhsaH8SbbgicFeGhrdnaicu9kmbaHcvfhXarcFbGhrcrhidninas8SbbgHcFbGaitarVhraHcu9kmeascefhsaicrfgic8J9hmbkaXhsxekascefhskarce4cbarceG9R7amfgmhrkdndnaCcsSmbashixekascefhias8SbbgocFeGhHdnaocu9kmbascvfhXaHcFbGhHcrhodninai8SbbgscFbGaotaHVhHascu9kmeaicefhiaocrfgoc8J9hmbkaXhixekaicefhikaHce4cbaHceG9R7amfgmhokdndnadcd9hmbabaPcetfgHaz87ebaHclfao87ebaHcdfar87ebxekabaPcdtfgHazBdbaHcwfaoBdbaHclfarBdbkcdhsavawcdtfazBdbavawcefgwcsGcdtfarBdbcihHavc;abfalcitfgXazBdlaXarBdbavawaOcz6aAcsSVfgwcsGcdtfaoBdbawaCTaCcsSVfhwalcefcsGhOkaqcefhqavc;abfaOcitfgOarBdlaOaoBdbavc;abfalasfcsGcitfgraoBdlarazBdbawcsGhwalaHfcsGhlaPcifgPae6mbkkcbc99aiaDSEhokavc;aef8Kjjjjbaok:clevu8Jjjjjbcz9Rhvdnaecvfal9nmbc9:skdnaiRbbc;:eGc;qeSmbcuskav9cb83iwaicefhoaialfc98fhrdnaeTmbdnadcdSmbcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcdtfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgiBdbalaiBdbawcefgwae9hmbxdkkcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcetfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgi87ebalaiBdbawcefgwae9hmbkkcbc99aoarSEk:Lvoeue99dud99eud99dndnadcl9hmbaeTmeindndnabcdfgd8Sbb:Yab8Sbbgi:Ygl:l:tabcefgv8Sbbgo:Ygr:l:tgwJbb;:9cawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai86bbdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad86bbdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad86bbabclfhbaecufgembxdkkaeTmbindndnabclfgd8Ueb:Yab8Uebgi:Ygl:l:tabcdfgv8Uebgo:Ygr:l:tgwJb;:FSawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai87ebdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad87ebdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad87ebabcwfhbaecufgembkkk;oiliui99iue99dnaeTmbcbhiabhlindndnJ;Zl81Zalcof8UebgvciV:Y:vgoal8Ueb:YNgrJb;:FSNJbbbZJbbb:;arJbbbb9GEMgw:lJbbb9p9DTmbaw:OhDxekcjjjj94hDkalclf8Uebhqalcdf8UebhkabaiavcefciGfcetfaD87ebdndnaoak:YNgwJb;:FSNJbbbZJbbb:;awJbbbb9GEMgx:lJbbb9p9DTmbax:OhDxekcjjjj94hDkabaiavciGfgkcd7cetfaD87ebdndnaoaq:YNgoJb;:FSNJbbbZJbbb:;aoJbbbb9GEMgx:lJbbb9p9DTmbax:OhDxekcjjjj94hDkabaiavcufciGfcetfaD87ebdndnJbbjZararN:tawawN:taoaoN:tgrJbbbbarJbbbb9GE:rJb;:FSNJbbbZMgr:lJbbb9p9DTmbar:Ohvxekcjjjj94hvkabakcetfav87ebalcwfhlaiclfhiaecufgembkkk9mbdnadcd4ae2gdTmbinababydbgecwtcw91:Yaece91cjjj98Gcjjj;8if::NUdbabclfhbadcufgdmbkkk9teiucbcbyd:K1jjbgeabcifc98GfgbBd:K1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;teeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiaeydlBdlaiaeydwBdwaiaeydxBdxaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk:3eedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdxaialBdwaialBdlaialBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabkk81dbcjwk8Kbbbbdbbblbbbwbbbbbbbebbbdbbblbbbwbbbbc:Kwkl8WNbb"),n=WebAssembly.instantiate(a,{}).then(function(h){(t=h.instance).exports.__wasm_call_ctors()});function i(h){for(var b=new Uint8Array(h.length),g=0;g<h.length;++g){var f=h.charCodeAt(g);b[g]=f>96?f-97:f>64?f-39:f+4}var m=0;for(g=0;g<h.length;++g)b[m++]=b[g]<60?e[b[g]]:64*(b[g]-60)+b[++g];return b.buffer.slice(0,m)}function o(h,b,g,f,m,p,C){var I=h.exports.sbrk,x=f+3&-4,y=I(x*m),F=I(p.length),D=new Uint8Array(h.exports.memory.buffer);D.set(p,F);var v=b(y,f,m,F,p.length);if(v==0&&C&&C(y,x,m),g.set(D.subarray(y,y+f*m)),I(y-I(0)),v!=0)throw new Error("Malformed buffer data: "+v)}var s={NONE:"",OCTAHEDRAL:"meshopt_decodeFilterOct",QUATERNION:"meshopt_decodeFilterQuat",EXPONENTIAL:"meshopt_decodeFilterExp"},A={ATTRIBUTES:"meshopt_decodeVertexBuffer",TRIANGLES:"meshopt_decodeIndexBuffer",INDICES:"meshopt_decodeIndexSequence"},u=[],c=0;function d(h){var b={object:new Worker(h),pending:0,requests:{}};return b.object.onmessage=function(g){var f=g.data;b.pending-=f.count,b.requests[f.id][f.action](f.value),delete b.requests[f.id]},b}function l(h){var b=h.data;if(!b.id)return self.close();self.ready.then(function(g){try{var f=new Uint8Array(b.count*b.size);o(g,g.exports[b.mode],f,b.count,b.size,b.source,g.exports[b.filter]),self.postMessage({id:b.id,count:b.count,action:"resolve",value:f},[f.buffer])}catch(m){self.postMessage({id:b.id,count:b.count,action:"reject",value:m})}})}return{ready:n,supported:!0,useWorkers:function(h){(function(b){for(var g="self.ready = WebAssembly.instantiate(new Uint8Array(["+new Uint8Array(a)+"]), {}).then(function(result) { result.instance.exports.__wasm_call_ctors(); return result.instance; });self.onmessage = "+l.name+";"+o.toString()+l.toString(),f=new Blob([g],{type:"text/javascript"}),m=URL.createObjectURL(f),p=u.length;p<b;++p)u[p]=d(m);for(p=b;p<u.length;++p)u[p].object.postMessage({});u.length=b,URL.revokeObjectURL(m)})(h)},decodeVertexBuffer:function(h,b,g,f,m){o(t,t.exports.meshopt_decodeVertexBuffer,h,b,g,f,t.exports[s[m]])},decodeIndexBuffer:function(h,b,g,f){o(t,t.exports.meshopt_decodeIndexBuffer,h,b,g,f)},decodeIndexSequence:function(h,b,g,f){o(t,t.exports.meshopt_decodeIndexSequence,h,b,g,f)},decodeGltfBuffer:function(h,b,g,f,m,p){o(t,t.exports[A[m]],h,b,g,f,t.exports[s[p]])},decodeGltfBufferAsync:function(h,b,g,f,m){return u.length>0?function(p,C,I,x,y){for(var F=u[0],D=1;D<u.length;++D)u[D].pending<F.pending&&(F=u[D]);return new Promise(function(v,M){var S=new Uint8Array(I),O=++c;F.pending+=p,F.requests[O]={resolve:v,reject:M},F.object.postMessage({id:O,count:p,size:C,source:S,mode:x,filter:y},[S.buffer])})}(h,b,g,A[f],s[m]):n.then(function(){var p=new Uint8Array(h*b);return o(t,t.exports[A[f]],p,h,b,g,t.exports[s[m]]),p})}}}();(function(){var r,e=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if(typeof WebAssembly!="object")return{supported:!1};var t=WebAssembly.instantiate(function(s){for(var A=new Uint8Array(s.length),u=0;u<s.length;++u){var c=s.charCodeAt(u);A[u]=c>96?c-97:c>64?c-39:c+4}var d=0;for(u=0;u<s.length;++u)A[d++]=A[u]<60?e[A[u]]:64*(A[u]-60)+A[++u];return A.buffer.slice(0,d)}("b9H79Tebbbe9Hk9Geueu9Geub9Gbb9Gsuuuuuuuuuuuu99uueu9Gvuuuuub9Gvuuuuue999Gquuuuuuu99uueu9Gwuuuuuu99ueu9Giuuue999Gluuuueu9GiuuueuizsdilvoirwDbqqbeqlve9Weiiviebeoweuec:G:Pdkr:Tewo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bbz9TW79O9V9Wt9F79P9T9W29P9M95bl8E9TW79O9V9Wt9F79P9T9W29P9M959x9Pt9OcttV9P9I91tW7bvQ9TW79O9V9Wt9F79P9T9W29P9M959q9V9P9Ut7boX9TW79O9V9Wt9F79P9T9W29P9M959t9J9H2Wbra9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94SWt9J9O9sW9T9H9Wbwl79IV9RbDDwebcekdmxq:x:yesdbk:Z9VvKue99euY99Ou8Jjjjjbc;W;qb9Rgs8Kjjjjbcbhzascxfcbc;Kbz:ljjjb8AdnabaeSmbabaeadcdtz:kjjjb8AkdnamcdGTmbalcrfci4gHcbyd:m:jjjbHjjjjbbheascxfasyd2gOcdtfaeBdbasaOcefBd2aecbaHz:ljjjbhAcbhlcbhednadTmbcbhlabheadhHinaAaeydbgOci4fgCaCRbbgCceaOcrGgOtV86bbaCcu7aO4ceGalfhlaeclfheaHcufgHmbkcualcdtalcFFFFi0Ehekaecbyd:m:jjjbHjjjjbbhzascxfasyd2gecdtfazBdbasaecefBd2alcd4alfhOcehHinaHgecethHaeaO6mbkcbhXcuaecdtgOaecFFFFi0Ecbyd:m:jjjbHjjjjbbhHascxfasyd2gCcdtfaHBdbasaCcefBd2aHcFeaOz:ljjjbhQdnadTmbaecufhLcbhKindndnaQabaXcdtfgYydbgCc:v;t;h;Ev2aLGgOcdtfgAydbgHcuSmbceheinazaHcdtfydbaCSmdaOaefhHaecefheaQaHaLGgOcdtfgAydbgHcu9hmbkkazaKcdtfaCBdbaAaKBdbaKhHaKcefhKkaYaHBdbaXcefgXad9hmbkkaQcbyd1:jjjbH:bjjjbbasasyd2cufBd2kcualcefgecdtaecFFFFi0Ecbyd:m:jjjbHjjjjbbh8Aascxfasyd2gecdtfa8ABdbasa8ABdlasaecefBd2cuadcitadcFFFFe0Ecbyd:m:jjjbHjjjjbbhEascxfasyd2gecdtfaEBdbasaEBdwasaecefBd2asclfabadalcbz:cjjjbcualcdtg3alcFFFFi0Eg5cbyd:m:jjjbHjjjjbbhLascxfasyd2gecdtfaLBdbasaecefBd2a5cbyd:m:jjjbHjjjjbbh8Eascxfasyd2gecdtfa8EBdbasaecefBd2alcd4alfhOcehHinaHgecethHaeaO6mbkcbhYcuaecdtgOaecFFFFi0Ecbyd:m:jjjbHjjjjbbhHascxfasyd2gCcdtfaHBdbasaCcefBd2aHcFeaOz:ljjjbhQdnalTmbavcd4hCaecufhKinaYhednazTmbazaYcdtfydbhekaiaeaC2cdtfgeydlgHcH4aH7c:F:b:DD2aeydbgHcH4aH7c;D;O:B8J27aeydwgecH4ae7c:3F;N8N27aKGhHaYcdth8FdndndnazTmbaQaHcdtfgAydbgecuSmeaiaza8FfydbaC2cdtfhXcehOinaiazaecdtfydbaC2cdtfaXcxz:ojjjbTmiaHaOfheaOcefhOaQaeaKGgHcdtfgAydbgecu9hmbxdkkaQaHcdtfgAydbgecuSmbaiaYaC2cdtfhXcehOinaiaeaC2cdtfaXcxz:ojjjbTmdaHaOfheaOcefhOaQaeaKGgHcdtfgAydbgecu9hmbkkaAaYBdbaYhekaLa8FfaeBdbaYcefgYal9hmbkcbhea8EhHinaHaeBdbaHclfhHalaecefge9hmbkcbheaLhHa8EhOindnaeaHydbgCSmbaOa8EaCcdtfgCydbBdbaCaeBdbkaHclfhHaOclfhOalaecefge9hmbkkcbhaaQcbyd1:jjjbH:bjjjbbasasyd2cufBd2alcbyd:m:jjjbHjjjjbbhKascxfasyd2gecdtfaKBdbasaecefBd2a5cbyd:m:jjjbHjjjjbbheascxfasyd2gHcdtfaeBdbasaHcefBd2a5cbyd:m:jjjbHjjjjbbhHascxfasyd2gOcdtfaHBdbasaOcefBd2aecFea3z:ljjjbhhaHcFea3z:ljjjbhgdnalTmbaEcwfh8Jindna8AaagOcefgacdtfydbgCa8AaOcdtgefydbgHSmbaCaH9Rh8FaEaHcitfh3agaefh8KahaefhYcbhAindndna3aAcitfydbgQaO9hmbaYaOBdba8KaOBdbxekdna8AaQcdtg8LfgeclfydbgHaeydbgeSmbaEaecitgCfydbaOSmeaHae9Rh8Maecu7aHfhXa8JaCfhHcbheinaXaeSmeaecefheaHydbhCaHcwfhHaCaO9hmbkaea8M6mekaga8LfgeaOaQaeydbcuSEBdbaYaQaOaYydbcuSEBdbkaAcefgAa8F9hmbkkaaal9hmbkaLhHa8EhOaghCahhAcbheindndnaeaHydbgQ9hmbdnaeaOydbgQ9hmbaAydbhQdnaCydbgXcu9hmbaQcu9hmbaKaefcb86bbxikaKaefhYdnaeaXSmbaeaQSmbaYce86bbxikaYcl86bbxdkdnaea8EaQcdtgXfydb9hmbdnaCydbgYcuSmbaeaYSmbaAydbg8FcuSmbaea8FSmbagaXfydbg3cuSmba3aQSmbahaXfydbgXcuSmbaXaQSmbdnaLaYcdtfydbgQaLaXcdtfydb9hmbaQaLa8FcdtfydbgXSmbaXaLa3cdtfydb9hmbaKaefcd86bbxlkaKaefcl86bbxikaKaefcl86bbxdkaKaefcl86bbxekaKaefaKaQfRbb86bbkaHclfhHaOclfhOaCclfhCaAclfhAalaecefge9hmbkdnaqTmbdndnazTmbazheaLhHalhOindnaqaeydbfRbbTmbaKaHydbfcl86bbkaeclfheaHclfhHaOcufgOmbxdkkaLhealhHindnaqRbbTmbaKaeydbfcl86bbkaqcefhqaeclfheaHcufgHmbkkaLhealhOaKhHindnaKaeydbfRbbcl9hmbaHcl86bbkaeclfheaHcefhHaOcufgOmbkkamceGTmbaKhealhHindnaeRbbce9hmbaecl86bbkaecefheaHcufgHmbkkcualcx2alc;v:Q;v:Qe0Ecbyd:m:jjjbHjjjjbbhaascxfasyd2gecdtfaaBdbasaecefBd2aaaialavazz:djjjbh8NdndnaDmbcbhycbh8Jxekcbh8JawhecbhHindnaeIdbJbbbb9ETmbasc;Wbfa8JcdtfaHBdba8Jcefh8JkaeclfheaDaHcefgH9hmbkcua8Jal2gecdtaecFFFFi0Ecbyd:m:jjjbHjjjjbbhyascxfasyd2gecdtfayBdbasaecefBd2alTmba8JTmbarcd4hYdnazTmba8Jcdth8FcbhQayhXinaoazaQcdtfydbaY2cdtfhAasc;WbfheaXhHa8JhOinaHaAaeydbcdtgCfIdbawaCfIdbNUdbaeclfheaHclfhHaOcufgOmbkaXa8FfhXaQcefgQal9hmbxdkka8Jcdth8FcbhQayhXinaoaQaY2cdtfhAasc;WbfheaXhHa8JhOinaHaAaeydbcdtgCfIdbawaCfIdbNUdbaeclfheaHclfhHaOcufgOmbkaXa8FfhXaQcefgQal9hmbkkcualc8S2gHalc;D;O;f8U0EgCcbyd:m:jjjbHjjjjbbheascxfasyd2gOcdtfaeBdbasaOcefBd2aecbaHz:ljjjbhqdndndndna8JTmbaCcbyd:m:jjjbHjjjjbbhvascxfasyd2gecdtfavBdbcehOasaecefBd2avcbaHz:ljjjb8Acua8Jal2gecltgHaecFFFFb0Ecbyd:m:jjjbHjjjjbbhrascxfasyd2gecdtfarBdbasaecefBd2arcbaHz:ljjjb8AadmexikcbhvadTmecbhrkcbhAabhHindnaaaHclfydbgQcx2fgeIdbaaaHydbgXcx2fgOIdbg8P:tgIaaaHcwfydbgYcx2fgCIdlaOIdlg8R:tg8SNaCIdba8P:tgRaeIdla8R:tg8UN:tg8Va8VNa8UaCIdwaOIdwg8W:tg8XNa8SaeIdwa8W:tg8UN:tg8Sa8SNa8UaRNa8XaIN:tgIaINMM:rgRJbbbb9ETmba8VaR:vh8VaIaR:vhIa8SaR:vh8SkaqaLaXcdtfydbc8S2fgea8SaR:rgRa8SNNg8UaeIdbMUdbaeaIaRaINg8YNg8XaeIdlMUdlaea8VaRa8VNg8ZNg80aeIdwMUdwaea8Ya8SNg8YaeIdxMUdxaea8Za8SNg81aeIdzMUdzaea8ZaINg8ZaeIdCMUdCaea8SaRa8Va8WNa8Sa8PNa8RaINMM:mg8RNg8PNg8SaeIdKMUdKaeaIa8PNgIaeId3MUd3aea8Va8PNg8VaeIdaMUdaaea8Pa8RNg8PaeId8KMUd8KaeaRaeIdyMUdyaqaLaQcdtfydbc8S2fgea8UaeIdbMUdbaea8XaeIdlMUdlaea80aeIdwMUdwaea8YaeIdxMUdxaea81aeIdzMUdzaea8ZaeIdCMUdCaea8SaeIdKMUdKaeaIaeId3MUd3aea8VaeIdaMUdaaea8PaeId8KMUd8KaeaRaeIdyMUdyaqaLaYcdtfydbc8S2fgea8UaeIdbMUdbaea8XaeIdlMUdlaea80aeIdwMUdwaea8YaeIdxMUdxaea81aeIdzMUdzaea8ZaeIdCMUdCaea8SaeIdKMUdKaeaIaeId3MUd3aea8VaeIdaMUdaaea8PaeId8KMUd8KaeaRaeIdyMUdyaHcxfhHaAcifgAad6mbkcbh8FabhXinaba8FcdtfhQcbhHinaKaQaHc;a1jjbfydbcdtfydbgOfRbbhedndnaKaXaHfydbgCfRbbgAc99fcFeGcpe0mbaec99fcFeGc;:e6mekdnaAcufcFeGce0mbahaCcdtfydbaO9hmekdnaecufcFeGce0mbagaOcdtfydbaC9hmekdnaAcv2aefc:G1jjbfRbbTmbaLaOcdtfydbaLaCcdtfydb0mekJbbacJbbacJbbjZaecFeGceSEaAceSEh8ZdnaaaQaHc;e1jjbfydbcdtfydbcx2fgeIdwaaaCcx2fgAIdwg8R:tg8VaaaOcx2fgYIdwa8R:tg8Sa8SNaYIdbaAIdbg8W:tgIaINaYIdlaAIdlg8U:tgRaRNMMg8PNa8Va8SNaeIdba8W:tg80aINaRaeIdla8U:tg8YNMMg8Xa8SN:tg8Va8VNa80a8PNa8XaIN:tg8Sa8SNa8Ya8PNa8XaRN:tgIaINMM:rgRJbbbb9ETmba8VaR:vh8VaIaR:vhIa8SaR:vh8SkaqaLaCcdtfydbc8S2fgea8Sa8Za8P:rNgRa8SNNg8XaeIdbMUdbaeaIaRaINg8ZNg80aeIdlMUdlaea8VaRa8VNg8PNg8YaeIdwMUdwaea8Za8SNg8ZaeIdxMUdxaea8Pa8SNg81aeIdzMUdzaea8PaINgBaeIdCMUdCaea8SaRa8Va8RNa8Sa8WNa8UaINMM:mg8RNg8PNg8SaeIdKMUdKaeaIa8PNgIaeId3MUd3aea8Va8PNg8VaeIdaMUdaaea8Pa8RNg8PaeId8KMUd8KaeaRaeIdyMUdyaqaLaOcdtfydbc8S2fgea8XaeIdbMUdbaea80aeIdlMUdlaea8YaeIdwMUdwaea8ZaeIdxMUdxaea81aeIdzMUdzaeaBaeIdCMUdCaea8SaeIdKMUdKaeaIaeId3MUd3aea8VaeIdaMUdaaea8PaeId8KMUd8KaeaRaeIdyMUdykaHclfgHcx9hmbkaXcxfhXa8Fcifg8Fad6mbkdna8JTmbcbhXinJbbbbh8WaaabaXcdtfgeclfydbgYcx2fgHIdwaaaeydbg8Fcx2fgOIdwg8Y:tgIaINaHIdbaOIdbg81:tg8Va8VNaHIdlaOIdlgB:tgRaRNMMg8Zaaaecwfydbg3cx2fgeIdwa8Y:tg8PNaIaIa8PNa8VaeIdba81:tg8RNaRaeIdlaB:tg8UNMMg8SN:tJbbbbJbbjZa8Za8Pa8PNa8Ra8RNa8Ua8UNMMg80Na8Sa8SN:tg8X:va8XJbbbb9BEg8XNh83a80aINa8Pa8SN:ta8XNhUa8Za8UNaRa8SN:ta8XNh85a80aRNa8Ua8SN:ta8XNh86a8Za8RNa8Va8SN:ta8XNh87a80a8VNa8Ra8SN:ta8XNh88a8Va8UNa8RaRN:tg8Sa8SNaRa8PNa8UaIN:tg8Sa8SNaIa8RNa8Pa8VN:tg8Sa8SNMM:rJbbbZNh8Saya8Fa8J2gwcdtfhHaya3a8J2g8LcdtfhOayaYa8J2gicdtfhCa8Y:mh89aB:mh8:a81:mhZcbhAa8JhQJbbbbh8UJbbbbh8XJbbbbh8ZJbbbbh80Jbbbbh8YJbbbbh81JbbbbhBJbbbbhnJbbbbhcinasc;WbfaAfgecwfa8SaUaCIdbaHIdbg8P:tgRNa83aOIdba8P:tg8RNMgINUdbaeclfa8Sa86aRNa85a8RNMg8VNUdbaea8Sa88aRNa87a8RNMgRNUdbaecxfa8Sa89aINa8:a8VNa8PaZaRNMMMg8PNUdba8SaIa8VNNa80Mh80a8SaIaRNNa8YMh8Ya8Sa8VaRNNa81Mh81a8Sa8Pa8PNNa8WMh8Wa8SaIa8PNNa8UMh8Ua8Sa8Va8PNNa8XMh8Xa8SaRa8PNNa8ZMh8Za8SaIaINNaBMhBa8Sa8Va8VNNanMhna8SaRaRNNacMhcaHclfhHaCclfhCaOclfhOaAczfhAaQcufgQmbkava8Fc8S2fgeacaeIdbMUdbaeanaeIdlMUdlaeaBaeIdwMUdwaea81aeIdxMUdxaea8YaeIdzMUdzaea80aeIdCMUdCaea8ZaeIdKMUdKaea8XaeId3MUd3aea8UaeIdaMUdaaea8WaeId8KMUd8Kaea8SaeIdyMUdyavaYc8S2fgeacaeIdbMUdbaeanaeIdlMUdlaeaBaeIdwMUdwaea81aeIdxMUdxaea8YaeIdzMUdzaea80aeIdCMUdCaea8ZaeIdKMUdKaea8XaeId3MUd3aea8UaeIdaMUdaaea8WaeId8KMUd8Kaea8SaeIdyMUdyava3c8S2fgeacaeIdbMUdbaeanaeIdlMUdlaeaBaeIdwMUdwaea81aeIdxMUdxaea8YaeIdzMUdzaea80aeIdCMUdCaea8ZaeIdKMUdKaea8XaeId3MUd3aea8UaeIdaMUdaaea8WaeId8KMUd8Kaea8SaeIdyMUdyarawcltfhQcbhHa8JhCinaQaHfgeasc;WbfaHfgOIdbaeIdbMUdbaeclfgAaOclfIdbaAIdbMUdbaecwfgAaOcwfIdbaAIdbMUdbaecxfgeaOcxfIdbaeIdbMUdbaHczfhHaCcufgCmbkaraicltfhQcbhHa8JhCinaQaHfgeasc;WbfaHfgOIdbaeIdbMUdbaeclfgAaOclfIdbaAIdbMUdbaecwfgAaOcwfIdbaAIdbMUdbaecxfgeaOcxfIdbaeIdbMUdbaHczfhHaCcufgCmbkara8LcltfhQcbhHa8JhCinaQaHfgeasc;WbfaHfgOIdbaeIdbMUdbaeclfgAaOclfIdbaAIdbMUdbaecwfgAaOcwfIdbaAIdbMUdbaecxfgeaOcxfIdbaeIdbMUdbaHczfhHaCcufgCmbkaXcifgXad6mbkkcbhOxekcehOcbhrkcbh3dndnamcwGg9cmbJbbbbh8UcbhJcbhocbhCxekcbhea5cbyd:m:jjjbHjjjjbbhCascxfasyd2gHcdtfaCBdbasaHcefBd2dnalTmbaChHinaHaeBdbaHclfhHalaecefge9hmbkkdnaOmbcbh8Finaba8FcdtfhYcbhXinaLaYaXcdtgec;a1jjbfydbcdtfydbcdtfydbhHdnaCaLaYaefydbcdtfydbgOcdtfgAydbgeaOSmbinaAaCaegOcdtfgQydbgeBdbaQhAaOae9hmbkkdnaCaHcdtfgAydbgeaHSmbinaAaCaegHcdtfgQydbgeBdbaQhAaHae9hmbkkdnaOaHSmbaCaOaHaOaH0EcdtfaOaHaOaH6EBdbkaXcefgXci9hmbka8Fcifg8Fad6mbkkcbhJdnalTmbcbhQindnaLaQcdtgefydbaQ9hmbaQhHdnaCaefgXydbgeaQSmbaXhOinaOaCaegHcdtfgAydbgeBdbaAhOaHae9hmbkkaXaHBdbkaQcefgQal9hmbkcbheaLhOaChHcbhJindndnaeaOydbgA9hmbdnaeaHydbgA9hmbaHaJBdbaJcefhJxdkaHaCaAcdtfydbBdbxekaHaCaAcdtfydbBdbkaOclfhOaHclfhHalaecefge9hmbkkcuaJcltgeaJcjjjjiGEcbyd:m:jjjbHjjjjbbhoascxfasyd2gHcdtfaoBdbasaHcefBd2aocbaez:ljjjbhAdnalTmbaChOaahealhQinaecwfIdbh8SaeclfIdbhIaAaOydbcltfgHaeIdbaHIdbMUdbaHclfgXaIaXIdbMUdbaHcwfgXa8SaXIdbMUdbaHcxfgHaHIdbJbbjZMUdbaOclfhOaecxfheaQcufgQmbkkdnaJTmbaAheaJhHinaecxfgOIdbh8SaOcbBdbaeaeIdbJbbbbJbbjZa8S:va8SJbbbb9BEg8SNUdbaeclfgOa8SaOIdbNUdbaecwfgOa8SaOIdbNUdbaeczfheaHcufgHmbkkdnalTmbaChOaahealhQinaAaOydbcltfgHcxfgXaecwfIdbaHcwfIdb:tg8Sa8SNaeIdbaHIdb:tg8Sa8SNaeclfIdbaHclfIdb:tg8Sa8SNMMg8SaXIdbgIaIa8S9DEUdbaOclfhOaecxfheaQcufgQmbkkdnaJmbcbhJJFFuuh8UxekaAcxfheaAhHaJhOinaHaeIdbUdbaeczfheaHclfhHaOcufgOmbkJFFuuh8UaAheaJhHinaeIdbg8Sa8Ua8Ua8S9EEh8UaeclfheaHcufgHmbkkasydlh9ednalTmba9eclfhea9eydbhAaKhHalhQcbhOincbaeydbgXaA9RaHRbbcpeGEaOfhOaHcefhHaeclfheaXhAaQcufgQmbkaOce4h3kcuada39RcifgTcx2aTc;v:Q;v:Qe0Ecbyd:m:jjjbHjjjjbbhDascxfasyd2gecdtfaDBdbasaecefBd2cuaTcdtaTcFFFFi0Ecbyd:m:jjjbHjjjjbbhSascxfasyd2gecdtfaSBdbasaecefBd2a5cbyd:m:jjjbHjjjjbbh8Mascxfasyd2gecdtfa8MBdbasaecefBd2alcbyd:m:jjjbHjjjjbbh9hascxfasyd2gecdtfa9hBdbasaecefBd2axaxNa8NJbbjZamclGEg83a83N:vhcJbbbbhndnadak9nmbdnaTci6mba8Jclth9iaDcwfh6JbbbbhBJbbbbhninasclfabadalaLz:cjjjbabh3cbhEcbh5inaba5cdtfhwcbheindnaLa3aefydbgOcdtg8FfydbgQaLawaec;q1jjbfydbcdtfydbgHcdtg8LfydbgXSmbaKaHfRbbgYcv2aKaOfRbbgAfc;G1jjbfRbbg8AaAcv2aYfgic;G1jjbfRbbg8KVcFeGTmbdnaXaQ9nmbaic:G1jjbfRbbcFeGmekaAcufhQdnaAaY9hmbaQcFeGce0mbaha8FfydbaH9hmekdndnaAclSmbaYcl9hmekdnaQcFeGce0mbaha8FfydbaH9hmdkaYcufcFeGce0mbaga8LfydbaO9hmekaDaEcx2fgAaHaOa8KcFeGgQEBdlaAaOaHaQEBdbaAaQa8AGcb9hBdwaEcefhEkaeclfgecx9hmbkdna5cifg5ad9pmba3cxfh3aEcifaT9nmekkaETmdcbhYinaqaLaDaYcx2fgAydbgQcdtg3fydbc8S2fgeIdwaaaAydlgXcx2fgHIdwg8VNaeIdzaHIdbgRNaeIdaMg8Sa8SMMa8VNaeIdlaHIdlg8PNaeIdCa8VNaeId3Mg8Sa8SMMa8PNaeIdbaRNaeIdxa8PNaeIdKMg8Sa8SMMaRNaeId8KMMM:lh8SJbbbbJbbjZaeIdygI:vaIJbbbb9BEhIdndnaAydwg8FmbJFFuuh8XxekJbbbbJbbjZaqaLaXcdtfydbc8S2fgeIdyg8R:va8RJbbbb9BEaeIdwaaaQcx2fgHIdwg8RNaeIdzaHIdbg8WNaeIdaMg8Xa8XMMa8RNaeIdlaHIdlg8XNaeIdCa8RNaeId3Mg8Ra8RMMa8XNaeIdba8WNaeIdxa8XNaeIdKMg8Ra8RMMa8WNaeId8KMMM:lNh8XkaIa8SNh8Zdna8JTmbavaQc8S2fgOIdwa8VNaOIdzaRNaOIdaMg8Sa8SMMa8VNaOIdla8PNaOIdCa8VNaOId3Mg8Sa8SMMa8PNaOIdbaRNaOIdxa8PNaOIdKMg8Sa8SMMaRNaOId8KMMMh8SayaXa8J2gwcdtfhHaraQa8J2g8LcltfheaOIdyh8Ra8JhOinaHIdbgIaIa8RNaecxfIdba8VaecwfIdbNaRaeIdbNa8PaeclfIdbNMMMgIaIM:tNa8SMh8SaHclfhHaeczfheaOcufgOmbkdndna8FmbJbbbbhIxekavaXc8S2fgOIdwaaaQcx2fgeIdwgRNaOIdzaeIdbg8PNaOIdaMgIaIMMaRNaOIdlaeIdlg8RNaOIdCaRNaOId3MgIaIMMa8RNaOIdba8PNaOIdxa8RNaOIdKMgIaIMMa8PNaOId8KMMMhIaya8LcdtfhHarawcltfheaOIdyh8Wa8JhOinaHIdbg8Va8Va8WNaecxfIdbaRaecwfIdbNa8PaeIdbNa8RaeclfIdbNMMMg8Va8VM:tNaIMhIaHclfhHaeczfheaOcufgOmbkaI:lhIka8Za8S:lMh8Za8XaIMh8XaKaQfRbbcd9hmbdnagahaha3fydbaXSEa8Ea3fydbgwcdtfydbg3cu9hmba8EaXcdtfydbh3kavawc8S2fgOIdwaaa3cx2fgeIdwg8VNaOIdzaeIdbgRNaOIdaMg8Sa8SMMa8VNaOIdlaeIdlg8PNaOIdCa8VNaOId3Mg8Sa8SMMa8PNaOIdbaRNaOIdxa8PNaOIdKMg8Sa8SMMaRNaOId8KMMMh8Saya3a8J2g8LcdtfhHarawa8J2gicltfheaOIdyh8Ra8JhOinaHIdbgIaIa8RNaecxfIdba8VaecwfIdbNaRaeIdbNa8PaeclfIdbNMMMgIaIM:tNa8SMh8SaHclfhHaeczfheaOcufgOmbkdndna8FmbJbbbbhIxekava3c8S2fgOIdwaaawcx2fgeIdwgRNaOIdzaeIdbg8PNaOIdaMgIaIMMaRNaOIdlaeIdlg8RNaOIdCaRNaOId3MgIaIMMa8RNaOIdba8PNaOIdxa8RNaOIdKMgIaIMMa8PNaOId8KMMMhIayaicdtfhHara8LcltfheaOIdyh8Wa8JhOinaHIdbg8Va8Va8WNaecxfIdbaRaecwfIdbNa8PaeIdbNa8RaeclfIdbNMMMg8Va8VM:tNaIMhIaHclfhHaeczfheaOcufgOmbkaI:lhIka8Za8S:lMh8Za8XaIMh8XkaAa8Za8Xa8Za8X9FgeEUdwaAaXaQaea8FTVgeEBdlaAaQaXaeEBdbaYcefgYaE9hmbkasc;Wbfcbcj;qbz:ljjjb8Aa6heaEhHinasc;WbfaeydbcA4cF8FGgOcFAaOcFA6EcdtfgOaOydbcefBdbaecxfheaHcufgHmbkcbhecbhHinasc;WbfaefgOydbhAaOaHBdbaAaHfhHaeclfgecj;qb9hmbkcbhea6hHinasc;WbfaHydbcA4cF8FGgOcFAaOcFA6EcdtfgOaOydbgOcefBdbaSaOcdtfaeBdbaHcxfhHaEaecefge9hmbkadak9RgOci9Uh9kdnalTmbcbhea8MhHinaHaeBdbaHclfhHalaecefge9hmbkkcbh0a9hcbalz:ljjjbh5aOcO9Uh9ma9kce4h9nasydwh9ocbh8Kcbh8AdninaDaSa8Acdtfydbcx2fgiIdwg8Sac9Emea8Ka9k9pmeJFFuuhIdna9naE9pmbaDaSa9ncdtfydbcx2fIdwJbb;aZNhIkdna8SaI9ETmba8San9ETmba8Ka9m0mdkdna5aLaiydlgwcdtg9pfydbgAfg9qRbba5aLaiydbg3cdtg9rfydbgefg9sRbbVmbaKa3fRbbh9tdna9eaecdtfgHclfydbgOaHydbgHSmbaOaH9RhQaaaAcx2fhYaaaecx2fh8Fa9oaHcitfhecbhHceh8Ldnindna8MaeydbcdtfydbgOaASmba8MaeclfydbcdtfydbgXaASmbaOaXSmbaaaXcx2fgXIdbaaaOcx2fgOIdbg8V:tg8Sa8FIdlaOIdlgR:tg8WNa8FIdba8V:tg8XaXIdlaR:tgIN:tg8Pa8SaYIdlaR:tg8ZNaYIdba8V:tg80aIN:tgRNaIa8FIdwaOIdwg8R:tg8YNa8WaXIdwa8R:tg8VN:tg8WaIaYIdwa8R:tg81Na8Za8VN:tgINa8Va8XNa8Ya8SN:tg8Ra8Va80Na81a8SN:tg8SNMMa8Pa8PNa8Wa8WNa8Ra8RNMMaRaRNaIaINa8Sa8SNMMN:rJbbj8:N9FmdkaecwfheaHcefgHaQ6h8LaQaH9hmbkka8LceGTmba9ncefh9nxekdndndndna9tc9:fPdebdka3heina8MaecdtgefawBdba8Eaefydbgea39hmbxikkdnagahaha9rfydbawSEa8Ea9rfydbg3cdtfydbgecu9hmba8Ea9pfydbheka8Ma9rfawBdbaehwka8Ma3cdtfawBdbka9sce86bba9qce86bbaiIdwg8Sanana8S9DEhna0cefh0cecda9tceSEa8Kfh8Kka8Acefg8AaE9hmbkka0TmddnalTmbcbhXcbh8Findna8Ma8FcdtgefydbgOa8FSmbaLaOcdtfydbh3dna8FaLaefydb9hgwmbaqa3c8S2fgeaqa8Fc8S2fgHIdbaeIdbMUdbaeaHIdlaeIdlMUdlaeaHIdwaeIdwMUdwaeaHIdxaeIdxMUdxaeaHIdzaeIdzMUdzaeaHIdCaeIdCMUdCaeaHIdKaeIdKMUdKaeaHId3aeId3MUd3aeaHIdaaeIdaMUdaaeaHId8KaeId8KMUd8KaeaHIdyaeIdyMUdyka8JTmbavaOc8S2fgeava8Fc8S2g8LfgHIdbaeIdbMUdbaeaHIdlaeIdlMUdlaeaHIdwaeIdwMUdwaeaHIdxaeIdxMUdxaeaHIdzaeIdzMUdzaeaHIdCaeIdCMUdCaeaHIdKaeIdKMUdKaeaHId3aeId3MUd3aeaHIdaaeIdaMUdaaeaHId8KaeId8KMUd8KaeaHIdyaeIdyMUdya9iaO2hYarhHa8JhAinaHaYfgeaHaXfgOIdbaeIdbMUdbaeclfgQaOclfIdbaQIdbMUdbaecwfgQaOcwfIdbaQIdbMUdbaecxfgeaOcxfIdbaeIdbMUdbaHczfhHaAcufgAmbkawmbJbbbbJbbjZaqa8LfgeIdyg8S:va8SJbbbb9BEaeIdwaaa3cx2fgHIdwg8SNaeIdzaHIdbgINaeIdaMg8Va8VMMa8SNaeIdlaHIdlg8VNaeIdCa8SNaeId3Mg8Sa8SMMa8VNaeIdbaINaeIdxa8VNaeIdKMg8Sa8SMMaINaeId8KMMM:lNg8SaBaBa8S9DEhBkaXa9ifhXa8Fcefg8Fal9hmbkcbhHahheindnaeydbgOcuSmbdnaHa8MaOcdtgAfydbgO9hmbcuhOahaAfydbgAcuSmba8MaAcdtfydbhOkaeaOBdbkaeclfhealaHcefgH9hmbkcbhHagheindnaeydbgOcuSmbdnaHa8MaOcdtgAfydbgO9hmbcuhOagaAfydbgAcuSmba8MaAcdtfydbhOkaeaOBdbkaeclfhealaHcefgH9hmbkkaBana8JEhBcbhAabhecbhQindna8MaeydbcdtfydbgHa8MaeclfydbcdtfydbgOSmbaHa8MaecwfydbcdtfydbgXSmbaOaXSmbabaAcdtfgYaHBdbaYcwfaXBdbaYclfaOBdbaAcifhAkaecxfheaQcifgQad6mbkdndna9cTmbaAak9nmba8UaB9FTmbcbhdabhecbhHindnaoaCaeydbgOcdtfydbcdtfIdbaB9ETmbabadcdtfgQaOBdbaQclfaeclfydbBdbaQcwfaecwfydbBdbadcifhdkaecxfheaHcifgHaA6mbkJFFuuh8UaJTmeaoheaJhHJFFuuh8SinaeIdbgIa8Sa8SaI9EEg8Va8SaIaB9EgOEh8Sa8Va8UaOEh8UaeclfheaHcufgHmbxdkkaAhdkadak0mbxdkkasclfabadalaLz:cjjjbkdndnadak0mbadhOxekdna9cmbadhOxekdna8Uac9FmbadhOxekina8UJbb;aZNg8Saca8Sac9DEh8VJbbbbh8SdnaJTmbaoheaJhHinaeIdbgIa8SaIa8V9FEa8SaIa8S9EEh8SaeclfheaHcufgHmbkkcbhOabhecbhHindnaoaCaeydbgAcdtfydbcdtfIdba8V9ETmbabaOcdtfgQaABdbaQclfaeclfydbBdbaQcwfaecwfydbBdbaOcifhOkaecxfheaHcifgHad6mbkJFFuuh8UdnaJTmbaoheaJhHJFFuuhIinaeIdbgRaIaIaR9EEg8PaIaRa8V9EgAEhIa8Pa8UaAEh8UaeclfheaHcufgHmbkkdnaOad9hmbadhOxdka8Sanana8S9DEhnaOak9nmeaOhda8Uac9FmbkkdnamcjjjjlGTmbazmbaOTmbcbhLabheinaKaeydbgAfRbbc3thXaecwfgYydbhHdndnahaAcdtg3fydbaeclfg8FydbgCSmbcbhQagaCcdtfydbaA9hmekcjjjj94hQkaeaXaQVaAVBdbaKaCfRbbc3thXdndnahaCcdtfydbaHSmbcbhQagaHcdtfydbaC9hmekcjjjj94hQka8FaXaQVaCVBdbaKaHfRbbc3thQdndnahaHcdtfydbaASmbcbhCaga3fydbaH9hmekcjjjj94hCkaYaQaCVaHVBdbaecxfheaLcifgLaO6mbkkdnazTmbaOTmbaOheinabazabydbcdtfydbBdbabclfhbaecufgembkkdnaPTmbaPa83an:rNUdbkasyd2gecdtascxffc98fhHdninaeTmeaHydbcbyd1:jjjbH:bjjjbbaHc98fhHaecufhexbkkasc;W;qbf8KjjjjbaOk;Yieouabydlhvabydbclfcbaicdtz:ljjjbhoadci9UhrdnadTmbdnalTmbaehwadhDinaoalawydbcdtfydbcdtfgqaqydbcefBdbawclfhwaDcufgDmbxdkkaehwadhDinaoawydbcdtfgqaqydbcefBdbawclfhwaDcufgDmbkkdnaiTmbcbhDaohwinawydbhqawaDBdbawclfhwaqaDfhDaicufgimbkkdnadci6mbinaecwfydbhwaeclfydbhDaeydbhidnalTmbalawcdtfydbhwalaDcdtfydbhDalaicdtfydbhikavaoaicdtfgqydbcitfaDBdbavaqydbcitfawBdlaqaqydbcefBdbavaoaDcdtfgqydbcitfawBdbavaqydbcitfaiBdlaqaqydbcefBdbavaoawcdtfgwydbcitfaiBdbavawydbcitfaDBdlawawydbcefBdbaecxfhearcufgrmbkkabydbcbBdbk;Qodvuv998Jjjjjbca9Rgvczfcwfcbyd11jjbBdbavcb8Pdj1jjb83izavcwfcbydN1jjbBdbavcb8Pd:m1jjb83ibdnadTmbaicd4hodnabmbdnalTmbcbhrinaealarcdtfydbao2cdtfhwcbhiinavczfaifgDawaifIdbgqaDIdbgkakaq9EEUdbavaifgDaqaDIdbgkakaq9DEUdbaiclfgicx9hmbkarcefgrad9hmbxikkaocdthrcbhwincbhiinavczfaifgDaeaifIdbgqaDIdbgkakaq9EEUdbavaifgDaqaDIdbgkakaq9DEUdbaiclfgicx9hmbkaearfheawcefgwad9hmbxdkkdnalTmbcbhrinabarcx2fgiaealarcdtfydbao2cdtfgwIdbUdbaiawIdlUdlaiawIdwUdwcbhiinavczfaifgDawaifIdbgqaDIdbgkakaq9EEUdbavaifgDaqaDIdbgkakaq9DEUdbaiclfgicx9hmbkarcefgrad9hmbxdkkaocdthlcbhraehwinabarcx2fgiaearao2cdtfgDIdbUdbaiaDIdlUdlaiaDIdwUdwcbhiinavczfaifgDawaifIdbgqaDIdbgkakaq9EEUdbavaifgDaqaDIdbgkakaq9DEUdbaiclfgicx9hmbkawalfhwarcefgrad9hmbkkJbbbbavIdbavIdzgk:tgqaqJbbbb9DEgqavIdlavIdCgx:tgmamaq9DEgqavIdwavIdKgm:tgPaPaq9DEhPdnabTmbadTmbJbbbbJbbjZaP:vaPJbbbb9BEhqinabaqabIdbak:tNUdbabclfgvaqavIdbax:tNUdbabcwfgvaqavIdbam:tNUdbabcxfhbadcufgdmbkkaPk8MbabaeadaialavcbcbcbcbcbaoarawaDz:bjjjbk8MbabaeadaialavaoarawaDaqakaxamaPz:bjjjbk:DCoDud99rue99iul998Jjjjjbc;Wb9Rgw8KjjjjbdndnarmbcbhDxekawcxfcbc;Kbz:ljjjb8Aawcuadcx2adc;v:Q;v:Qe0Ecbyd:m:jjjbHjjjjbbgqBdxawceBd2aqaeadaicbz:djjjb8AawcuadcdtadcFFFFi0Egkcbyd:m:jjjbHjjjjbbgxBdzawcdBd2adcd4adfhmceheinaegicetheaiam6mbkcbhPawcuaicdtgsaicFFFFi0Ecbyd:m:jjjbHjjjjbbgzBdCawciBd2dndnar:ZgH:rJbbbZMgO:lJbbb9p9DTmbaO:Ohexekcjjjj94hekaicufhAc:bwhmcbhCadhXcbhQinaChLaeamgKcufaeaK9iEaPgDcefaeaD9kEhYdndnadTmbaYcuf:YhOaqhiaxheadhmindndnaiIdbaONJbbbZMg8A:lJbbb9p9DTmba8A:OhCxekcjjjj94hCkaCcCthCdndnaiclfIdbaONJbbbZMg8A:lJbbb9p9DTmba8A:OhExekcjjjj94hEkaEcqtaCVhCdndnaicwfIdbaONJbbbZMg8A:lJbbb9p9DTmba8A:OhExekcjjjj94hEkaeaCaEVBdbaicxfhiaeclfheamcufgmmbkazcFeasz:ljjjbh3cbh5cbhPindna3axaPcdtfydbgCcm4aC7c:v;t;h;Ev2gics4ai7aAGgmcdtfgEydbgecuSmbaeaCSmbcehiina3amaifaAGgmcdtfgEydbgecuSmeaicefhiaeaC9hmbkkaEaCBdba5aecuSfh5aPcefgPad9hmbxdkkazcFeasz:ljjjb8Acbh5kaDaYa5ar0giEhPaLa5aiEhCdna5arSmbaYaKaiEgmaP9Rcd9imbdndnaQcl0mbdnaX:ZgOaL:Zg8A:taY:Yg8EaD:Y:tg8Fa8EaK:Y:tgaa5:ZghaH:tNNNaOaH:taaNa8Aah:tNa8AaH:ta8FNahaO:tNM:va8EMJbbbZMgO:lJbbb9p9DTmbaO:Ohexdkcjjjj94hexekaPamfcd9Theka5aXaiEhXaQcefgQcs9hmekkdndnaCmbcihicbhDxekcbhiawakcbyd:m:jjjbHjjjjbbg5BdKawclBd2aPcuf:Yh8AdndnadTmbaqhiaxheadhmindndnaiIdba8ANJbbbZMgO:lJbbb9p9DTmbaO:OhCxekcjjjj94hCkaCcCthCdndnaiclfIdba8ANJbbbZMgO:lJbbb9p9DTmbaO:OhExekcjjjj94hEkaEcqtaCVhCdndnaicwfIdba8ANJbbbZMgO:lJbbb9p9DTmbaO:OhExekcjjjj94hEkaeaCaEVBdbaicxfhiaeclfheamcufgmmbkazcFeasz:ljjjbh3cbhDcbhYindndndna3axaYcdtgKfydbgCcm4aC7c:v;t;h;Ev2gics4ai7aAGgmcdtfgEydbgecuSmbcehiinaxaecdtgefydbaCSmdamaifheaicefhia3aeaAGgmcdtfgEydbgecu9hmbkkaEaYBdbaDhiaDcefhDxeka5aefydbhika5aKfaiBdbaYcefgYad9hmbkcuaDc32giaDc;j:KM;jb0EhexekazcFeasz:ljjjb8AcbhDcbhekawaecbyd:m:jjjbHjjjjbbgeBd3awcvBd2aecbaiz:ljjjbhEavcd4hKdnadTmbdnalTmbaKcdth3a5hCaqhealhmadhAinaEaCydbc32fgiaeIdbaiIdbMUdbaiaeclfIdbaiIdlMUdlaiaecwfIdbaiIdwMUdwaiamIdbaiIdxMUdxaiamclfIdbaiIdzMUdzaiamcwfIdbaiIdCMUdCaiaiIdKJbbjZMUdKaCclfhCaecxfheama3fhmaAcufgAmbxdkka5hmaqheadhCinaEamydbc32fgiaeIdbaiIdbMUdbaiaeclfIdbaiIdlMUdlaiaecwfIdbaiIdwMUdwaiaiIdxJbbbbMUdxaiaiIdzJbbbbMUdzaiaiIdCJbbbbMUdCaiaiIdKJbbjZMUdKamclfhmaecxfheaCcufgCmbkkdnaDTmbaEhiaDheinaiaiIdbJbbbbJbbjZaicKfIdbgO:vaOJbbbb9BEgONUdbaiclfgmaOamIdbNUdbaicwfgmaOamIdbNUdbaicxfgmaOamIdbNUdbaiczfgmaOamIdbNUdbaicCfgmaOamIdbNUdbaic3fhiaecufgembkkcbhCawcuaDcdtgYaDcFFFFi0Egicbyd:m:jjjbHjjjjbbgeBdaawcoBd2awaicbyd:m:jjjbHjjjjbbg3Bd8KaecFeaYz:ljjjbhxdnadTmbJbbjZJbbjZa8A:vaPceSEaoNgOaONh8AaKcdthPalheina8Aaec;81jjbalEgmIdwaEa5ydbgAc32fgiIdC:tgOaONamIdbaiIdx:tgOaONamIdlaiIdz:tgOaONMMNaqcwfIdbaiIdw:tgOaONaqIdbaiIdb:tgOaONaqclfIdbaiIdl:tgOaONMMMhOdndnaxaAcdtgifgmydbcuSmba3aifIdbaO9ETmekamaCBdba3aifaOUdbka5clfh5aqcxfhqaeaPfheadaCcefgC9hmbkkabaxaYz:kjjjb8AcrhikaicdthiinaiTmeaic98fgiawcxffydbcbyd1:jjjbH:bjjjbbxbkkawc;Wbf8KjjjjbaDk:Ydidui99ducbhi8Jjjjjbca9Rglczfcwfcbyd11jjbBdbalcb8Pdj1jjb83izalcwfcbydN1jjbBdbalcb8Pd:m1jjb83ibdndnaembJbbjFhvJbbjFhoJbbjFhrxekadcd4cdthwincbhdinalczfadfgDabadfIdbgvaDIdbgoaoav9EEUdbaladfgDavaDIdbgoaoav9DEUdbadclfgdcx9hmbkabawfhbaicefgiae9hmbkalIdwalIdK:thralIdlalIdC:thoalIdbalIdz:thvkJbbbbavavJbbbb9DEgvaoaoav9DEgvararav9DEk9DeeuabcFeaicdtz:ljjjbhlcbhbdnadTmbindnalaeydbcdtfgiydbcu9hmbaiabBdbabcefhbkaeclfheadcufgdmbkkabk9teiucbcbyd:q:jjjbgeabcifc98GfgbBd:q:jjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;teeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiaeydlBdlaiaeydwBdwaiaeydxBdxaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk:3eedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdxaialBdwaialBdlaialBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabk9teiucbcbyd:q:jjjbgeabcrfc94GfgbBd:q:jjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik9:eiuZbhedndncbyd:q:jjjbgdaecztgi9nmbcuheadai9RcFFifcz4nbcuSmekadhekcbabae9Rcifc98Gcbyd:q:jjjbfgdBd:q:jjjbdnadZbcztge9nmbadae9RcFFifcz4nb8Akk6eiucbhidnadTmbdninabRbbglaeRbbgv9hmeaecefheabcefhbadcufgdmbxdkkalav9Rhikaikk:Iedbcjwk1eFFuuFFuuFFuuFFuFFFuFFFuFbbbbbbbbeeebeebebbeeebebbbbbebebbbbbbbbbebbbdbbbbbbbebbbebbbdbbbbbbbbbbbeeeeebebbebbebebbbeebbbbbbbbbbbbbbbbbbbbbc1Dkxebbbdbbb:GNbb"),{}).then(function(s){(r=s.instance).exports.__wasm_call_ctors()});function a(s){if(!s)throw new Error("Assertion failed")}function n(s){return new Uint8Array(s.buffer,s.byteOffset,s.byteLength)}function i(s,A,u,c,d,l,h,b){var g=r.exports.sbrk,f=g(4*b),m=g(u*c),p=g(u*l),C=new Uint8Array(r.exports.memory.buffer);C.set(n(A),m),d&&C.set(n(d),p);var I=s(f,m,u,c,p,l,h,b);new Uint8Array(r.exports.memory.buffer);var x=new Uint32Array(I);return n(x).set(C.subarray(f,f+4*I)),g(f-g(0)),x}var o={LockBorder:1,Sparse:2,ErrorAbsolute:4,Prune:8,_InternalDebug:1<<30}})(),function(){var r,e=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if(typeof WebAssembly!="object")return{supported:!1};var t=WebAssembly.instantiate(function(o){for(var s=new Uint8Array(o.length),A=0;A<o.length;++A){var u=o.charCodeAt(A);s[A]=u>96?u-97:u>64?u-39:u+4}var c=0;for(A=0;A<o.length;++A)s[c++]=s[A]<60?e[s[A]]:64*(s[A]-60)+s[++A];return s.buffer.slice(0,c)}("b9H79TebbbeVx9Geueu9Geub9Gbb9Giuuueu9Gmuuuuuuuuuuu9999eu9Gvuuuuueu9Gwuuuuuuuub9Gxuuuuuuuuuuuueu9Gkuuuuuuuuuu99eu9Gouuuuuub9Gruuuuuuub9GluuuubiOHdilvorwDDqkbiibeilve9Weiiviebeoweuec:q:Odkr:Yewo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9I919P29K9nW79O2Wt79c9V919U9KbeX9TW79O9V9Wt9F9I919P29K9nW79O2Wt7bo39TW79O9V9Wt9F9J9V9T9W91tWJ2917tWV9c9V919U9K7br39TW79O9V9Wt9F9J9V9T9W91tW9nW79O2Wt9c9V919U9K7bDL9TW79O9V9Wt9F9V9Wt9P9T9P96W9nW79O2Wtbql79IV9RbkDwebcekdsPq;29zHdbkIbabaec9:fgefcufae9Ugeabci9Uadfcufad9Ugbaeab0Ek:w8KDPue99eux99dui99euo99iu8Jjjjjbc:WD9Rgm8KjjjjbdndnalmbcbhPxekamc:Cwfcbc;Kbz:njjjb8Adndnalcb9imbaoal9nmbamcuaocdtaocFFFFi0Egscbyd:e1jjbHjjjjbbgzBd:CwamceBd;8wamascbyd:e1jjbHjjjjbbgHBd:GwamcdBd;8wamcualcdtalcFFFFi0Ecbyd:e1jjbHjjjjbbgOBd:KwamciBd;8waihsalhAinazasydbcdtfcbBdbasclfhsaAcufgAmbkaihsalhAinazasydbcdtfgCaCydbcefBdbasclfhsaAcufgAmbkaihsalhCcbhXindnazasydbcdtgQfgAydbcb9imbaHaQfaXBdbaAaAydbgQcjjjj94VBdbaQaXfhXkasclfhsaCcufgCmbkalci9UhLdnalci6mbcbhsaihAinaAcwfydbhCaAclfydbhXaHaAydbcdtfgQaQydbgQcefBdbaOaQcdtfasBdbaHaXcdtfgXaXydbgXcefBdbaOaXcdtfasBdbaHaCcdtfgCaCydbgCcefBdbaOaCcdtfasBdbaAcxfhAaLascefgs9hmbkkaihsalhAindnazasydbcdtgCfgXydbgQcu9kmbaXaQcFFFFrGgQBdbaHaCfgCaCydbaQ9RBdbkasclfhsaAcufgAmbxdkkamcuaocdtgsaocFFFFi0EgAcbyd:e1jjbHjjjjbbgzBd:CwamceBd;8wamaAcbyd:e1jjbHjjjjbbgHBd:GwamcdBd;8wamcualcdtalcFFFFi0Ecbyd:e1jjbHjjjjbbgOBd:KwamciBd;8wazcbasz:njjjbhXalci9UhLaihsalhAinaXasydbcdtfgCaCydbcefBdbasclfhsaAcufgAmbkdnaoTmbcbhsaHhAaXhCaohQinaAasBdbaAclfhAaCydbasfhsaCclfhCaQcufgQmbkkdnalci6mbcbhsaihAinaAcwfydbhCaAclfydbhQaHaAydbcdtfgKaKydbgKcefBdbaOaKcdtfasBdbaHaQcdtfgQaQydbgQcefBdbaOaQcdtfasBdbaHaCcdtfgCaCydbgCcefBdbaOaCcdtfasBdbaAcxfhAaLascefgs9hmbkkaoTmbcbhsaohAinaHasfgCaCydbaXasfydb9RBdbasclfhsaAcufgAmbkkamaLcbyd:e1jjbHjjjjbbgsBd:OwamclBd;8wascbaLz:njjjbhYamcuaLcK2alcjjjjd0Ecbyd:e1jjbHjjjjbbg8ABd:SwamcvBd;8wJbbbbhEdnalci6g3mbarcd4hKaihAa8AhsaLhrJbbbbh5inavaAclfydbaK2cdtfgCIdlh8EavaAydbaK2cdtfgXIdlhEavaAcwfydbaK2cdtfgQIdlh8FaCIdwhaaXIdwhhaQIdwhgasaCIdbg8JaXIdbg8KMaQIdbg8LMJbbnn:vUdbasclfaXIdlaCIdlMaQIdlMJbbnn:vUdbaQIdwh8MaCIdwh8NaXIdwhyascxfa8EaE:tg8Eagah:tggNa8FaE:tg8Faaah:tgaN:tgEJbbbbJbbjZa8Ja8K:tg8Ja8FNa8La8K:tg8Ka8EN:tghahNaEaENaaa8KNaga8JN:tgEaENMM:rg8K:va8KJbbbb9BEg8ENUdbasczfaEa8ENUdbascCfaha8ENUdbascwfa8Maya8NMMJbbnn:vUdba5a8KMh5aAcxfhAascKfhsarcufgrmbka5aL:Z:vJbbbZNhEkamcuaLcdtalcFFFF970Ecbyd:e1jjbHjjjjbbgCBd:WwamcoBd;8waEaq:ZNhEdna3mbcbhsaChAinaAasBdbaAclfhAaLascefgs9hmbkkaE:rhhcuh8PamcuaLcltalcFFFFd0Ecbyd:e1jjbHjjjjbbgIBd:0wamcrBd;8wcbaIa8AaCaLz:djjjb8AJFFuuhyJFFuuh8RJFFuuh8Sdnalci6gXmbJFFuuh8Sa8AhsaLhAJFFuuh8RJFFuuhyinascwfIdbgEayayaE9EEhyasclfIdbgEa8Ra8RaE9EEh8RasIdbgEa8Sa8SaE9EEh8SascKfhsaAcufgAmbkkahJbbbZNhgamaocetgscuaocu9kEcbyd:e1jjbHjjjjbbgABd:4waAcFeasz:njjjbhCdnaXmbcbhAJFFuuhEa8Ahscuh8PinascwfIdbay:tghahNasIdba8S:tghahNasclfIdba8R:tghahNMM:rghaEa8PcuSahaE9DVgXEhEaAa8PaXEh8PascKfhsaLaAcefgA9hmbkkamczfcbcjwz:njjjb8Aamcwf9cb83ibam9cb83ibagaxNhRJbbjZak:th8Ncbh8UJbbbbh8VJbbbbh8WJbbbbh8XJbbbbh8YJbbbbh8ZJbbbbh80cbh81cbhPinJbbbbhEdna8UTmbJbbjZa8U:Z:vhEkJbbbbhhdna80a80Na8Ya8YNa8Za8ZNMMg8KJbbbb9BmbJbbjZa8K:r:vhhka8XaENh5a8WaENh8Fa8VaENhaa8PhQdndndndndna8UaPVTmbamydwgBTmea80ahNh8Ja8ZahNh8La8YahNh8Maeamydbcdtfh83cbh3JFFuuhEcvhXcuhQindnaza83a3cdtfydbcdtgsfydbgvTmbaOaHasfydbcdtfhAindndnaCaiaAydbgKcx2fgsclfydbgrcetf8Vebcs4aCasydbgLcetf8Vebcs4faCascwfydbglcetf8Vebcs4fgombcbhsxekcehsazaLcdtfydbgLceSmbcehsazarcdtfydbgrceSmbcehsazalcdtfydbglceSmbdnarcdSaLcdSfalcdSfcd6mbaocefhsxekaocdfhskdnasaX9kmba8AaKcK2fgLIdwa5:thhaLIdla8F:th8KaLIdbaa:th8EdndnakJbbbb9DTmba8E:lg8Ea8K:lg8Ka8Ea8K9EEg8Kah:lgha8Kah9EEag:vJbbjZMhhxekahahNa8Ea8ENa8Ka8KNMM:rag:va8NNJbbjZMJ9VO:d86JbbjZaLIdCa8JNaLIdxa8MNa8LaLIdzNMMakN:tghahJ9VO:d869DENhhkaKaQasaX6ahaE9DVgLEhQasaXaLEhXahaEaLEhEkaAclfhAavcufgvmbkka3cefg3aB9hmbkkaQcu9hmekama5Ud:ODama8FUd:KDamaaUd:GDamcuBd:qDamcFFF;7rBdjDaIcba8AaYamc:GDfakJbbbb9Damc:qDfamcjDfz:ejjjbamyd:qDhQdndnaxJbbbb9ETmba8UaD6mbaQcuSmeceh3amIdjDaR9EmixdkaQcu9hmekdna8UTmbdnamydlgza8Uci2fgsciGTmbadasfcba8Uazcu7fciGcefz:njjjb8AkabaPcltfgzam8Pib83dbazcwfamcwf8Pib83dbaPcefhPkc3hzinazc98Smvamc:Cwfazfydbcbydj1jjbH:bjjjbbazc98fhzxbkkcbh3a8Uaq9pmbamydwaCaiaQcx2fgsydbcetf8Vebcs4aCascwfydbcetf8Vebcs4faCasclfydbcetf8Vebcs4ffaw9nmekcbhscbhAdna81TmbcbhAamczfhXinamczfaAcdtfaXydbgLBdbaXclfhXaAaYaLfRbbTfhAa81cufg81mbkkamydwhlamydbhXam9cu83i:GDam9cu83i:ODam9cu83i:qDam9cu83i:yDaAc;8eaAclfc:bd6Eh81inamcjDfasfcFFF;7rBdbasclfgscz9hmbka81cdthBdnalTmbaeaXcdtfhocbhrindnazaoarcdtfydbcdtgsfydbgvTmbaOaHasfydbcdtfhAcuhLcuhsinazaiaAydbgKcx2fgXclfydbcdtfydbazaXydbcdtfydbfazaXcwfydbcdtfydbfgXasaXas6gXEhsaKaLaXEhLaAclfhAavcufgvmbkaLcuSmba8AaLcK2fgAIdway:tgEaENaAIdba8S:tgEaENaAIdla8R:tgEaENMM:rhEcbhAindndnasamc:qDfaAfgvydbgX6mbasaX9hmeaEamcjDfaAfIdb9FTmekavasBdbamc:GDfaAfaLBdbamcjDfaAfaEUdbxdkaAclfgAcz9hmbkkarcefgral9hmbkkamczfaBfhLcbhscbhAindnamc:GDfasfydbgXcuSmbaLaAcdtfaXBdbaAcefhAkasclfgscz9hmbkaAa81fg81TmbJFFuuhhcuhKamczfhsa81hvcuhLina8AasydbgXcK2fgAIdway:tgEaENaAIdba8S:tgEaENaAIdla8R:tgEaENMM:rhEdndnazaiaXcx2fgAclfydbcdtfydbazaAydbcdtfydbfazaAcwfydbcdtfydbfgAaL6mbaAaL9hmeaEah9DTmekaEhhaAhLaXhKkasclfhsavcufgvmbkaKcuSmbaKhQkdnamaiaQcx2fgrydbarclfydbarcwfydbaCabaeadaPawaqa3z:fjjjbTmbaPcefhPJbbbbh8VJbbbbh8WJbbbbh8XJbbbbh8YJbbbbh8ZJbbbbh80kcbhXinaOaHaraXcdtfydbcdtgAfydbcdtfgKhsazaAfgvydbgLhAdnaLTmbdninasydbaQSmeasclfhsaAcufgATmdxbkkasaKaLcdtfc98fydbBdbavavydbcufBdbkaXcefgXci9hmbka8AaQcK2fgsIdbhEasIdlhhasIdwh8KasIdxh8EasIdzh5asIdCh8FaYaQfce86bba80a8FMh80a8Za5Mh8Za8Ya8EMh8Ya8Xa8KMh8Xa8WahMh8Wa8VaEMh8Vamydxh8Uxbkkamc:WDf8KjjjjbaPk;Vvivuv99lu8Jjjjjbca9Rgv8Kjjjjbdndnalcw0mbaiydbhoaeabcitfgralcdtcufBdlaraoBdbdnalcd6mbaiclfhoalcufhwarcxfhrinaoydbhDarcuBdbarc98faDBdbarcwfhraoclfhoawcufgwmbkkalabfhrxekcbhDavczfcwfcbBdbav9cb83izavcwfcbBdbav9cb83ibJbbjZhqJbbjZhkinadaiaDcdtfydbcK2fhwcbhrinavczfarfgoawarfIdbgxaoIdbgm:tgPakNamMgmUdbavarfgoaPaxam:tNaoIdbMUdbarclfgrcx9hmbkJbbjZaqJbbjZMgq:vhkaDcefgDal9hmbkcbhoadcbcecdavIdlgxavIdwgm9GEgravIdbgPam9GEaraPax9GEgscdtgrfhzavczfarfIdbhxaihralhwinaiaocdtfgDydbhHaDarydbgOBdbaraHBdbarclfhraoazaOcK2fIdbax9Dfhoawcufgwmbkaeabcitfhrdndnaocv6mbaoalc98f6mekaraiydbBdbaralcdtcufBdlaiclfhoalcufhwarcxfhrinaoydbhDarcuBdbarc98faDBdbarcwfhraoclfhoawcufgwmbkalabfhrxekaraxUdbararydlc98GasVBdlabcefaeadaiaoz:djjjbhwararydlciGawabcu7fcdtVBdlawaeadaiaocdtfalao9Rz:djjjbhrkavcaf8Kjjjjbark:;idiud99dndnabaecitfgwydlgDciGgqciSmbinabcbaDcd4gDalaqcdtfIdbawIdb:tgkJbbbb9FEgwaecefgefadaialavaoarz:ejjjbak:larIdb9FTmdabawaD7aefgecitfgwydlgDciGgqci9hmbkkabaecitfgeclfhbdnavmbcuhwindnaiaeydbgDfRbbmbadaDcK2fgqIdwalIdw:tgkakNaqIdbalIdb:tgkakNaqIdlalIdl:tgkakNMM:rgkarIdb9DTmbarakUdbaoaDBdbkaecwfheawcefgwabydbcd46mbxdkkcuhwindnaiaeydbgDfRbbmbadaDcK2fgqIdbalIdb:t:lgkaqIdlalIdl:t:lgxakax9EEgkaqIdwalIdw:t:lgxakax9EEgkarIdb9DTmbarakUdbaoaDBdbkaecwfheawcefgwabydbcd46mbkkk;llevudnabydwgxaladcetfgm8Vebcs4alaecetfgP8Vebgscs4falaicetfgz8Vebcs4ffaD0abydxaq9pVakVgDce9hmbavawcltfgxab8Pdb83dbaxcwfabcwfgx8Pdb83dbdnaxydbgqTmbaoabydbcdtfhxaqhsinalaxydbcetfcFFi87ebaxclfhxascufgsmbkkdnabydxglci2gsabydlgxfgkciGTmbarakfcbalaxcu7fciGcefz:njjjb8Aabydxci2hsabydlhxabydwhqkab9cb83dwababydbaqfBdbabascifc98GaxfBdlaP8Vebhscbhxkdnascztcz91cu9kmbabaxcefBdwaPax87ebaoabydbcdtfaxcdtfaeBdbkdnam8Uebcu9kmbababydwgxcefBdwamax87ebaoabydbcdtfaxcdtfadBdbkdnaz8Uebcu9kmbababydwgxcefBdwazax87ebaoabydbcdtfaxcdtfaiBdbkarabydlfabydxci2faPRbb86bbarabydlfabydxci2fcefamRbb86bbarabydlfabydxci2fcdfazRbb86bbababydxcefBdxaDk8LbabaeadaialavaoarawaDaDaqJbbbbz:cjjjbk;Jkovud99euv99eul998Jjjjjbc:W;ae9Rgo8KjjjjbdndnadTmbavcd4hrcbhwcbhDindnaiaeclfydbar2cdtfgvIdbaiaeydbar2cdtfgqIdbgk:tgxaiaecwfydbar2cdtfgmIdlaqIdlgP:tgsNamIdbak:tgzavIdlaP:tgPN:tgkakNaPamIdwaqIdwgH:tgONasavIdwaH:tgHN:tgPaPNaHazNaOaxN:tgxaxNMM:rgsJbbbb9Bmbaoc:W:qefawcx2fgAakas:vUdwaAaxas:vUdlaAaPas:vUdbaoc8Wfawc8K2fgAaq8Pdb83dbaAav8Pdb83dxaAam8Pdb83dKaAcwfaqcwfydbBdbaAcCfavcwfydbBdbaAcafamcwfydbBdbawcefhwkaecxfheaDcifgDad6mbkab9cb83dbabcyf9cb83dbabcaf9cb83dbabcKf9cb83dbabczf9cb83dbabcwf9cb83dbawTmeaocbBd8Sao9cb83iKao9cb83izaoczfaoc8Wfawci2cxaoc8Sfcbz1jjjbaoIdKhCaoIdChXaoIdzhQao9cb83iwao9cb83ibaoaoc:W:qefawcxaoc8Sfcbz1jjjbJbbjZhkaoIdwgPJbbbbJbbjZaPaPNaoIdbgPaPNaoIdlgsasNMM:rgx:vaxJbbbb9BEgzNhxasazNhsaPazNhzaoc:W:qefheawhvinaecwfIdbaxNaeIdbazNasaeclfIdbNMMgPakaPak9DEhkaecxfheavcufgvmbkabaCUdwabaXUdlabaQUdbabaoId3UdxdndnakJ;n;m;m899FmbJbbbbhPaoc:W:qefheaoc8WfhvinaCavcwfIdb:taecwfIdbgHNaQavIdb:taeIdbgONaXavclfIdb:taeclfIdbgLNMMaxaHNazaONasaLNMM:vgHaPaHaP9EEhPavc8KfhvaecxfheawcufgwmbkabaxUd8KabasUdaabazUd3abaCaxaPN:tUdKabaXasaPN:tUdCabaQazaPN:tUdzabJbbjZakakN:t:rgkUdydndnaxJbbj:;axJbbj:;9GEgPJbbjZaPJbbjZ9FEJbb;:9cNJbbbZJbbb:;axJbbbb9GEMgP:lJbbb9p9DTmbaP:Ohexekcjjjj94hekabae86b8UdndnasJbbj:;asJbbj:;9GEgPJbbjZaPJbbjZ9FEJbb;:9cNJbbbZJbbb:;asJbbbb9GEMgP:lJbbb9p9DTmbaP:Ohvxekcjjjj94hvkabav86bRdndnazJbbj:;azJbbj:;9GEgPJbbjZaPJbbjZ9FEJbb;:9cNJbbbZJbbb:;azJbbbb9GEMgP:lJbbb9p9DTmbaP:Ohqxekcjjjj94hqkabaq86b8SdndnaecKtcK91:YJbb;:9c:vax:t:lavcKtcK91:YJbb;:9c:vas:t:laqcKtcK91:YJbb;:9c:vaz:t:lakMMMJbb;:9cNJbbjZMgk:lJbbb9p9DTmbak:Ohexekcjjjj94hekaecFbaecFb9iEhexekabcjjj;8iBdycFbhekabae86b8Vxekab9cb83dbabcyf9cb83dbabcaf9cb83dbabcKf9cb83dbabczf9cb83dbabcwf9cb83dbkaoc:W;aef8Kjjjjbk;Yodouk99cbho8Jjjjjbca9RgrczfcwfcbBdbar9cb83izarcwfcbBdbar9cb83ibavcd4hwaicd4hDdnadTmbaDcdthqaehkinalaoaw2cdtfIdbhxcbhvinarczfavfgiaoaiydbgiakavfIdbgmax:taeavaqai2ffIdbalaiaw2cdtfIdb:t9DEBdbaravfgiaoaiydbgiaxamMaeavaqai2ffIdbalaiaw2cdtfIdbM9EEBdbavclfgvcx9hmbkakaqfhkaocefgoad9hmbkkJbbbbhxcbhvcbhkcbhiinalaravfydbgoaw2cdtfIdbalarczfavfydbgqaw2cdtfIdbaeaoaD2cdtfgoIdwaeaqaD2cdtfgqIdw:tgmamNaoIdbaqIdb:tgmamNaoIdlaqIdl:tgmamNMM:rMMgmaxamax9EgoEhxaiakaoEhkavclfhvaicefgici9hmbkJbbbbhmdnaearakcdtgifydbgoaD2cdtfgvIdwaearczfaifydbgraD2cdtfgiIdwgP:tgsasNavIdbaiIdbgz:tgHaHNavIdlaiIdlgO:tgAaANMM:rgCJbbbb9ETmbaCalaoaw2cdtfIdbMalaraw2cdtfIdb:taCaCM:vhmkaxJbbbZNhCasamNaPMhPaAamNaOMhOaHamNazMhzdnadTmbaDcdthvawcdthiindnalIdbgXaecwfIdbaP:tgxaxNaeIdbaz:tgmamNaeclfIdbaO:tgsasNMM:rgHMgQaC9ETmbJbbbbhAdnaHJbbbb9ETmbaQaC:taHaHM:vhAkaAaxNaPMhPaAasNaOMhOaAamNazMhzaXaCaHMMJbbbZNhCkaeavfhealaifhladcufgdmbkkabaCUdxabaPUdwabaOUdlabazUdbkjeeiu8Jjjjjbcj8W9Rgr8Kjjjjbaici2hwdnaiTmbawceawce0EhDarhiinaiaeadRbbcdtfydbBdbadcefhdaiclfhiaDcufgDmbkkabarawaladaoz:hjjjbarcj8Wf8Kjjjjbk:3lequ8JjjjjbcjP9Rgl8Kjjjjbcbhvalcjxfcbaiz:njjjb8AdndnadTmbcjehoaehrincuhwarhDcuhqavhkdninawakaoalcjxfaDcefRbbfRbb9RcFeGci6aoalcjxfaDRbbfRbb9RcFeGci6faoalcjxfaDcdfRbbfRbb9RcFeGci6fgxaq9mgmEhwdnammbaxce0mdkaxaqaxaq9kEhqaDcifhDadakcefgk9hmbkkaeawci2fgDcdfRbbhqaDcefRbbhxaDRbbhkaeavci2fgDcifaDawav9Rci2z:qjjjb8Aakalcjxffaocefgo86bbaxalcjxffao86bbaDcdfaq86bbaDcefax86bbaDak86bbaqalcjxffao86bbarcifhravcefgvad9hmbkalcFeaicetz:njjjbhoadci2gDceaDce0EhqcbhxindnaoaeRbbgkcetfgw8UebgDcu9kmbawax87ebaocjlfaxcdtfabakcdtfydbBdbaxhDaxcefhxkaeaD86bbaecefheaqcufgqmbkaxcdthDxekcbhDkabalcjlfaDz:mjjjb8AalcjPf8Kjjjjbk9teiucbcbyd11jjbgeabcifc98GfgbBd11jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;teeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiaeydlBdlaiaeydwBdwaiaeydxBdxaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk:3eedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdxaialBdwaialBdlaialBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabk9teiucbcbyd11jjbgeabcrfc94GfgbBd11jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik9:eiuZbhedndncbyd11jjbgdaecztgi9nmbcuheadai9RcFFifcz4nbcuSmekadhekcbabae9Rcifc98Gcbyd11jjbfgdBd11jjbdnadZbcztge9nmbadae9RcFFifcz4nb8Akk:;Deludndndnadch9pmbabaeSmdaeabadfgi9Rcbadcet9R0mekabaead;8qbbxekaeab7ciGhldndndnabae9pmbdnalTmbadhvabhixikdnabciGmbadhvabhixdkadTmiabaeRbb86bbadcufhvdnabcefgiciGmbaecefhexdkavTmiabaeRbe86beadc9:fhvdnabcdfgiciGmbaecdfhexdkavTmiabaeRbd86bdadc99fhvdnabcifgiciGmbaecifhexdkavTmiabaeRbi86biabclfhiaeclfheadc98fhvxekdnalmbdnaiciGTmbadTmlabadcufgifglaeaifRbb86bbdnalciGmbaihdxekaiTmlabadc9:fgifglaeaifRbb86bbdnalciGmbaihdxekaiTmlabadc99fgifglaeaifRbb86bbdnalciGmbaihdxekaiTmlabadc98fgdfaeadfRbb86bbkadcl6mbdnadc98fgocd4cefciGgiTmbaec98fhlabc98fhvinavadfaladfydbBdbadc98fhdaicufgimbkkaocx6mbaec9Wfhvabc9WfhoinaoadfgicxfavadfglcxfydbBdbaicwfalcwfydbBdbaiclfalclfydbBdbaialydbBdbadc9Wfgdci0mbkkadTmdadhidnadciGglTmbaecufhvabcufhoadhiinaoaifavaifRbb86bbaicufhialcufglmbkkadcl6mdaec98fhlabc98fhvinavaifgecifalaifgdcifRbb86bbaecdfadcdfRbb86bbaecefadcefRbb86bbaeadRbb86bbaic98fgimbxikkavcl6mbdnavc98fglcd4cefcrGgdTmbavadcdt9RhvinaiaeydbBdbaeclfheaiclfhiadcufgdmbkkalc36mbinaiaeydbBdbaiaeydlBdlaiaeydwBdwaiaeydxBdxaiaeydzBdzaiaeydCBdCaiaeydKBdKaiaeyd3Bd3aecafheaicafhiavc9Gfgvci0mbkkavTmbdndnavcrGgdmbavhlxekavc94GhlinaiaeRbb86bbaicefhiaecefheadcufgdmbkkavcw6mbinaiaeRbb86bbaiaeRbe86beaiaeRbd86bdaiaeRbi86biaiaeRbl86blaiaeRbv86bvaiaeRbo86boaiaeRbr86braicwfhiaecwfhealc94fglmbkkabkkAebcjwkxebbbdbbbzNbb"),{}).then(function(o){(r=o.instance).exports.__wasm_call_ctors()});function a(o){if(!o)throw new Error("Assertion failed")}function n(o){return new Uint8Array(o.buffer,o.byteOffset,o.byteLength)}function i(o){var s=new Float32Array(r.exports.memory.buffer,o,12);return{centerX:s[0],centerY:s[1],centerZ:s[2],radius:s[3],coneApexX:s[4],coneApexY:s[5],coneApexZ:s[6],coneAxisX:s[7],coneAxisY:s[8],coneAxisZ:s[9],coneCutoff:s[10]}}}();let ut=0;class Bn{constructor(e){if(this.downloadParallelism=e.downloadParallelism==null?8:e.downloadParallelism,this.timeout=e.timeout!=null?e.timeout:5e3,this.renderer=e.renderer,this.zUpToYUpMatrix=new G.Matrix4,this.zUpToYUpMatrix.set(1,0,0,0,0,0,-1,0,0,1,0,0,0,0,0,1),this.maxCachedItems=100,this.proxy=e.proxy,e&&(this.meshCallback=e.meshCallback,this.pointsCallback=e.pointsCallback,e.maxCachedItems!=null&&(this.maxCachedItems=e.maxCachedItems)),this.gltfLoader=new Jr,e&&e.dracoLoader)this.gltfLoader.setDRACOLoader(e.dracoLoader),this.hasDracoLoader=!0;else{const t=new Zr;t.setDecoderPath("https://storage.googleapis.com/ogc-3d-tiles/draco/"),this.dracoLoader=t,this.gltfLoader.setDRACOLoader(t),this.gltfLoader.hasDracoLoader=!0}if(e&&e.ktx2Loader)this.gltfLoader.setKTX2Loader(e.ktx2Loader),this.hasKTX2Loader=!0;else if(e&&e.renderer){const t=new Pe;t.setTranscoderPath("https://storage.googleapis.com/ogc-3d-tiles/basis/").detectSupport(e.renderer),this.ktx2loader=t,this.gltfLoader.setKTX2Loader(t),this.gltfLoader.hasKTX2Loader=!0}this.gltfLoader.setMeshoptDecoder(In),this.hasMeshOptDecoder=!0,this.b3dmDecoder=new zr(this.gltfLoader),this.splatsDecoder=new eo(this.gltfLoader,this.renderer),this.cache=new Gr,this.register={},this.ready=[],this.downloads=[],this.nextReady=[],this.nextDownloads=[]}update(){const e=this;ut<e.downloadParallelism&&e._download(),e._loadBatch()}_scheduleDownload(e){this.downloads.unshift(e)}_download(){if(this.nextDownloads.length!=0||(this._getNextDownloads(),this.nextDownloads.length!=0))for(;this.nextDownloads.length>0;){const e=this.nextDownloads.shift();e&&e.shouldDoDownload()&&e.doDownload()}}_meshReceived(e,t,a,n,i,o,s){this.ready.unshift([e,t,a,n,i,o,s])}_loadBatch(){for(this.nextReady.length==0&&this._getNextReady();this.nextReady.length>0;){const e=this.nextReady.shift();if(!e)return;const t=e[0],a=e[1],n=e[2],i=t.get(n);i&&a[n]&&Object.keys(a[n]).forEach(o=>{const s=a[n][o];s&&(s(i),a[n][o]=null)}),this.nextReady.length==0&&this._getNextReady()}}_getNextDownloads(){let e=Number.POSITIVE_INFINITY,t=-1;for(let s=this.downloads.length-1;s>=0;s--)this.downloads[s].shouldDoDownload()?this.downloads[s].distanceFunction||this.nextDownloads.push(this.downloads.splice(s,1)[0]):this.downloads.splice(s,1);if(this.nextDownloads.length>0)return;let a,n=0,i=Number.MAX_SAFE_INTEGER,o=-1;for(let s=this.downloads.length-1;s>=0;s--){const A=this.downloads[s].distanceFunction();A<=e&&(e=A,t=s),n=Math.max(this.downloads[s].level),this.downloads[s].loadingStrategy!="IMMEDIATE"&&this.downloads[s].level<i&&(i=this.downloads[s].level,o=s)}if(n>i+4?a=this.downloads.splice(o,1).pop():t>=0&&(a=this.downloads.splice(t,1).pop()),a){this.nextDownloads.push(a);const s=a.getSiblings();for(let A=this.downloads.length-1;A>=0;A--)s.map(u=>u.uuid).includes(this.downloads[A].uuid)&&this.nextDownloads.push(this.downloads.splice(A,1).pop())}}_getNextReady(){let e=Number.POSITIVE_INFINITY,t=-1;for(let a=this.ready.length-1;a>=0;a--)this.ready[a][3]||this.nextReady.push(this.ready.splice(a,1)[0]);if(!(this.nextReady.length>0)){for(let a=this.ready.length-1;a>=0;a--){const n=this.ready[a][3]()*this.ready[a][5];n<=e&&(e=n,t=a)}if(t>=0){const a=this.ready.splice(t,1).pop();this.nextReady.push(a);const n=a[4]();for(let i=this.ready.length-1;i>=0;i--)n.map(o=>o.uuid).includes(this.ready[i][6])&&this.nextReady.push(this.ready.splice(i,1).pop())}}}get(e,t,a,n,i,o,s,A,u,c,d,l){const h=this,b=Dn(a),g=new AbortController;if(e.signal.addEventListener("abort",()=>{h.register[b]&&Object.keys(h.register[b]).length!=0||g.abort("user abort")}),!(a.includes(".b3dm")||a.includes(".json")||a.includes(".gltf")||a.includes(".glb")))return void console.error("the 3DTiles cache can only be used to load B3DM, gltf and json data");if(h.register[b]||(h.register[b]={}),h.register[b][t]&&console.error(" a tile should only be loaded once"),h.register[b][t]=n,h.cache.get(b))this._meshReceived(h.cache,h.register,b,i,o,s,t);else{let f;a.includes(".b3dm")?f=()=>{var m;m=h.proxy?()=>fetch(h.proxy,{method:"POST",body:a,signal:g.signal}):()=>fetch(a,{signal:g.signal}),ut++,m().then(p=>{if(!p.ok)throw console.error("could not load tile with path : "+a),new Error(`couldn't load "${a}". Request failed with status ${p.status} : ${p.statusText}`);return p.arrayBuffer()}).then(p=>this.b3dmDecoder.parseB3DM(p,C=>{h.meshCallback(C,d)},u,c)).then(p=>{h.cache.put(b,p),this._meshReceived(h.cache,h.register,b,i,o,s,t),h._checkSize()}).catch(p=>{}).finally(()=>{ut--})}:a.includes(".glb")||a.includes(".gltf")?f=l?()=>{var m;m=h.proxy?()=>fetch(h.proxy,{method:"POST",body:a,signal:g.signal}):()=>fetch(a,{signal:g.signal}),ut++,m().then(p=>{if(!p.ok)throw console.error("could not load tile with path : "+a),new Error(`couldn't load "${a}". Request failed with status ${p.status} : ${p.statusText}`);return p.arrayBuffer()}).then(p=>this.splatsDecoder.parseSplats(p,u,c,l)).then(p=>{h.cache.put(b,p),h._meshReceived(h.cache,h.register,b,i,o,s,t),h._checkSize()}).catch(p=>{}).finally(()=>{ut--})}:()=>{var m;m=h.proxy?()=>fetch(h.proxy,{method:"POST",body:a,signal:g.signal}):()=>fetch(a,{signal:g.signal}),ut++,m().then(p=>{if(!p.ok)throw console.error("could not load tile with path : "+a),new Error(`couldn't load "${a}". Request failed with status ${p.status} : ${p.statusText}`);return p.arrayBuffer()}).then(async p=>{await async function(C){return new Promise(I=>{const x=setInterval(()=>{C.hasDracoLoader&&!C.dracoLoader||C.hasKTX2Loader&&!C.ktx2Loader||(clearInterval(x),I())},10)})}(this.gltfLoader),this.gltfLoader.parse(p,null,C=>{C.scene.asset=C.asset,u&&C.scene.applyMatrix4(this.zUpToYUpMatrix),C.scene.traverse(I=>{I.isMesh&&(c&&I.applyMatrix4(this.zUpToYUpMatrix),h.meshCallback&&h.meshCallback(I,d)),I.isPoints&&h.pointsCallback&&h.pointsCallback(I,d)}),h.cache.put(b,C.scene),h._meshReceived(h.cache,h.register,b,i,o,s,t),h._checkSize()})}).catch(p=>{p!=="user abort"&&p.code}).finally(()=>{ut--})}:a.includes(".json")&&(f=()=>{var m;m=h.proxy?()=>fetch(h.proxy,{method:"POST",body:a,signal:g.signal}):()=>fetch(a,{signal:g.signal}),ut++,m().then(p=>{if(!p.ok)throw console.error("could not load tile with path : "+a),new Error(`couldn't load "${a}". Request failed with status ${p.status} : ${p.statusText}`);return p.json()}).then(p=>er(p,a)).then(p=>{h.cache.put(b,p),h._meshReceived(h.cache,h.register,b),h._checkSize()}).catch(p=>{console.error(p)}).finally(()=>{ut--})}),this._scheduleDownload({shouldDoDownload:()=>!e.signal.aborted&&!!h.register[b]&&Object.keys(h.register[b]).length>0&&!h.cache.get(b),doDownload:f,distanceFunction:i,getSiblings:o,level:s,loadingStrategy:A,uuid:t})}}clear(){const e=this.maxCachedItems;this.maxCachedItems=0,this._checkSize(),this.maxCachedItems=e}invalidate(e,t){const a=Dn(e),n=this;n.register[a]&&setTimeout(()=>{n.register&&n.register[a]&&(delete n.register[a][t],n._checkSize())},n.timeout)}dispose(){let e=this.cache.head();for(this._disposeEntryContent(e);(e=e.next()).key!=null;)this._disposeEntryContent(e);this.cache.reset(),this.cache=void 0,this.register=void 0,this.dracoLoader&&this.dracoLoader.dispose(),this.ktx2loader&&this.ktx2loader.dispose()}_checkSize(){const e=this;let t=0;for(;e.cache.size()>e.maxCachedItems&&t<e.cache.size();){t++;const a=e.cache.head(),n=e.register[a.key];n&&(Object.keys(n).length>0?(e.cache.remove(a.key),e.cache.put(a.key,a.value)):(e.cache.remove(a.key),delete e.register[a.key],e._disposeEntryContent(a)))}}_disposeEntryContent(e){e.value&&(e.value.isSplatsBatch?e.value.remove():e.value.traverse&&e.value.traverse(t=>{if(t.material)if(t.material.length)for(let a=0;a<t.material.length;++a)t.material[a].dispose();else t.material.dispose();t.geometry&&t.geometry.dispose()}))}}function Dn(r){for(var e=r.split("/"),t=[],a=0,n=0;n<e.length;n++){var i=e[n];i!=="."&&i!==""&&i!==".."?t[a++]=i:i===".."&&a>0&&a--}if(a===0)return"/";var o="";for(n=0;n<a;n++)o+="/"+t[n];return o}var yn,wn,ft=function(){if(wn)return yn;function r(a){if(typeof a!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(a))}function e(a,n){for(var i,o="",s=0,A=-1,u=0,c=0;c<=a.length;++c){if(c<a.length)i=a.charCodeAt(c);else{if(i===47)break;i=47}if(i===47){if(!(A===c-1||u===1))if(A!==c-1&&u===2){if(o.length<2||s!==2||o.charCodeAt(o.length-1)!==46||o.charCodeAt(o.length-2)!==46){if(o.length>2){var d=o.lastIndexOf("/");if(d!==o.length-1){d===-1?(o="",s=0):s=(o=o.slice(0,d)).length-1-o.lastIndexOf("/"),A=c,u=0;continue}}else if(o.length===2||o.length===1){o="",s=0,A=c,u=0;continue}}n&&(o.length>0?o+="/..":o="..",s=2)}else o.length>0?o+="/"+a.slice(A+1,c):o=a.slice(A+1,c),s=c-A-1;A=c,u=0}else i===46&&u!==-1?++u:u=-1}return o}wn=1;var t={resolve:function(){for(var a,n="",i=!1,o=arguments.length-1;o>=-1&&!i;o--){var s;o>=0?s=arguments[o]:(a===void 0&&(a=process.cwd()),s=a),r(s),s.length!==0&&(n=s+"/"+n,i=s.charCodeAt(0)===47)}return n=e(n,!i),i?n.length>0?"/"+n:"/":n.length>0?n:"."},normalize:function(a){if(r(a),a.length===0)return".";var n=a.charCodeAt(0)===47,i=a.charCodeAt(a.length-1)===47;return(a=e(a,!n)).length!==0||n||(a="."),a.length>0&&i&&(a+="/"),n?"/"+a:a},isAbsolute:function(a){return r(a),a.length>0&&a.charCodeAt(0)===47},join:function(){if(arguments.length===0)return".";for(var a,n=0;n<arguments.length;++n){var i=arguments[n];r(i),i.length>0&&(a===void 0?a=i:a+="/"+i)}return a===void 0?".":t.normalize(a)},relative:function(a,n){if(r(a),r(n),a===n||(a=t.resolve(a))===(n=t.resolve(n)))return"";for(var i=1;i<a.length&&a.charCodeAt(i)===47;++i);for(var o=a.length,s=o-i,A=1;A<n.length&&n.charCodeAt(A)===47;++A);for(var u=n.length-A,c=s<u?s:u,d=-1,l=0;l<=c;++l){if(l===c){if(u>c){if(n.charCodeAt(A+l)===47)return n.slice(A+l+1);if(l===0)return n.slice(A+l)}else s>c&&(a.charCodeAt(i+l)===47?d=l:l===0&&(d=0));break}var h=a.charCodeAt(i+l);if(h!==n.charCodeAt(A+l))break;h===47&&(d=l)}var b="";for(l=i+d+1;l<=o;++l)l!==o&&a.charCodeAt(l)!==47||(b.length===0?b+="..":b+="/..");return b.length>0?b+n.slice(A+d):(A+=d,n.charCodeAt(A)===47&&++A,n.slice(A))},_makeLong:function(a){return a},dirname:function(a){if(r(a),a.length===0)return".";for(var n=a.charCodeAt(0),i=n===47,o=-1,s=!0,A=a.length-1;A>=1;--A)if((n=a.charCodeAt(A))===47){if(!s){o=A;break}}else s=!1;return o===-1?i?"/":".":i&&o===1?"//":a.slice(0,o)},basename:function(a,n){if(n!==void 0&&typeof n!="string")throw new TypeError('"ext" argument must be a string');r(a);var i,o=0,s=-1,A=!0;if(n!==void 0&&n.length>0&&n.length<=a.length){if(n.length===a.length&&n===a)return"";var u=n.length-1,c=-1;for(i=a.length-1;i>=0;--i){var d=a.charCodeAt(i);if(d===47){if(!A){o=i+1;break}}else c===-1&&(A=!1,c=i+1),u>=0&&(d===n.charCodeAt(u)?--u==-1&&(s=i):(u=-1,s=c))}return o===s?s=c:s===-1&&(s=a.length),a.slice(o,s)}for(i=a.length-1;i>=0;--i)if(a.charCodeAt(i)===47){if(!A){o=i+1;break}}else s===-1&&(A=!1,s=i+1);return s===-1?"":a.slice(o,s)},extname:function(a){r(a);for(var n=-1,i=0,o=-1,s=!0,A=0,u=a.length-1;u>=0;--u){var c=a.charCodeAt(u);if(c!==47)o===-1&&(s=!1,o=u+1),c===46?n===-1?n=u:A!==1&&(A=1):n!==-1&&(A=-1);else if(!s){i=u+1;break}}return n===-1||o===-1||A===0||A===1&&n===o-1&&n===i+1?"":a.slice(n,o)},format:function(a){if(a===null||typeof a!="object")throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof a);return function(n,i){var o=i.dir||i.root,s=i.base||(i.name||"")+(i.ext||"");return o?o===i.root?o+s:o+n+s:s}("/",a)},parse:function(a){r(a);var n={root:"",dir:"",base:"",ext:"",name:""};if(a.length===0)return n;var i,o=a.charCodeAt(0),s=o===47;s?(n.root="/",i=1):i=0;for(var A=-1,u=0,c=-1,d=!0,l=a.length-1,h=0;l>=i;--l)if((o=a.charCodeAt(l))!==47)c===-1&&(d=!1,c=l+1),o===46?A===-1?A=l:h!==1&&(h=1):A!==-1&&(h=-1);else if(!d){u=l+1;break}return A===-1||c===-1||h===0||h===1&&A===c-1&&A===u+1?c!==-1&&(n.base=n.name=u===0&&s?a.slice(1,c):a.slice(u,c)):(u===0&&s?(n.name=a.slice(1,A),n.base=a.slice(1,c)):(n.name=a.slice(u,A),n.base=a.slice(u,c)),n.ext=a.slice(A,c)),u>0?n.dir=a.slice(0,u-1):s&&(n.dir="/"),n},sep:"/",delimiter:":",win32:null,posix:null};return t.posix=t,yn=t}();function oa(){return oa=Object.assign?Object.assign.bind():function(r){for(var e=1;e<arguments.length;e++){var t=arguments[e];for(var a in t)({}).hasOwnProperty.call(t,a)&&(r[a]=t[a])}return r},oa.apply(null,arguments)}var xn={relTol:1e-12,absTol:1e-15,matrix:"Matrix",number:"number",numberFallback:"number",precision:64,predictable:!1,randomSeed:null};function zo(r,e){if(sa(r,e))return r[e];throw typeof r[e]=="function"&&function(t,a){return t==null||typeof t[a]!="function"||ca(t,a)&&Object.getPrototypeOf&&a in Object.getPrototypeOf(t)?!1:ca(qo,a)?!0:!(a in Object.prototype||a in Function.prototype)}(r,e)?new Error('Cannot access method "'+e+'" as a property'):new Error('No access to property "'+e+'"')}function sa(r,e){return!(!function(t){return typeof t=="object"&&t&&t.constructor===Object}(r)&&!Array.isArray(r))&&(!!ca(Po,e)||!(e in Object.prototype)&&!(e in Function.prototype))}var Po={length:!0,name:!0},qo={toString:!0,valueOf:!0,toLocaleString:!0};class Jo{constructor(e){this.wrappedObject=e,this[Symbol.iterator]=this.entries}keys(){return Object.keys(this.wrappedObject).filter(e=>this.has(e)).values()}get(e){return zo(this.wrappedObject,e)}set(e,t){return function(a,n,i){if(sa(a,n))return a[n]=i,i;throw new Error('No access to property "'+n+'"')}(this.wrappedObject,e,t),this}has(e){return sa(this.wrappedObject,e)&&e in this.wrappedObject}entries(){return function(e,t){return{next:()=>{var a=e.next();return a.done?a:{value:t(a.value),done:!1}}}}(this.keys(),e=>[e,this.get(e)])}forEach(e){for(var t of this.keys())e(this.get(t),t,this)}delete(e){sa(this.wrappedObject,e)&&delete this.wrappedObject[e]}clear(){for(var e of this.keys())this.delete(e)}get size(){return Object.keys(this.wrappedObject).length}}function le(r){return typeof r=="number"}function xe(r){return!(!r||typeof r!="object"||typeof r.constructor!="function")&&(r.isBigNumber===!0&&typeof r.constructor.prototype=="object"&&r.constructor.prototype.isBigNumber===!0||typeof r.constructor.isDecimal=="function"&&r.constructor.isDecimal(r)===!0)}function Ko(r){return typeof r=="bigint"}function Fn(r){return r&&typeof r=="object"&&Object.getPrototypeOf(r).isComplex===!0||!1}function vn(r){return r&&typeof r=="object"&&Object.getPrototypeOf(r).isFraction===!0||!1}function Qn(r){return r&&r.constructor.prototype.isUnit===!0||!1}function rt(r){return typeof r=="string"}var Qe=Array.isArray;function Be(r){return r&&r.constructor.prototype.isMatrix===!0||!1}function Aa(r){return Array.isArray(r)||Be(r)}function Vo(r){return r&&r.isDenseMatrix&&r.constructor.prototype.isMatrix===!0||!1}function Wo(r){return r&&r.isSparseMatrix&&r.constructor.prototype.isMatrix===!0||!1}function Yo(r){return r&&r.constructor.prototype.isRange===!0||!1}function tr(r){return r&&r.constructor.prototype.isIndex===!0||!1}function Xo(r){return typeof r=="boolean"}function Zo(r){return r&&r.constructor.prototype.isResultSet===!0||!1}function $o(r){return r&&r.constructor.prototype.isHelp===!0||!1}function es(r){return typeof r=="function"}function ts(r){return r instanceof Date}function as(r){return r instanceof RegExp}function ar(r){return!(!r||typeof r!="object"||r.constructor!==Object||Fn(r)||vn(r))}function rs(r){return!!r&&(r instanceof Map||r instanceof Jo||typeof r.set=="function"&&typeof r.get=="function"&&typeof r.keys=="function"&&typeof r.has=="function")}function ns(r){return r===null}function is(r){return r===void 0}function os(r){return r&&r.isAccessorNode===!0&&r.constructor.prototype.isNode===!0||!1}function ss(r){return r&&r.isArrayNode===!0&&r.constructor.prototype.isNode===!0||!1}function As(r){return r&&r.isAssignmentNode===!0&&r.constructor.prototype.isNode===!0||!1}function cs(r){return r&&r.isBlockNode===!0&&r.constructor.prototype.isNode===!0||!1}function us(r){return r&&r.isConditionalNode===!0&&r.constructor.prototype.isNode===!0||!1}function ds(r){return r&&r.isConstantNode===!0&&r.constructor.prototype.isNode===!0||!1}function hs(r){return r&&r.isFunctionAssignmentNode===!0&&r.constructor.prototype.isNode===!0||!1}function bs(r){return r&&r.isFunctionNode===!0&&r.constructor.prototype.isNode===!0||!1}function ls(r){return r&&r.isIndexNode===!0&&r.constructor.prototype.isNode===!0||!1}function gs(r){return r&&r.isNode===!0&&r.constructor.prototype.isNode===!0||!1}function fs(r){return r&&r.isObjectNode===!0&&r.constructor.prototype.isNode===!0||!1}function ps(r){return r&&r.isOperatorNode===!0&&r.constructor.prototype.isNode===!0||!1}function ms(r){return r&&r.isParenthesisNode===!0&&r.constructor.prototype.isNode===!0||!1}function Es(r){return r&&r.isRangeNode===!0&&r.constructor.prototype.isNode===!0||!1}function Cs(r){return r&&r.isRelationalNode===!0&&r.constructor.prototype.isNode===!0||!1}function Is(r){return r&&r.isSymbolNode===!0&&r.constructor.prototype.isNode===!0||!1}function Bs(r){return r&&r.constructor.prototype.isChain===!0||!1}function pt(r){var e=typeof r;return e==="object"?r===null?"null":xe(r)?"BigNumber":r.constructor&&r.constructor.name?r.constructor.name:"Object":e}function De(r){var e=typeof r;if(e==="number"||e==="bigint"||e==="string"||e==="boolean"||r==null)return r;if(typeof r.clone=="function")return r.clone();if(Array.isArray(r))return r.map(function(t){return De(t)});if(r instanceof Date)return new Date(r.valueOf());if(xe(r))return r;if(ar(r))return function(t,a){var n={};for(var i in t)ca(t,i)&&(n[i]=a(t[i]));return n}(r,De);if(e==="function")return r;throw new TypeError("Cannot clone: unknown type of value (value: ".concat(r,")"))}function Nt(r,e){var t,a,n;if(Array.isArray(r)){if(!Array.isArray(e)||r.length!==e.length)return!1;for(a=0,n=r.length;a<n;a++)if(!Nt(r[a],e[a]))return!1;return!0}if(typeof r=="function")return r===e;if(r instanceof Object){if(Array.isArray(e)||!(e instanceof Object))return!1;for(t in r)if(!(t in e)||!Nt(r[t],e[t]))return!1;for(t in e)if(!(t in r))return!1;return!0}return r===e}function ca(r,e){return r&&Object.hasOwnProperty.call(r,e)}var xt=function(r){if(r)throw new Error(`The global config is readonly.
|
|
9
9
|
Please create a mathjs instance if you want to change the default configuration.
|
|
10
10
|
Example:
|
|
11
11
|
|
|
12
12
|
import { create, all } from 'mathjs';
|
|
13
13
|
const mathjs = create(all);
|
|
14
14
|
mathjs.config({ number: 'BigNumber' });
|
|
15
|
-
`);return Object.freeze(xn)};function kn(){return!0}function Ve(){return!1}function Ut(){}oa(xt,xn,{MATRIX_OPTIONS:["Matrix","Array"],NUMBER_OPTIONS:["number","BigNumber","Fraction"]});const jn="Argument is not a typed-function.",ua=function r(){function e(B){return typeof B=="object"&&B!==null&&B.constructor===Object}const t=[{name:"number",test:function(B){return typeof B=="number"}},{name:"string",test:function(B){return typeof B=="string"}},{name:"boolean",test:function(B){return typeof B=="boolean"}},{name:"Function",test:function(B){return typeof B=="function"}},{name:"Array",test:Array.isArray},{name:"Date",test:function(B){return B instanceof Date}},{name:"RegExp",test:function(B){return B instanceof RegExp}},{name:"Object",test:e},{name:"null",test:function(B){return B===null}},{name:"undefined",test:function(B){return B===void 0}}],a={name:"any",test:kn,isAny:!0};let n,i,o=0,s={createCount:0};function A(B){const w=n.get(B);if(w)return w;let v='Unknown type "'+B+'"';const j=B.toLowerCase();let T;for(T of i)if(T.toLowerCase()===j){v+='. Did you mean "'+T+'" ?';break}throw new TypeError(v)}function u(B){let w=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"any";const v=w?A(w).index:i.length,j=[];for(let U=0;U<B.length;++U){if(!B[U]||typeof B[U].name!="string"||typeof B[U].test!="function")throw new TypeError("Object with properties {name: string, test: function} expected");const _=B[U].name;if(n.has(_))throw new TypeError('Duplicate type name "'+_+'"');j.push(_),n.set(_,{name:_,test:B[U].test,isAny:B[U].isAny,index:v+U,conversionsTo:[]})}const T=i.slice(v);i=i.slice(0,v).concat(j).concat(T);for(let U=v+j.length;U<i.length;++U)n.get(i[U]).index=U}function c(){n=new Map,i=[],o=0,u([a],!1)}function d(B){const w=i.filter(v=>{const j=n.get(v);return!j.isAny&&j.test(B)});return w.length?w:["any"]}function l(B){return B&&typeof B=="function"&&"_typedFunctionData"in B}function h(B,w,v){if(!l(B))throw new TypeError(jn);const j=v&&v.exact,T=p(Array.isArray(w)?w.join(","):w),U=b(T);if(!j||U in B.signatures){const L=B._typedFunctionData.signatureMap.get(U);if(L)return L}const _=T.length;let N,z;if(j){let L;for(L in N=[],B.signatures)N.push(B._typedFunctionData.signatureMap.get(L))}else N=B._typedFunctionData.signatures;for(let L=0;L<_;++L){const he=T[L],ie=[];let we;for(we of N){const Ge=y(we.params,L);if(Ge&&(!he.restParam||Ge.restParam)){if(!Ge.hasAny){const st=m(Ge);if(he.types.some(et=>!st.has(et.name)))continue}ie.push(we)}}if(N=ie,N.length===0)break}for(z of N)if(z.params.length<=_)return z;throw new TypeError("Signature not found (signature: "+(B.name||"unnamed")+"("+b(T,", ")+"))")}function b(B){let w=arguments.length>1&&arguments[1]!==void 0?arguments[1]:",";return B.map(v=>v.name).join(w)}function g(B){const w=B.indexOf("...")===0,v=(w?B.length>3?B.slice(3):"any":B).split("|").map(U=>A(U.trim()));let j=!1,T=w?"...":"";return{types:v.map(function(U){return j=U.isAny||j,T+=U.name+"|",{name:U.name,typeIndex:U.index,test:U.test,isAny:U.isAny,conversion:null,conversionIndex:-1}}),name:T.slice(0,-1),hasAny:j,hasConversion:!1,restParam:w}}function f(B){const w=B.types.map(_=>_.name),v=function(_){if(_.length===0)return[];const N=_.map(A);_.length>1&&N.sort((he,ie)=>he.index-ie.index);let z=N[0].conversionsTo;if(_.length===1)return z;z=z.concat([]);const L=new Set(_);for(let he=1;he<N.length;++he){let ie;for(ie of N[he].conversionsTo)L.has(ie.from)||(z.push(ie),L.add(ie.from))}return z}(w);let j=B.hasAny,T=B.name;const U=v.map(function(_){const N=A(_.from);return j=N.isAny||j,T+="|"+_.from,{name:_.from,typeIndex:N.index,test:N.test,isAny:N.isAny,conversion:_,conversionIndex:_.index}});return{types:B.types.concat(U),name:T,hasAny:j,hasConversion:U.length>0,restParam:B.restParam}}function m(B){return B.typeSet||(B.typeSet=new Set,B.types.forEach(w=>B.typeSet.add(w.name))),B.typeSet}function p(B){const w=[];if(typeof B!="string")throw new TypeError("Signatures must be strings");const v=B.trim();if(v==="")return w;const j=v.split(",");for(let T=0;T<j.length;++T){const U=g(j[T].trim());if(U.restParam&&T!==j.length-1)throw new SyntaxError('Unexpected rest parameter "'+j[T]+'": only allowed for the last parameter');if(U.types.length===0)return null;w.push(U)}return w}function C(B){const w=Y(B);return!!w&&w.restParam}function I(B){if(B&&B.types.length!==0){if(B.types.length===1)return A(B.types[0].name).test;if(B.types.length===2){const w=A(B.types[0].name).test,v=A(B.types[1].name).test;return function(j){return w(j)||v(j)}}{const w=B.types.map(function(v){return A(v.name).test});return function(v){for(let j=0;j<w.length;j++)if(w[j](v))return!0;return!1}}}return kn}function x(B){let w,v,j;if(C(B)){w=pe(B).map(I);const T=w.length,U=I(Y(B)),_=function(N){for(let z=T;z<N.length;z++)if(!U(N[z]))return!1;return!0};return function(N){for(let z=0;z<w.length;z++)if(!w[z](N[z]))return!1;return _(N)&&N.length>=T+1}}return B.length===0?function(T){return T.length===0}:B.length===1?(v=I(B[0]),function(T){return v(T[0])&&T.length===1}):B.length===2?(v=I(B[0]),j=I(B[1]),function(T){return v(T[0])&&j(T[1])&&T.length===2}):(w=B.map(I),function(T){for(let U=0;U<w.length;U++)if(!w[U](T[U]))return!1;return T.length===w.length})}function y(B,w){return w<B.length?B[w]:C(B)?Y(B):null}function F(B,w){const v=y(B,w);return v?m(v):new Set}function D(B){return B.conversion===null||B.conversion===void 0}function Q(B,w){const v=new Set;return B.forEach(j=>{const T=F(j.params,w);let U;for(U of T)v.add(U)}),v.has("any")?["any"]:Array.from(v)}function M(B,w,v){let j,T;const U=B||"unnamed";let _,N=v;for(_=0;_<w.length;_++){const ie=[];if(N.forEach(we=>{const Ge=I(y(we.params,_));(_<we.params.length||C(we.params))&&Ge(w[_])&&ie.push(we)}),ie.length===0){if(T=Q(N,_),T.length>0){const we=d(w[_]);return j=new TypeError("Unexpected type of argument in function "+U+" (expected: "+T.join(" or ")+", actual: "+we.join(" | ")+", index: "+_+")"),j.data={category:"wrongType",fn:U,index:_,actual:we,expected:T},j}}else N=ie}const z=N.map(function(ie){return C(ie.params)?1/0:ie.params.length});if(w.length<Math.min.apply(null,z))return T=Q(N,_),j=new TypeError("Too few arguments in function "+U+" (expected: "+T.join(" or ")+", index: "+w.length+")"),j.data={category:"tooFewArgs",fn:U,index:w.length,expected:T},j;const L=Math.max.apply(null,z);if(w.length>L)return j=new TypeError("Too many arguments in function "+U+" (expected: "+L+", actual: "+w.length+")"),j.data={category:"tooManyArgs",fn:U,index:w.length,expectedLength:L},j;const he=[];for(let ie=0;ie<w.length;++ie)he.push(d(w[ie]).join("|"));return j=new TypeError('Arguments of type "'+he.join(", ")+'" do not match any of the defined signatures of function '+U+"."),j.data={category:"mismatch",actual:he},j}function S(B){let w=i.length+1;for(let v=0;v<B.types.length;v++)D(B.types[v])&&(w=Math.min(w,B.types[v].typeIndex));return w}function O(B){let w=o+1;for(let v=0;v<B.types.length;v++)D(B.types[v])||(w=Math.min(w,B.types[v].conversionIndex));return w}function P(B,w){if(B.hasAny){if(!w.hasAny)return 1}else if(w.hasAny)return-1;if(B.restParam){if(!w.restParam)return 1}else if(w.restParam)return-1;if(B.hasConversion){if(!w.hasConversion)return 1}else if(w.hasConversion)return-1;const v=S(B)-S(w);if(v<0)return-1;if(v>0)return 1;const j=O(B)-O(w);return j<0?-1:j>0?1:0}function K(B,w){const v=B.params,j=w.params,T=Y(v),U=Y(j),_=C(v),N=C(j);if(_&&T.hasAny){if(!N||!U.hasAny)return 1}else if(N&&U.hasAny)return-1;let z,L=0,he=0;for(z of v)z.hasAny&&++L,z.hasConversion&&++he;let ie=0,we=0;for(z of j)z.hasAny&&++ie,z.hasConversion&&++we;if(L!==ie)return L-ie;if(_&&T.hasConversion){if(!N||!U.hasConversion)return 1}else if(N&&U.hasConversion)return-1;if(he!==we)return he-we;if(_){if(!N)return 1}else if(N)return-1;const Ge=(v.length-j.length)*(_?-1:1);if(Ge!==0)return Ge;const st=[];let et,lt=0;for(let Kt=0;Kt<v.length;++Kt){const Ra=P(v[Kt],j[Kt]);st.push(Ra),lt+=Ra}if(lt!==0)return lt;for(et of st)if(et!==0)return et;return 0}function J(B,w){let v=w;if(B.some(T=>T.hasConversion)){const T=C(B),U=B.map(q);v=function(){const _=[],N=T?arguments.length-1:arguments.length;for(let z=0;z<N;z++)_[z]=U[z](arguments[z]);return T&&(_[N]=arguments[N].map(U[N])),w.apply(this,_)}}let j=v;if(C(B)){const T=B.length-1;j=function(){return v.apply(this,ee(arguments,0,T).concat([ee(arguments,T)]))}}return j}function q(B){let w,v,j,T;const U=[],_=[];switch(B.types.forEach(function(N){N.conversion&&(U.push(A(N.conversion.from).test),_.push(N.conversion.convert))}),_.length){case 0:return function(N){return N};case 1:return w=U[0],j=_[0],function(N){return w(N)?j(N):N};case 2:return w=U[0],v=U[1],j=_[0],T=_[1],function(N){return w(N)?j(N):v(N)?T(N):N};default:return function(N){for(let z=0;z<_.length;z++)if(U[z](N))return _[z](N);return N}}}function se(B){return function w(v,j,T){if(j<v.length){const N=v[j];let z=[];if(N.restParam){const L=N.types.filter(D);L.length<N.types.length&&z.push({types:L,name:"..."+L.map(he=>he.name).join("|"),hasAny:L.some(he=>he.isAny),hasConversion:!1,restParam:!0}),z.push(N)}else z=N.types.map(function(L){return{types:[L],name:L.name,hasAny:L.isAny,hasConversion:L.conversion,restParam:!1}});return U=z,_=function(L){return w(v,j+1,T.concat([L]))},Array.prototype.concat.apply([],U.map(_))}return[T];var U,_}(B,0,[])}function ue(B,w){const v=Math.max(B.length,w.length);for(let N=0;N<v;N++){const z=F(B,N),L=F(w,N);let he,ie=!1;for(he of L)if(z.has(he)){ie=!0;break}if(!ie)return!1}const j=B.length,T=w.length,U=C(B),_=C(w);return U?_?j===T:T>=j:_?j>=T:j===T}function re(B,w,v){const j=[];let T;for(T of B){let U=v[T];if(typeof U!="number")throw new TypeError('No definition for referenced signature "'+T+'"');if(U=w[U],typeof U!="function")return!1;j.push(U)}return j}function be(B,w,v){const j=function(_){return _.map(N=>Ne(N)?Ee(N.referToSelf.callback):ye(N)?Ae(N.referTo.references,N.referTo.callback):N)}(B),T=new Array(j.length).fill(!1);let U=!0;for(;U;){U=!1;let _=!0;for(let N=0;N<j.length;++N){if(T[N])continue;const z=j[N];if(Ne(z))j[N]=z.referToSelf.callback(v),j[N].referToSelf=z.referToSelf,T[N]=!0,_=!1;else if(ye(z)){const L=re(z.referTo.references,j,w);L?(j[N]=z.referTo.callback.apply(this,L),j[N].referTo=z.referTo,T[N]=!0,_=!1):U=!0}}if(_&&U)throw new SyntaxError("Circular reference detected in resolving typed.referTo")}return j}function de(B,w){if(s.createCount++,Object.keys(w).length===0)throw new SyntaxError("No signatures provided");s.warnAgainstDeprecatedThis&&function(ae){const tt=/\bthis(\(|\.signatures\b)/;Object.keys(ae).forEach(Rr=>{const Vt=ae[Rr];if(tt.test(Vt.toString()))throw new SyntaxError("Using `this` to self-reference a function is deprecated since typed-function@3. Use typed.referTo and typed.referToSelf instead.")})}(w);const v=[],j=[],T={},U=[];let _;for(_ in w){if(!Object.prototype.hasOwnProperty.call(w,_))continue;const ae=p(_);if(!ae)continue;v.forEach(function(ra){if(ue(ra,ae))throw new TypeError('Conflicting signatures "'+b(ra)+'" and "'+b(ae)+'".')}),v.push(ae);const tt=j.length;j.push(w[_]);const Rr=ae.map(f);let Vt;for(Vt of se(Rr)){const ra=b(Vt);U.push({params:Vt,name:ra,fn:tt}),Vt.every(Jc=>!Jc.hasConversion)&&(T[ra]=tt)}}U.sort(K);const N=be(j,T,aa);let z;for(z in T)Object.prototype.hasOwnProperty.call(T,z)&&(T[z]=N[T[z]]);const L=[],he=new Map;for(z of U)he.has(z.name)||(z.fn=N[z.fn],L.push(z),he.set(z.name,z));const ie=L[0]&&L[0].params.length<=2&&!C(L[0].params),we=L[1]&&L[1].params.length<=2&&!C(L[1].params),Ge=L[2]&&L[2].params.length<=2&&!C(L[2].params),st=L[3]&&L[3].params.length<=2&&!C(L[3].params),et=L[4]&&L[4].params.length<=2&&!C(L[4].params),lt=L[5]&&L[5].params.length<=2&&!C(L[5].params),Kt=ie&&we&&Ge&&st&&et&<for(let ae=0;ae<L.length;++ae)L[ae].test=x(L[ae].params);const Ra=ie?I(L[0].params[0]):Ve,mc=we?I(L[1].params[0]):Ve,Ec=Ge?I(L[2].params[0]):Ve,Cc=st?I(L[3].params[0]):Ve,Ic=et?I(L[4].params[0]):Ve,Bc=lt?I(L[5].params[0]):Ve,Dc=ie?I(L[0].params[1]):Ve,yc=we?I(L[1].params[1]):Ve,wc=Ge?I(L[2].params[1]):Ve,xc=st?I(L[3].params[1]):Ve,Fc=et?I(L[4].params[1]):Ve,Qc=lt?I(L[5].params[1]):Ve;for(let ae=0;ae<L.length;++ae)L[ae].implementation=J(L[ae].params,L[ae].fn);const vc=ie?L[0].implementation:Ut,kc=we?L[1].implementation:Ut,jc=Ge?L[2].implementation:Ut,Mc=st?L[3].implementation:Ut,Sc=et?L[4].implementation:Ut,Rc=lt?L[5].implementation:Ut,Tc=ie?L[0].params.length:-1,Nc=we?L[1].params.length:-1,Uc=Ge?L[2].params.length:-1,Lc=st?L[3].params.length:-1,Gc=et?L[4].params.length:-1,_c=lt?L[5].params.length:-1,Hc=Kt?6:0,Oc=L.length,zc=L.map(ae=>ae.test),Pc=L.map(ae=>ae.implementation),qc=function(){for(let ae=Hc;ae<Oc;ae++)if(zc[ae](arguments))return Pc[ae].apply(this,arguments);return s.onMismatch(B,arguments,L)};function aa(ae,tt){return arguments.length===Tc&&Ra(ae)&&Dc(tt)?vc.apply(this,arguments):arguments.length===Nc&&mc(ae)&&yc(tt)?kc.apply(this,arguments):arguments.length===Uc&&Ec(ae)&&wc(tt)?jc.apply(this,arguments):arguments.length===Lc&&Cc(ae)&&xc(tt)?Mc.apply(this,arguments):arguments.length===Gc&&Ic(ae)&&Fc(tt)?Sc.apply(this,arguments):arguments.length===_c&&Bc(ae)&&Qc(tt)?Rc.apply(this,arguments):qc.apply(this,arguments)}try{Object.defineProperty(aa,"name",{value:B})}catch{}return aa.signatures=T,aa._typedFunctionData={signatures:L,signatureMap:he},aa}function $(B,w,v){throw M(B,w,v)}function pe(B){return ee(B,0,B.length-1)}function Y(B){return B[B.length-1]}function ee(B,w,v){return Array.prototype.slice.call(B,w,v)}function Ae(B,w){return{referTo:{references:B,callback:w}}}function Ee(B){if(typeof B!="function")throw new TypeError("Callback function expected as first argument");return{referToSelf:{callback:B}}}function ye(B){return B&&typeof B.referTo=="object"&&Array.isArray(B.referTo.references)&&typeof B.referTo.callback=="function"}function Ne(B){return B&&typeof B.referToSelf=="object"&&typeof B.referToSelf.callback=="function"}function qe(B,w){if(!B)return w;if(w&&w!==B){const v=new Error("Function names do not match (expected: "+B+", actual: "+w+")");throw v.data={actual:w,expected:B},v}return B}function Je(B){let w;for(const v in B)Object.prototype.hasOwnProperty.call(B,v)&&(l(B[v])||typeof B[v].signature=="string")&&(w=qe(w,B[v].name));return w}function ta(B,w){let v;for(v in w)if(Object.prototype.hasOwnProperty.call(w,v)){if(v in B&&w[v]!==B[v]){const j=new Error('Signature "'+v+'" is defined twice');throw j.data={signature:v,sourceFunction:w[v],destFunction:B[v]},j}B[v]=w[v]}}c(),u(t);const pc=s;function Yi(B){if(!B||typeof B.from!="string"||typeof B.to!="string"||typeof B.convert!="function")throw new TypeError("Object with properties {from: string, to: string, convert: function} expected");if(B.to===B.from)throw new SyntaxError('Illegal to define conversion from "'+B.from+'" to itself.')}return s=function(B){const w=typeof B=="string";let v=w?B:"";const j={};for(let T=w?1:0;T<arguments.length;++T){const U=arguments[T];let _,N={};if(typeof U=="function"?(_=U.name,typeof U.signature=="string"?N[U.signature]=U:l(U)&&(N=U.signatures)):e(U)&&(N=U,w||(_=Je(U))),Object.keys(N).length===0){const z=new TypeError("Argument to 'typed' at index "+T+" is not a (typed) function, nor an object with signatures as keys and functions as values.");throw z.data={index:T,argument:U},z}w||(v=qe(v,_)),ta(j,N)}return de(v||"",j)},s.create=r,s.createCount=pc.createCount,s.onMismatch=$,s.throwMismatchError=$,s.createError=M,s.clear=c,s.clearConversions=function(){let B;for(B of i)n.get(B).conversionsTo=[];o=0},s.addTypes=u,s._findType=A,s.referTo=function(){const B=pe(arguments).map(v=>b(p(v))),w=Y(arguments);if(typeof w!="function")throw new TypeError("Callback function expected as last argument");return Ae(B,w)},s.referToSelf=Ee,s.convert=function(B,w){const v=A(w);if(v.test(B))return B;const j=v.conversionsTo;if(j.length===0)throw new Error("There are no conversions to "+w+" defined.");for(let T=0;T<j.length;T++)if(A(j[T].from).test(B))return j[T].convert(B);throw new Error("Cannot convert "+B+" to "+w)},s.findSignature=h,s.find=function(B,w,v){return h(B,w,v).implementation},s.isTypedFunction=l,s.warnAgainstDeprecatedThis=!0,s.addType=function(B,w){let v="any";w!==!1&&n.has("Object")&&(v="Object"),s.addTypes([B],v)},s.addConversion=function(B){let w=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{override:!1};Yi(B);const v=A(B.to),j=v.conversionsTo.find(T=>T.from===B.from);if(j){if(!w||!w.override)throw new Error('There is already a conversion from "'+B.from+'" to "'+v.name+'"');s.removeConversion({from:j.from,to:B.to,convert:j.convert})}v.conversionsTo.push({from:B.from,convert:B.convert,index:o++})},s.addConversions=function(B,w){B.forEach(v=>s.addConversion(v,w))},s.removeConversion=function(B){Yi(B);const w=A(B.to),v=function(T,U){for(let _=0;_<T.length;_++)if(U(T[_]))return T[_]}(w.conversionsTo,T=>T.from===B.from);if(!v)throw new Error("Attempt to remove nonexistent conversion from "+B.from+" to "+B.to);if(v.convert!==B.convert)throw new Error("Conversion to remove does not match existing conversion");const j=w.conversionsTo.indexOf(v);w.conversionsTo.splice(j,1)},s.resolve=function(B,w){if(!l(B))throw new TypeError(jn);const v=B._typedFunctionData.signatures;for(let j=0;j<v.length;++j)if(v[j].test(w))return v[j];return null},s}();function ne(r,e,t,a){function n(i){var o=function(s,A){for(var u={},c=0;c<A.length;c++){var d=A[c],l=s[d];l!==void 0&&(u[d]=l)}return u}(i,e.map(Ds));return function(s,A,u){var c=A.filter(l=>!function(h){return h&&h[0]==="?"}(l)).every(l=>u[l]!==void 0);if(!c){var d=A.filter(l=>u[l]===void 0);throw new Error('Cannot create function "'.concat(s,'", ')+"some dependencies are missing: ".concat(d.map(l=>'"'.concat(l,'"')).join(", "),"."))}}(r,e,i),t(o)}return n.isFactory=!0,n.fn=r,n.dependencies=e.slice().sort(),a&&(n.meta=a),n}function Ds(r){return r&&r[0]==="?"?r.slice(1):r}function me(r){return typeof r=="boolean"||!!isFinite(r)&&r===Math.round(r)}function ar(r,e,t){var a={2:"0b",8:"0o",16:"0x"}[e],n="";if(t){if(t<1)throw new Error("size must be in greater than 0");if(!me(t))throw new Error("size must be an integer");if(r>2**(t-1)-1||r<-(2**(t-1)))throw new Error("Value must be in range [-2^".concat(t-1,", 2^").concat(t-1,"-1]"));if(!me(r))throw new Error("Value must be an integer");r<0&&(r+=2**t),n="i".concat(t)}var i="";return r<0&&(r=-r,i="-"),"".concat(i).concat(a).concat(r.toString(e)).concat(n)}function rr(r,e){if(typeof e=="function")return e(r);if(r===1/0)return"Infinity";if(r===-1/0)return"-Infinity";if(isNaN(r))return"NaN";var{notation:t,precision:a,wordSize:n}=Mn(e);switch(t){case"fixed":return function(i,o){if(isNaN(i)||!isFinite(i))return String(i);var s=da(i),A=typeof o=="number"?ha(s,s.exponent+1+o):s,u=A.coefficients,c=A.exponent+1,d=c+(o||0);return u.length<d&&(u=u.concat(Lt(d-u.length))),c<0&&(u=Lt(1-c).concat(u),c=1),c<u.length&&u.splice(c,0,c===0?"0.":"."),A.sign+u.join("")}(r,a);case"exponential":return Sn(r,a);case"engineering":return function(i,o){if(isNaN(i)||!isFinite(i))return String(i);var s=da(i),A=ha(s,o),u=A.exponent,c=A.coefficients,d=u%3==0?u:u<0?u-3-u%3:u-u%3;if(le(o))for(;o>c.length||u-d+1>c.length;)c.push(0);else for(var l=Math.abs(u-d)-(c.length-1),h=0;h<l;h++)c.push(0);for(var b=Math.abs(u-d),g=1;b>0;)g++,b--;var f=c.slice(g).join(""),m=le(o)&&f.length||f.match(/[1-9]/)?"."+f:"",p=c.slice(0,g).join("")+m+"e"+(u>=0?"+":"")+d.toString();return A.sign+p}(r,a);case"bin":return ar(r,2,n);case"oct":return ar(r,8,n);case"hex":return ar(r,16,n);case"auto":return function(i,o,s){if(isNaN(i)||!isFinite(i))return String(i);var A=Tn(s==null?void 0:s.lowerExp,-3),u=Tn(s==null?void 0:s.upperExp,5),c=da(i),d=o?ha(c,o):c;if(d.exponent<A||d.exponent>=u)return Sn(i,o);var l=d.coefficients,h=d.exponent;l.length<o&&(l=l.concat(Lt(o-l.length))),l=l.concat(Lt(h-l.length+1+(l.length<o?o-l.length:0)));var b=h>0?h:0;return b<(l=Lt(-h).concat(l)).length-1&&l.splice(b+1,0,"."),d.sign+l.join("")}(r,a,e).replace(/((\.\d*?)(0+))($|e)/,function(){var i=arguments[2],o=arguments[4];return i!=="."?i+o:o});default:throw new Error('Unknown notation "'+t+'". Choose "auto", "exponential", "fixed", "bin", "oct", or "hex.')}}function Mn(r){var e,t,a="auto";if(r!==void 0)if(le(r))e=r;else if(xe(r))e=r.toNumber();else{if(!tr(r))throw new Error("Unsupported type of options, number, BigNumber, or object expected");r.precision!==void 0&&(e=Rn(r.precision,()=>{throw new Error('Option "precision" must be a number or BigNumber')})),r.wordSize!==void 0&&(t=Rn(r.wordSize,()=>{throw new Error('Option "wordSize" must be a number or BigNumber')})),r.notation&&(a=r.notation)}return{notation:a,precision:e,wordSize:t}}function da(r){var e=String(r).toLowerCase().match(/^(-?)(\d+\.?\d*)(e([+-]?\d+))?$/);if(!e)throw new SyntaxError("Invalid number "+r);var t=e[1],a=e[2],n=parseFloat(e[4]||"0"),i=a.indexOf(".");n+=i!==-1?i-1:a.length-1;var o=a.replace(".","").replace(/^0*/,function(s){return n-=s.length,""}).replace(/0*$/,"").split("").map(function(s){return parseInt(s)});return o.length===0&&(o.push(0),n++),{sign:t,coefficients:o,exponent:n}}function Sn(r,e){if(isNaN(r)||!isFinite(r))return String(r);var t=da(r),a=e?ha(t,e):t,n=a.coefficients,i=a.exponent;n.length<e&&(n=n.concat(Lt(e-n.length)));var o=n.shift();return a.sign+o+(n.length>0?"."+n.join(""):"")+"e"+(i>=0?"+":"")+i}function ha(r,e){for(var t={sign:r.sign,coefficients:r.coefficients,exponent:r.exponent},a=t.coefficients;e<=0;)a.unshift(0),t.exponent++,e++;if(a.length>e&&a.splice(e,a.length-e)[0]>=5){var n=e-1;for(a[n]++;a[n]===10;)a.pop(),n===0&&(a.unshift(0),t.exponent++,n++),a[--n]++}return t}function Lt(r){for(var e=[],t=0;t<r;t++)e.push(0);return e}function ba(r,e){var t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1e-8,a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0;if(t<=0)throw new Error("Relative tolerance must be greater than 0");if(a<0)throw new Error("Absolute tolerance must be at least 0");return!isNaN(r)&&!isNaN(e)&&(isFinite(r)&&isFinite(e)?r===e||Math.abs(r-e)<=Math.max(t*Math.max(Math.abs(r),Math.abs(e)),a):r===e)}function Rn(r,e){return le(r)?r:xe(r)?r.toNumber():void e()}function Tn(r,e){return le(r)?r:xe(r)?r.toNumber():e}var Nn=function(){return Nn=ua.create,ua},ys=ne("typed",["?BigNumber","?Complex","?DenseMatrix","?Fraction"],function(r){var{BigNumber:e,Complex:t,DenseMatrix:a,Fraction:n}=r,i=Nn();return i.clear(),i.addTypes([{name:"number",test:le},{name:"Complex",test:Fn},{name:"BigNumber",test:xe},{name:"bigint",test:Ko},{name:"Fraction",test:Qn},{name:"Unit",test:vn},{name:"identifier",test:o=>rt&&/^(?:[A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C8A\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CD\uA7D0\uA7D1\uA7D3\uA7D5-\uA7DC\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF40\uDF42-\uDF49\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDDC0-\uDDF3\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD23\uDD4A-\uDD65\uDD6F-\uDD85\uDE80-\uDEA9\uDEB0\uDEB1\uDEC2-\uDEC4\uDF00-\uDF1C\uDF27\uDF30-\uDF45\uDF70-\uDF81\uDFB0-\uDFC4\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE3F\uDE40\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61\uDF80-\uDF89\uDF8B\uDF8E\uDF90-\uDFB5\uDFB7\uDFD1\uDFD3]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDEB8\uDF00-\uDF1A\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCDF\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8\uDFC0-\uDFE0]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDEE0-\uDEF2\uDF02\uDF04-\uDF10\uDF12-\uDF33\uDFB0]|\uD808[\uDC00-\uDF99]|\uD809[\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD80E\uD80F\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883\uD885-\uD887][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2F\uDC41-\uDC46\uDC60-\uDFFF]|\uD810[\uDC00-\uDFFA]|\uD811[\uDC00-\uDE46]|\uD818[\uDD00-\uDD1D]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE70-\uDEBE\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDD40-\uDD6C\uDE40-\uDE7F\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDCFF-\uDD08]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD32\uDD50-\uDD52\uDD55\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD837[\uDF00-\uDF1E\uDF25-\uDF2A]|\uD838[\uDC30-\uDC6D\uDD00-\uDD2C\uDD37-\uDD3D\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB]|\uD839[\uDCD0-\uDCEB\uDDD0-\uDDED\uDDF0\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43\uDD4B]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF39\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0\uDFF0-\uDFFF]|\uD87B[\uDC00-\uDE5D]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A\uDF50-\uDFFF]|\uD888[\uDC00-\uDFAF])(?:[0-9A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C8A\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CD\uA7D0\uA7D1\uA7D3\uA7D5-\uA7DC\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF40\uDF42-\uDF49\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDDC0-\uDDF3\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD23\uDD4A-\uDD65\uDD6F-\uDD85\uDE80-\uDEA9\uDEB0\uDEB1\uDEC2-\uDEC4\uDF00-\uDF1C\uDF27\uDF30-\uDF45\uDF70-\uDF81\uDFB0-\uDFC4\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE3F\uDE40\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61\uDF80-\uDF89\uDF8B\uDF8E\uDF90-\uDFB5\uDFB7\uDFD1\uDFD3]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDEB8\uDF00-\uDF1A\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCDF\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8\uDFC0-\uDFE0]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDEE0-\uDEF2\uDF02\uDF04-\uDF10\uDF12-\uDF33\uDFB0]|\uD808[\uDC00-\uDF99]|\uD809[\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD80E\uD80F\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883\uD885-\uD887][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2F\uDC41-\uDC46\uDC60-\uDFFF]|\uD810[\uDC00-\uDFFA]|\uD811[\uDC00-\uDE46]|\uD818[\uDD00-\uDD1D]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE70-\uDEBE\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDD40-\uDD6C\uDE40-\uDE7F\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDCFF-\uDD08]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD32\uDD50-\uDD52\uDD55\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD837[\uDF00-\uDF1E\uDF25-\uDF2A]|\uD838[\uDC30-\uDC6D\uDD00-\uDD2C\uDD37-\uDD3D\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB]|\uD839[\uDCD0-\uDCEB\uDDD0-\uDDED\uDDF0\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43\uDD4B]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF39\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0\uDFF0-\uDFFF]|\uD87B[\uDC00-\uDE5D]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A\uDF50-\uDFFF]|\uD888[\uDC00-\uDFAF])*$/.test(o)},{name:"string",test:rt},{name:"Chain",test:Bs},{name:"Array",test:ve},{name:"Matrix",test:Be},{name:"DenseMatrix",test:Vo},{name:"SparseMatrix",test:Wo},{name:"Range",test:Yo},{name:"Index",test:er},{name:"boolean",test:Xo},{name:"ResultSet",test:Zo},{name:"Help",test:$o},{name:"function",test:es},{name:"Date",test:ts},{name:"RegExp",test:as},{name:"null",test:ns},{name:"undefined",test:is},{name:"AccessorNode",test:os},{name:"ArrayNode",test:ss},{name:"AssignmentNode",test:As},{name:"BlockNode",test:cs},{name:"ConditionalNode",test:us},{name:"ConstantNode",test:ds},{name:"FunctionNode",test:bs},{name:"FunctionAssignmentNode",test:hs},{name:"IndexNode",test:ls},{name:"Node",test:gs},{name:"ObjectNode",test:fs},{name:"OperatorNode",test:ps},{name:"ParenthesisNode",test:ms},{name:"RangeNode",test:Es},{name:"RelationalNode",test:Cs},{name:"SymbolNode",test:Is},{name:"Map",test:rs},{name:"Object",test:tr}]),i.addConversions([{from:"number",to:"BigNumber",convert:function(o){if(e||la(o),o.toExponential().replace(/e.*$/,"").replace(/^0\.?0*|\./,"").length>15)throw new TypeError("Cannot implicitly convert a number with >15 significant digits to BigNumber (value: "+o+"). Use function bignumber(x) to convert to BigNumber.");return new e(o)}},{from:"number",to:"Complex",convert:function(o){return t||ga(o),new t(o,0)}},{from:"BigNumber",to:"Complex",convert:function(o){return t||ga(o),new t(o.toNumber(),0)}},{from:"bigint",to:"number",convert:function(o){if(o>Number.MAX_SAFE_INTEGER)throw new TypeError("Cannot implicitly convert bigint to number: value exceeds the max safe integer value (value: "+o+")");return Number(o)}},{from:"bigint",to:"BigNumber",convert:function(o){return e||la(o),new e(o.toString())}},{from:"bigint",to:"Fraction",convert:function(o){return n||fa(o),new n(o)}},{from:"Fraction",to:"BigNumber",convert:function(o){throw new TypeError("Cannot implicitly convert a Fraction to BigNumber or vice versa. Use function bignumber(x) to convert to BigNumber or fraction(x) to convert to Fraction.")}},{from:"Fraction",to:"Complex",convert:function(o){return t||ga(o),new t(o.valueOf(),0)}},{from:"number",to:"Fraction",convert:function(o){n||fa(o);var s=new n(o);if(s.valueOf()!==o)throw new TypeError("Cannot implicitly convert a number to a Fraction when there will be a loss of precision (value: "+o+"). Use function fraction(x) to convert to Fraction.");return s}},{from:"string",to:"number",convert:function(o){var s=Number(o);if(isNaN(s))throw new Error('Cannot convert "'+o+'" to a number');return s}},{from:"string",to:"BigNumber",convert:function(o){e||la(o);try{return new e(o)}catch{throw new Error('Cannot convert "'+o+'" to BigNumber')}}},{from:"string",to:"bigint",convert:function(o){try{return BigInt(o)}catch{throw new Error('Cannot convert "'+o+'" to BigInt')}}},{from:"string",to:"Fraction",convert:function(o){n||fa(o);try{return new n(o)}catch{throw new Error('Cannot convert "'+o+'" to Fraction')}}},{from:"string",to:"Complex",convert:function(o){t||ga(o);try{return new t(o)}catch{throw new Error('Cannot convert "'+o+'" to Complex')}}},{from:"boolean",to:"number",convert:function(o){return+o}},{from:"boolean",to:"BigNumber",convert:function(o){return e||la(o),new e(+o)}},{from:"boolean",to:"bigint",convert:function(o){return BigInt(+o)}},{from:"boolean",to:"Fraction",convert:function(o){return n||fa(o),new n(+o)}},{from:"boolean",to:"string",convert:function(o){return String(o)}},{from:"Array",to:"Matrix",convert:function(o){return a||function(){throw new Error("Cannot convert array into a Matrix: no class 'DenseMatrix' provided")}(),new a(o)}},{from:"Matrix",to:"Array",convert:function(o){return o.valueOf()}}]),i.onMismatch=(o,s,A)=>{var u=i.createError(o,s,A);if(["wrongType","mismatch"].includes(u.data.category)&&s.length===1&&Aa(s[0])&&A.some(d=>!d.params.includes(","))){var c=new TypeError("Function '".concat(o,"' doesn't apply to matrices. To call it ")+"elementwise on a matrix 'M', try 'map(M, ".concat(o,")'."));throw c.data=u.data,c}throw u},i.onMismatch=(o,s,A)=>{var u=i.createError(o,s,A);if(["wrongType","mismatch"].includes(u.data.category)&&s.length===1&&Aa(s[0])&&A.some(d=>!d.params.includes(","))){var c=new TypeError("Function '".concat(o,"' doesn't apply to matrices. To call it ")+"elementwise on a matrix 'M', try 'map(M, ".concat(o,")'."));throw c.data=u.data,c}throw u},i});function la(r){throw new Error("Cannot convert value ".concat(r," into a BigNumber: no class 'BigNumber' provided"))}function ga(r){throw new Error("Cannot convert value ".concat(r," into a Complex number: no class 'Complex' provided"))}function fa(r){throw new Error("Cannot convert value ".concat(r," into a Fraction, no class 'Fraction' provided."))}/*!
|
|
15
|
+
`);return Object.freeze(xn)};function kn(){return!0}function Ve(){return!1}function Ut(){}oa(xt,xn,{MATRIX_OPTIONS:["Matrix","Array"],NUMBER_OPTIONS:["number","BigNumber","Fraction"]});const jn="Argument is not a typed-function.",ua=function r(){function e(B){return typeof B=="object"&&B!==null&&B.constructor===Object}const t=[{name:"number",test:function(B){return typeof B=="number"}},{name:"string",test:function(B){return typeof B=="string"}},{name:"boolean",test:function(B){return typeof B=="boolean"}},{name:"Function",test:function(B){return typeof B=="function"}},{name:"Array",test:Array.isArray},{name:"Date",test:function(B){return B instanceof Date}},{name:"RegExp",test:function(B){return B instanceof RegExp}},{name:"Object",test:e},{name:"null",test:function(B){return B===null}},{name:"undefined",test:function(B){return B===void 0}}],a={name:"any",test:kn,isAny:!0};let n,i,o=0,s={createCount:0};function A(B){const w=n.get(B);if(w)return w;let Q='Unknown type "'+B+'"';const j=B.toLowerCase();let T;for(T of i)if(T.toLowerCase()===j){Q+='. Did you mean "'+T+'" ?';break}throw new TypeError(Q)}function u(B){let w=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"any";const Q=w?A(w).index:i.length,j=[];for(let U=0;U<B.length;++U){if(!B[U]||typeof B[U].name!="string"||typeof B[U].test!="function")throw new TypeError("Object with properties {name: string, test: function} expected");const _=B[U].name;if(n.has(_))throw new TypeError('Duplicate type name "'+_+'"');j.push(_),n.set(_,{name:_,test:B[U].test,isAny:B[U].isAny,index:Q+U,conversionsTo:[]})}const T=i.slice(Q);i=i.slice(0,Q).concat(j).concat(T);for(let U=Q+j.length;U<i.length;++U)n.get(i[U]).index=U}function c(){n=new Map,i=[],o=0,u([a],!1)}function d(B){const w=i.filter(Q=>{const j=n.get(Q);return!j.isAny&&j.test(B)});return w.length?w:["any"]}function l(B){return B&&typeof B=="function"&&"_typedFunctionData"in B}function h(B,w,Q){if(!l(B))throw new TypeError(jn);const j=Q&&Q.exact,T=p(Array.isArray(w)?w.join(","):w),U=b(T);if(!j||U in B.signatures){const L=B._typedFunctionData.signatureMap.get(U);if(L)return L}const _=T.length;let N,z;if(j){let L;for(L in N=[],B.signatures)N.push(B._typedFunctionData.signatureMap.get(L))}else N=B._typedFunctionData.signatures;for(let L=0;L<_;++L){const he=T[L],ie=[];let we;for(we of N){const Ge=y(we.params,L);if(Ge&&(!he.restParam||Ge.restParam)){if(!Ge.hasAny){const st=m(Ge);if(he.types.some(et=>!st.has(et.name)))continue}ie.push(we)}}if(N=ie,N.length===0)break}for(z of N)if(z.params.length<=_)return z;throw new TypeError("Signature not found (signature: "+(B.name||"unnamed")+"("+b(T,", ")+"))")}function b(B){let w=arguments.length>1&&arguments[1]!==void 0?arguments[1]:",";return B.map(Q=>Q.name).join(w)}function g(B){const w=B.indexOf("...")===0,Q=(w?B.length>3?B.slice(3):"any":B).split("|").map(U=>A(U.trim()));let j=!1,T=w?"...":"";return{types:Q.map(function(U){return j=U.isAny||j,T+=U.name+"|",{name:U.name,typeIndex:U.index,test:U.test,isAny:U.isAny,conversion:null,conversionIndex:-1}}),name:T.slice(0,-1),hasAny:j,hasConversion:!1,restParam:w}}function f(B){const w=B.types.map(_=>_.name),Q=function(_){if(_.length===0)return[];const N=_.map(A);_.length>1&&N.sort((he,ie)=>he.index-ie.index);let z=N[0].conversionsTo;if(_.length===1)return z;z=z.concat([]);const L=new Set(_);for(let he=1;he<N.length;++he){let ie;for(ie of N[he].conversionsTo)L.has(ie.from)||(z.push(ie),L.add(ie.from))}return z}(w);let j=B.hasAny,T=B.name;const U=Q.map(function(_){const N=A(_.from);return j=N.isAny||j,T+="|"+_.from,{name:_.from,typeIndex:N.index,test:N.test,isAny:N.isAny,conversion:_,conversionIndex:_.index}});return{types:B.types.concat(U),name:T,hasAny:j,hasConversion:U.length>0,restParam:B.restParam}}function m(B){return B.typeSet||(B.typeSet=new Set,B.types.forEach(w=>B.typeSet.add(w.name))),B.typeSet}function p(B){const w=[];if(typeof B!="string")throw new TypeError("Signatures must be strings");const Q=B.trim();if(Q==="")return w;const j=Q.split(",");for(let T=0;T<j.length;++T){const U=g(j[T].trim());if(U.restParam&&T!==j.length-1)throw new SyntaxError('Unexpected rest parameter "'+j[T]+'": only allowed for the last parameter');if(U.types.length===0)return null;w.push(U)}return w}function C(B){const w=Y(B);return!!w&&w.restParam}function I(B){if(B&&B.types.length!==0){if(B.types.length===1)return A(B.types[0].name).test;if(B.types.length===2){const w=A(B.types[0].name).test,Q=A(B.types[1].name).test;return function(j){return w(j)||Q(j)}}{const w=B.types.map(function(Q){return A(Q.name).test});return function(Q){for(let j=0;j<w.length;j++)if(w[j](Q))return!0;return!1}}}return kn}function x(B){let w,Q,j;if(C(B)){w=pe(B).map(I);const T=w.length,U=I(Y(B)),_=function(N){for(let z=T;z<N.length;z++)if(!U(N[z]))return!1;return!0};return function(N){for(let z=0;z<w.length;z++)if(!w[z](N[z]))return!1;return _(N)&&N.length>=T+1}}return B.length===0?function(T){return T.length===0}:B.length===1?(Q=I(B[0]),function(T){return Q(T[0])&&T.length===1}):B.length===2?(Q=I(B[0]),j=I(B[1]),function(T){return Q(T[0])&&j(T[1])&&T.length===2}):(w=B.map(I),function(T){for(let U=0;U<w.length;U++)if(!w[U](T[U]))return!1;return T.length===w.length})}function y(B,w){return w<B.length?B[w]:C(B)?Y(B):null}function F(B,w){const Q=y(B,w);return Q?m(Q):new Set}function D(B){return B.conversion===null||B.conversion===void 0}function v(B,w){const Q=new Set;return B.forEach(j=>{const T=F(j.params,w);let U;for(U of T)Q.add(U)}),Q.has("any")?["any"]:Array.from(Q)}function M(B,w,Q){let j,T;const U=B||"unnamed";let _,N=Q;for(_=0;_<w.length;_++){const ie=[];if(N.forEach(we=>{const Ge=I(y(we.params,_));(_<we.params.length||C(we.params))&&Ge(w[_])&&ie.push(we)}),ie.length===0){if(T=v(N,_),T.length>0){const we=d(w[_]);return j=new TypeError("Unexpected type of argument in function "+U+" (expected: "+T.join(" or ")+", actual: "+we.join(" | ")+", index: "+_+")"),j.data={category:"wrongType",fn:U,index:_,actual:we,expected:T},j}}else N=ie}const z=N.map(function(ie){return C(ie.params)?1/0:ie.params.length});if(w.length<Math.min.apply(null,z))return T=v(N,_),j=new TypeError("Too few arguments in function "+U+" (expected: "+T.join(" or ")+", index: "+w.length+")"),j.data={category:"tooFewArgs",fn:U,index:w.length,expected:T},j;const L=Math.max.apply(null,z);if(w.length>L)return j=new TypeError("Too many arguments in function "+U+" (expected: "+L+", actual: "+w.length+")"),j.data={category:"tooManyArgs",fn:U,index:w.length,expectedLength:L},j;const he=[];for(let ie=0;ie<w.length;++ie)he.push(d(w[ie]).join("|"));return j=new TypeError('Arguments of type "'+he.join(", ")+'" do not match any of the defined signatures of function '+U+"."),j.data={category:"mismatch",actual:he},j}function S(B){let w=i.length+1;for(let Q=0;Q<B.types.length;Q++)D(B.types[Q])&&(w=Math.min(w,B.types[Q].typeIndex));return w}function O(B){let w=o+1;for(let Q=0;Q<B.types.length;Q++)D(B.types[Q])||(w=Math.min(w,B.types[Q].conversionIndex));return w}function P(B,w){if(B.hasAny){if(!w.hasAny)return 1}else if(w.hasAny)return-1;if(B.restParam){if(!w.restParam)return 1}else if(w.restParam)return-1;if(B.hasConversion){if(!w.hasConversion)return 1}else if(w.hasConversion)return-1;const Q=S(B)-S(w);if(Q<0)return-1;if(Q>0)return 1;const j=O(B)-O(w);return j<0?-1:j>0?1:0}function K(B,w){const Q=B.params,j=w.params,T=Y(Q),U=Y(j),_=C(Q),N=C(j);if(_&&T.hasAny){if(!N||!U.hasAny)return 1}else if(N&&U.hasAny)return-1;let z,L=0,he=0;for(z of Q)z.hasAny&&++L,z.hasConversion&&++he;let ie=0,we=0;for(z of j)z.hasAny&&++ie,z.hasConversion&&++we;if(L!==ie)return L-ie;if(_&&T.hasConversion){if(!N||!U.hasConversion)return 1}else if(N&&U.hasConversion)return-1;if(he!==we)return he-we;if(_){if(!N)return 1}else if(N)return-1;const Ge=(Q.length-j.length)*(_?-1:1);if(Ge!==0)return Ge;const st=[];let et,lt=0;for(let Kt=0;Kt<Q.length;++Kt){const Ta=P(Q[Kt],j[Kt]);st.push(Ta),lt+=Ta}if(lt!==0)return lt;for(et of st)if(et!==0)return et;return 0}function J(B,w){let Q=w;if(B.some(T=>T.hasConversion)){const T=C(B),U=B.map(q);Q=function(){const _=[],N=T?arguments.length-1:arguments.length;for(let z=0;z<N;z++)_[z]=U[z](arguments[z]);return T&&(_[N]=arguments[N].map(U[N])),w.apply(this,_)}}let j=Q;if(C(B)){const T=B.length-1;j=function(){return Q.apply(this,ee(arguments,0,T).concat([ee(arguments,T)]))}}return j}function q(B){let w,Q,j,T;const U=[],_=[];switch(B.types.forEach(function(N){N.conversion&&(U.push(A(N.conversion.from).test),_.push(N.conversion.convert))}),_.length){case 0:return function(N){return N};case 1:return w=U[0],j=_[0],function(N){return w(N)?j(N):N};case 2:return w=U[0],Q=U[1],j=_[0],T=_[1],function(N){return w(N)?j(N):Q(N)?T(N):N};default:return function(N){for(let z=0;z<_.length;z++)if(U[z](N))return _[z](N);return N}}}function se(B){return function w(Q,j,T){if(j<Q.length){const N=Q[j];let z=[];if(N.restParam){const L=N.types.filter(D);L.length<N.types.length&&z.push({types:L,name:"..."+L.map(he=>he.name).join("|"),hasAny:L.some(he=>he.isAny),hasConversion:!1,restParam:!0}),z.push(N)}else z=N.types.map(function(L){return{types:[L],name:L.name,hasAny:L.isAny,hasConversion:L.conversion,restParam:!1}});return U=z,_=function(L){return w(Q,j+1,T.concat([L]))},Array.prototype.concat.apply([],U.map(_))}return[T];var U,_}(B,0,[])}function ue(B,w){const Q=Math.max(B.length,w.length);for(let N=0;N<Q;N++){const z=F(B,N),L=F(w,N);let he,ie=!1;for(he of L)if(z.has(he)){ie=!0;break}if(!ie)return!1}const j=B.length,T=w.length,U=C(B),_=C(w);return U?_?j===T:T>=j:_?j>=T:j===T}function re(B,w,Q){const j=[];let T;for(T of B){let U=Q[T];if(typeof U!="number")throw new TypeError('No definition for referenced signature "'+T+'"');if(U=w[U],typeof U!="function")return!1;j.push(U)}return j}function be(B,w,Q){const j=function(_){return _.map(N=>Ne(N)?Ee(N.referToSelf.callback):ye(N)?Ae(N.referTo.references,N.referTo.callback):N)}(B),T=new Array(j.length).fill(!1);let U=!0;for(;U;){U=!1;let _=!0;for(let N=0;N<j.length;++N){if(T[N])continue;const z=j[N];if(Ne(z))j[N]=z.referToSelf.callback(Q),j[N].referToSelf=z.referToSelf,T[N]=!0,_=!1;else if(ye(z)){const L=re(z.referTo.references,j,w);L?(j[N]=z.referTo.callback.apply(this,L),j[N].referTo=z.referTo,T[N]=!0,_=!1):U=!0}}if(_&&U)throw new SyntaxError("Circular reference detected in resolving typed.referTo")}return j}function de(B,w){if(s.createCount++,Object.keys(w).length===0)throw new SyntaxError("No signatures provided");s.warnAgainstDeprecatedThis&&function(ae){const tt=/\bthis(\(|\.signatures\b)/;Object.keys(ae).forEach(Rr=>{const Vt=ae[Rr];if(tt.test(Vt.toString()))throw new SyntaxError("Using `this` to self-reference a function is deprecated since typed-function@3. Use typed.referTo and typed.referToSelf instead.")})}(w);const Q=[],j=[],T={},U=[];let _;for(_ in w){if(!Object.prototype.hasOwnProperty.call(w,_))continue;const ae=p(_);if(!ae)continue;Q.forEach(function(ra){if(ue(ra,ae))throw new TypeError('Conflicting signatures "'+b(ra)+'" and "'+b(ae)+'".')}),Q.push(ae);const tt=j.length;j.push(w[_]);const Rr=ae.map(f);let Vt;for(Vt of se(Rr)){const ra=b(Vt);U.push({params:Vt,name:ra,fn:tt}),Vt.every(Kc=>!Kc.hasConversion)&&(T[ra]=tt)}}U.sort(K);const N=be(j,T,aa);let z;for(z in T)Object.prototype.hasOwnProperty.call(T,z)&&(T[z]=N[T[z]]);const L=[],he=new Map;for(z of U)he.has(z.name)||(z.fn=N[z.fn],L.push(z),he.set(z.name,z));const ie=L[0]&&L[0].params.length<=2&&!C(L[0].params),we=L[1]&&L[1].params.length<=2&&!C(L[1].params),Ge=L[2]&&L[2].params.length<=2&&!C(L[2].params),st=L[3]&&L[3].params.length<=2&&!C(L[3].params),et=L[4]&&L[4].params.length<=2&&!C(L[4].params),lt=L[5]&&L[5].params.length<=2&&!C(L[5].params),Kt=ie&&we&&Ge&&st&&et&<for(let ae=0;ae<L.length;++ae)L[ae].test=x(L[ae].params);const Ta=ie?I(L[0].params[0]):Ve,Ec=we?I(L[1].params[0]):Ve,Cc=Ge?I(L[2].params[0]):Ve,Ic=st?I(L[3].params[0]):Ve,Bc=et?I(L[4].params[0]):Ve,Dc=lt?I(L[5].params[0]):Ve,yc=ie?I(L[0].params[1]):Ve,wc=we?I(L[1].params[1]):Ve,xc=Ge?I(L[2].params[1]):Ve,Fc=st?I(L[3].params[1]):Ve,vc=et?I(L[4].params[1]):Ve,Qc=lt?I(L[5].params[1]):Ve;for(let ae=0;ae<L.length;++ae)L[ae].implementation=J(L[ae].params,L[ae].fn);const kc=ie?L[0].implementation:Ut,jc=we?L[1].implementation:Ut,Mc=Ge?L[2].implementation:Ut,Sc=st?L[3].implementation:Ut,Rc=et?L[4].implementation:Ut,Tc=lt?L[5].implementation:Ut,Nc=ie?L[0].params.length:-1,Uc=we?L[1].params.length:-1,Lc=Ge?L[2].params.length:-1,Gc=st?L[3].params.length:-1,_c=et?L[4].params.length:-1,Hc=lt?L[5].params.length:-1,Oc=Kt?6:0,zc=L.length,Pc=L.map(ae=>ae.test),qc=L.map(ae=>ae.implementation),Jc=function(){for(let ae=Oc;ae<zc;ae++)if(Pc[ae](arguments))return qc[ae].apply(this,arguments);return s.onMismatch(B,arguments,L)};function aa(ae,tt){return arguments.length===Nc&&Ta(ae)&&yc(tt)?kc.apply(this,arguments):arguments.length===Uc&&Ec(ae)&&wc(tt)?jc.apply(this,arguments):arguments.length===Lc&&Cc(ae)&&xc(tt)?Mc.apply(this,arguments):arguments.length===Gc&&Ic(ae)&&Fc(tt)?Sc.apply(this,arguments):arguments.length===_c&&Bc(ae)&&vc(tt)?Rc.apply(this,arguments):arguments.length===Hc&&Dc(ae)&&Qc(tt)?Tc.apply(this,arguments):Jc.apply(this,arguments)}try{Object.defineProperty(aa,"name",{value:B})}catch{}return aa.signatures=T,aa._typedFunctionData={signatures:L,signatureMap:he},aa}function $(B,w,Q){throw M(B,w,Q)}function pe(B){return ee(B,0,B.length-1)}function Y(B){return B[B.length-1]}function ee(B,w,Q){return Array.prototype.slice.call(B,w,Q)}function Ae(B,w){return{referTo:{references:B,callback:w}}}function Ee(B){if(typeof B!="function")throw new TypeError("Callback function expected as first argument");return{referToSelf:{callback:B}}}function ye(B){return B&&typeof B.referTo=="object"&&Array.isArray(B.referTo.references)&&typeof B.referTo.callback=="function"}function Ne(B){return B&&typeof B.referToSelf=="object"&&typeof B.referToSelf.callback=="function"}function qe(B,w){if(!B)return w;if(w&&w!==B){const Q=new Error("Function names do not match (expected: "+B+", actual: "+w+")");throw Q.data={actual:w,expected:B},Q}return B}function Je(B){let w;for(const Q in B)Object.prototype.hasOwnProperty.call(B,Q)&&(l(B[Q])||typeof B[Q].signature=="string")&&(w=qe(w,B[Q].name));return w}function ta(B,w){let Q;for(Q in w)if(Object.prototype.hasOwnProperty.call(w,Q)){if(Q in B&&w[Q]!==B[Q]){const j=new Error('Signature "'+Q+'" is defined twice');throw j.data={signature:Q,sourceFunction:w[Q],destFunction:B[Q]},j}B[Q]=w[Q]}}c(),u(t);const mc=s;function Yi(B){if(!B||typeof B.from!="string"||typeof B.to!="string"||typeof B.convert!="function")throw new TypeError("Object with properties {from: string, to: string, convert: function} expected");if(B.to===B.from)throw new SyntaxError('Illegal to define conversion from "'+B.from+'" to itself.')}return s=function(B){const w=typeof B=="string";let Q=w?B:"";const j={};for(let T=w?1:0;T<arguments.length;++T){const U=arguments[T];let _,N={};if(typeof U=="function"?(_=U.name,typeof U.signature=="string"?N[U.signature]=U:l(U)&&(N=U.signatures)):e(U)&&(N=U,w||(_=Je(U))),Object.keys(N).length===0){const z=new TypeError("Argument to 'typed' at index "+T+" is not a (typed) function, nor an object with signatures as keys and functions as values.");throw z.data={index:T,argument:U},z}w||(Q=qe(Q,_)),ta(j,N)}return de(Q||"",j)},s.create=r,s.createCount=mc.createCount,s.onMismatch=$,s.throwMismatchError=$,s.createError=M,s.clear=c,s.clearConversions=function(){let B;for(B of i)n.get(B).conversionsTo=[];o=0},s.addTypes=u,s._findType=A,s.referTo=function(){const B=pe(arguments).map(Q=>b(p(Q))),w=Y(arguments);if(typeof w!="function")throw new TypeError("Callback function expected as last argument");return Ae(B,w)},s.referToSelf=Ee,s.convert=function(B,w){const Q=A(w);if(Q.test(B))return B;const j=Q.conversionsTo;if(j.length===0)throw new Error("There are no conversions to "+w+" defined.");for(let T=0;T<j.length;T++)if(A(j[T].from).test(B))return j[T].convert(B);throw new Error("Cannot convert "+B+" to "+w)},s.findSignature=h,s.find=function(B,w,Q){return h(B,w,Q).implementation},s.isTypedFunction=l,s.warnAgainstDeprecatedThis=!0,s.addType=function(B,w){let Q="any";w!==!1&&n.has("Object")&&(Q="Object"),s.addTypes([B],Q)},s.addConversion=function(B){let w=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{override:!1};Yi(B);const Q=A(B.to),j=Q.conversionsTo.find(T=>T.from===B.from);if(j){if(!w||!w.override)throw new Error('There is already a conversion from "'+B.from+'" to "'+Q.name+'"');s.removeConversion({from:j.from,to:B.to,convert:j.convert})}Q.conversionsTo.push({from:B.from,convert:B.convert,index:o++})},s.addConversions=function(B,w){B.forEach(Q=>s.addConversion(Q,w))},s.removeConversion=function(B){Yi(B);const w=A(B.to),Q=function(T,U){for(let _=0;_<T.length;_++)if(U(T[_]))return T[_]}(w.conversionsTo,T=>T.from===B.from);if(!Q)throw new Error("Attempt to remove nonexistent conversion from "+B.from+" to "+B.to);if(Q.convert!==B.convert)throw new Error("Conversion to remove does not match existing conversion");const j=w.conversionsTo.indexOf(Q);w.conversionsTo.splice(j,1)},s.resolve=function(B,w){if(!l(B))throw new TypeError(jn);const Q=B._typedFunctionData.signatures;for(let j=0;j<Q.length;++j)if(Q[j].test(w))return Q[j];return null},s}();function ne(r,e,t,a){function n(i){var o=function(s,A){for(var u={},c=0;c<A.length;c++){var d=A[c],l=s[d];l!==void 0&&(u[d]=l)}return u}(i,e.map(Ds));return function(s,A,u){var c=A.filter(l=>!function(h){return h&&h[0]==="?"}(l)).every(l=>u[l]!==void 0);if(!c){var d=A.filter(l=>u[l]===void 0);throw new Error('Cannot create function "'.concat(s,'", ')+"some dependencies are missing: ".concat(d.map(l=>'"'.concat(l,'"')).join(", "),"."))}}(r,e,i),t(o)}return n.isFactory=!0,n.fn=r,n.dependencies=e.slice().sort(),a&&(n.meta=a),n}function Ds(r){return r&&r[0]==="?"?r.slice(1):r}function me(r){return typeof r=="boolean"||!!isFinite(r)&&r===Math.round(r)}function rr(r,e,t){var a={2:"0b",8:"0o",16:"0x"}[e],n="";if(t){if(t<1)throw new Error("size must be in greater than 0");if(!me(t))throw new Error("size must be an integer");if(r>2**(t-1)-1||r<-(2**(t-1)))throw new Error("Value must be in range [-2^".concat(t-1,", 2^").concat(t-1,"-1]"));if(!me(r))throw new Error("Value must be an integer");r<0&&(r+=2**t),n="i".concat(t)}var i="";return r<0&&(r=-r,i="-"),"".concat(i).concat(a).concat(r.toString(e)).concat(n)}function nr(r,e){if(typeof e=="function")return e(r);if(r===1/0)return"Infinity";if(r===-1/0)return"-Infinity";if(isNaN(r))return"NaN";var{notation:t,precision:a,wordSize:n}=Mn(e);switch(t){case"fixed":return function(i,o){if(isNaN(i)||!isFinite(i))return String(i);var s=da(i),A=typeof o=="number"?ha(s,s.exponent+1+o):s,u=A.coefficients,c=A.exponent+1,d=c+(o||0);return u.length<d&&(u=u.concat(Lt(d-u.length))),c<0&&(u=Lt(1-c).concat(u),c=1),c<u.length&&u.splice(c,0,c===0?"0.":"."),A.sign+u.join("")}(r,a);case"exponential":return Sn(r,a);case"engineering":return function(i,o){if(isNaN(i)||!isFinite(i))return String(i);var s=da(i),A=ha(s,o),u=A.exponent,c=A.coefficients,d=u%3==0?u:u<0?u-3-u%3:u-u%3;if(le(o))for(;o>c.length||u-d+1>c.length;)c.push(0);else for(var l=Math.abs(u-d)-(c.length-1),h=0;h<l;h++)c.push(0);for(var b=Math.abs(u-d),g=1;b>0;)g++,b--;var f=c.slice(g).join(""),m=le(o)&&f.length||f.match(/[1-9]/)?"."+f:"",p=c.slice(0,g).join("")+m+"e"+(u>=0?"+":"")+d.toString();return A.sign+p}(r,a);case"bin":return rr(r,2,n);case"oct":return rr(r,8,n);case"hex":return rr(r,16,n);case"auto":return function(i,o,s){if(isNaN(i)||!isFinite(i))return String(i);var A=Tn(s==null?void 0:s.lowerExp,-3),u=Tn(s==null?void 0:s.upperExp,5),c=da(i),d=o?ha(c,o):c;if(d.exponent<A||d.exponent>=u)return Sn(i,o);var l=d.coefficients,h=d.exponent;l.length<o&&(l=l.concat(Lt(o-l.length))),l=l.concat(Lt(h-l.length+1+(l.length<o?o-l.length:0)));var b=h>0?h:0;return b<(l=Lt(-h).concat(l)).length-1&&l.splice(b+1,0,"."),d.sign+l.join("")}(r,a,e).replace(/((\.\d*?)(0+))($|e)/,function(){var i=arguments[2],o=arguments[4];return i!=="."?i+o:o});default:throw new Error('Unknown notation "'+t+'". Choose "auto", "exponential", "fixed", "bin", "oct", or "hex.')}}function Mn(r){var e,t,a="auto";if(r!==void 0)if(le(r))e=r;else if(xe(r))e=r.toNumber();else{if(!ar(r))throw new Error("Unsupported type of options, number, BigNumber, or object expected");r.precision!==void 0&&(e=Rn(r.precision,()=>{throw new Error('Option "precision" must be a number or BigNumber')})),r.wordSize!==void 0&&(t=Rn(r.wordSize,()=>{throw new Error('Option "wordSize" must be a number or BigNumber')})),r.notation&&(a=r.notation)}return{notation:a,precision:e,wordSize:t}}function da(r){var e=String(r).toLowerCase().match(/^(-?)(\d+\.?\d*)(e([+-]?\d+))?$/);if(!e)throw new SyntaxError("Invalid number "+r);var t=e[1],a=e[2],n=parseFloat(e[4]||"0"),i=a.indexOf(".");n+=i!==-1?i-1:a.length-1;var o=a.replace(".","").replace(/^0*/,function(s){return n-=s.length,""}).replace(/0*$/,"").split("").map(function(s){return parseInt(s)});return o.length===0&&(o.push(0),n++),{sign:t,coefficients:o,exponent:n}}function Sn(r,e){if(isNaN(r)||!isFinite(r))return String(r);var t=da(r),a=e?ha(t,e):t,n=a.coefficients,i=a.exponent;n.length<e&&(n=n.concat(Lt(e-n.length)));var o=n.shift();return a.sign+o+(n.length>0?"."+n.join(""):"")+"e"+(i>=0?"+":"")+i}function ha(r,e){for(var t={sign:r.sign,coefficients:r.coefficients,exponent:r.exponent},a=t.coefficients;e<=0;)a.unshift(0),t.exponent++,e++;if(a.length>e&&a.splice(e,a.length-e)[0]>=5){var n=e-1;for(a[n]++;a[n]===10;)a.pop(),n===0&&(a.unshift(0),t.exponent++,n++),a[--n]++}return t}function Lt(r){for(var e=[],t=0;t<r;t++)e.push(0);return e}function ba(r,e){var t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1e-8,a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0;if(t<=0)throw new Error("Relative tolerance must be greater than 0");if(a<0)throw new Error("Absolute tolerance must be at least 0");return!isNaN(r)&&!isNaN(e)&&(isFinite(r)&&isFinite(e)?r===e||Math.abs(r-e)<=Math.max(t*Math.max(Math.abs(r),Math.abs(e)),a):r===e)}function Rn(r,e){return le(r)?r:xe(r)?r.toNumber():void e()}function Tn(r,e){return le(r)?r:xe(r)?r.toNumber():e}var Nn=function(){return Nn=ua.create,ua},ys=ne("typed",["?BigNumber","?Complex","?DenseMatrix","?Fraction"],function(r){var{BigNumber:e,Complex:t,DenseMatrix:a,Fraction:n}=r,i=Nn();return i.clear(),i.addTypes([{name:"number",test:le},{name:"Complex",test:Fn},{name:"BigNumber",test:xe},{name:"bigint",test:Ko},{name:"Fraction",test:vn},{name:"Unit",test:Qn},{name:"identifier",test:o=>rt&&/^(?:[A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C8A\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CD\uA7D0\uA7D1\uA7D3\uA7D5-\uA7DC\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF40\uDF42-\uDF49\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDDC0-\uDDF3\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD23\uDD4A-\uDD65\uDD6F-\uDD85\uDE80-\uDEA9\uDEB0\uDEB1\uDEC2-\uDEC4\uDF00-\uDF1C\uDF27\uDF30-\uDF45\uDF70-\uDF81\uDFB0-\uDFC4\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE3F\uDE40\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61\uDF80-\uDF89\uDF8B\uDF8E\uDF90-\uDFB5\uDFB7\uDFD1\uDFD3]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDEB8\uDF00-\uDF1A\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCDF\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8\uDFC0-\uDFE0]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDEE0-\uDEF2\uDF02\uDF04-\uDF10\uDF12-\uDF33\uDFB0]|\uD808[\uDC00-\uDF99]|\uD809[\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD80E\uD80F\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883\uD885-\uD887][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2F\uDC41-\uDC46\uDC60-\uDFFF]|\uD810[\uDC00-\uDFFA]|\uD811[\uDC00-\uDE46]|\uD818[\uDD00-\uDD1D]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE70-\uDEBE\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDD40-\uDD6C\uDE40-\uDE7F\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDCFF-\uDD08]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD32\uDD50-\uDD52\uDD55\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD837[\uDF00-\uDF1E\uDF25-\uDF2A]|\uD838[\uDC30-\uDC6D\uDD00-\uDD2C\uDD37-\uDD3D\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB]|\uD839[\uDCD0-\uDCEB\uDDD0-\uDDED\uDDF0\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43\uDD4B]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF39\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0\uDFF0-\uDFFF]|\uD87B[\uDC00-\uDE5D]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A\uDF50-\uDFFF]|\uD888[\uDC00-\uDFAF])(?:[0-9A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C8A\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CD\uA7D0\uA7D1\uA7D3\uA7D5-\uA7DC\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF40\uDF42-\uDF49\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDDC0-\uDDF3\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD23\uDD4A-\uDD65\uDD6F-\uDD85\uDE80-\uDEA9\uDEB0\uDEB1\uDEC2-\uDEC4\uDF00-\uDF1C\uDF27\uDF30-\uDF45\uDF70-\uDF81\uDFB0-\uDFC4\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE3F\uDE40\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61\uDF80-\uDF89\uDF8B\uDF8E\uDF90-\uDFB5\uDFB7\uDFD1\uDFD3]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDEB8\uDF00-\uDF1A\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCDF\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8\uDFC0-\uDFE0]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDEE0-\uDEF2\uDF02\uDF04-\uDF10\uDF12-\uDF33\uDFB0]|\uD808[\uDC00-\uDF99]|\uD809[\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD80E\uD80F\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883\uD885-\uD887][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2F\uDC41-\uDC46\uDC60-\uDFFF]|\uD810[\uDC00-\uDFFA]|\uD811[\uDC00-\uDE46]|\uD818[\uDD00-\uDD1D]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE70-\uDEBE\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDD40-\uDD6C\uDE40-\uDE7F\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDCFF-\uDD08]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD32\uDD50-\uDD52\uDD55\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD837[\uDF00-\uDF1E\uDF25-\uDF2A]|\uD838[\uDC30-\uDC6D\uDD00-\uDD2C\uDD37-\uDD3D\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB]|\uD839[\uDCD0-\uDCEB\uDDD0-\uDDED\uDDF0\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43\uDD4B]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF39\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0\uDFF0-\uDFFF]|\uD87B[\uDC00-\uDE5D]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A\uDF50-\uDFFF]|\uD888[\uDC00-\uDFAF])*$/.test(o)},{name:"string",test:rt},{name:"Chain",test:Bs},{name:"Array",test:Qe},{name:"Matrix",test:Be},{name:"DenseMatrix",test:Vo},{name:"SparseMatrix",test:Wo},{name:"Range",test:Yo},{name:"Index",test:tr},{name:"boolean",test:Xo},{name:"ResultSet",test:Zo},{name:"Help",test:$o},{name:"function",test:es},{name:"Date",test:ts},{name:"RegExp",test:as},{name:"null",test:ns},{name:"undefined",test:is},{name:"AccessorNode",test:os},{name:"ArrayNode",test:ss},{name:"AssignmentNode",test:As},{name:"BlockNode",test:cs},{name:"ConditionalNode",test:us},{name:"ConstantNode",test:ds},{name:"FunctionNode",test:bs},{name:"FunctionAssignmentNode",test:hs},{name:"IndexNode",test:ls},{name:"Node",test:gs},{name:"ObjectNode",test:fs},{name:"OperatorNode",test:ps},{name:"ParenthesisNode",test:ms},{name:"RangeNode",test:Es},{name:"RelationalNode",test:Cs},{name:"SymbolNode",test:Is},{name:"Map",test:rs},{name:"Object",test:ar}]),i.addConversions([{from:"number",to:"BigNumber",convert:function(o){if(e||la(o),o.toExponential().replace(/e.*$/,"").replace(/^0\.?0*|\./,"").length>15)throw new TypeError("Cannot implicitly convert a number with >15 significant digits to BigNumber (value: "+o+"). Use function bignumber(x) to convert to BigNumber.");return new e(o)}},{from:"number",to:"Complex",convert:function(o){return t||ga(o),new t(o,0)}},{from:"BigNumber",to:"Complex",convert:function(o){return t||ga(o),new t(o.toNumber(),0)}},{from:"bigint",to:"number",convert:function(o){if(o>Number.MAX_SAFE_INTEGER)throw new TypeError("Cannot implicitly convert bigint to number: value exceeds the max safe integer value (value: "+o+")");return Number(o)}},{from:"bigint",to:"BigNumber",convert:function(o){return e||la(o),new e(o.toString())}},{from:"bigint",to:"Fraction",convert:function(o){return n||fa(o),new n(o)}},{from:"Fraction",to:"BigNumber",convert:function(o){throw new TypeError("Cannot implicitly convert a Fraction to BigNumber or vice versa. Use function bignumber(x) to convert to BigNumber or fraction(x) to convert to Fraction.")}},{from:"Fraction",to:"Complex",convert:function(o){return t||ga(o),new t(o.valueOf(),0)}},{from:"number",to:"Fraction",convert:function(o){n||fa(o);var s=new n(o);if(s.valueOf()!==o)throw new TypeError("Cannot implicitly convert a number to a Fraction when there will be a loss of precision (value: "+o+"). Use function fraction(x) to convert to Fraction.");return s}},{from:"string",to:"number",convert:function(o){var s=Number(o);if(isNaN(s))throw new Error('Cannot convert "'+o+'" to a number');return s}},{from:"string",to:"BigNumber",convert:function(o){e||la(o);try{return new e(o)}catch{throw new Error('Cannot convert "'+o+'" to BigNumber')}}},{from:"string",to:"bigint",convert:function(o){try{return BigInt(o)}catch{throw new Error('Cannot convert "'+o+'" to BigInt')}}},{from:"string",to:"Fraction",convert:function(o){n||fa(o);try{return new n(o)}catch{throw new Error('Cannot convert "'+o+'" to Fraction')}}},{from:"string",to:"Complex",convert:function(o){t||ga(o);try{return new t(o)}catch{throw new Error('Cannot convert "'+o+'" to Complex')}}},{from:"boolean",to:"number",convert:function(o){return+o}},{from:"boolean",to:"BigNumber",convert:function(o){return e||la(o),new e(+o)}},{from:"boolean",to:"bigint",convert:function(o){return BigInt(+o)}},{from:"boolean",to:"Fraction",convert:function(o){return n||fa(o),new n(+o)}},{from:"boolean",to:"string",convert:function(o){return String(o)}},{from:"Array",to:"Matrix",convert:function(o){return a||function(){throw new Error("Cannot convert array into a Matrix: no class 'DenseMatrix' provided")}(),new a(o)}},{from:"Matrix",to:"Array",convert:function(o){return o.valueOf()}}]),i.onMismatch=(o,s,A)=>{var u=i.createError(o,s,A);if(["wrongType","mismatch"].includes(u.data.category)&&s.length===1&&Aa(s[0])&&A.some(d=>!d.params.includes(","))){var c=new TypeError("Function '".concat(o,"' doesn't apply to matrices. To call it ")+"elementwise on a matrix 'M', try 'map(M, ".concat(o,")'."));throw c.data=u.data,c}throw u},i.onMismatch=(o,s,A)=>{var u=i.createError(o,s,A);if(["wrongType","mismatch"].includes(u.data.category)&&s.length===1&&Aa(s[0])&&A.some(d=>!d.params.includes(","))){var c=new TypeError("Function '".concat(o,"' doesn't apply to matrices. To call it ")+"elementwise on a matrix 'M', try 'map(M, ".concat(o,")'."));throw c.data=u.data,c}throw u},i});function la(r){throw new Error("Cannot convert value ".concat(r," into a BigNumber: no class 'BigNumber' provided"))}function ga(r){throw new Error("Cannot convert value ".concat(r," into a Complex number: no class 'Complex' provided"))}function fa(r){throw new Error("Cannot convert value ".concat(r," into a Fraction, no class 'Fraction' provided."))}/*!
|
|
16
16
|
* decimal.js v10.5.0
|
|
17
17
|
* An arbitrary-precision Decimal type for JavaScript.
|
|
18
18
|
* https://github.com/MikeMcl/decimal.js
|
|
19
19
|
* Copyright (c) 2025 Michael Mclaughlin <M8ch88l@gmail.com>
|
|
20
20
|
* MIT Licence
|
|
21
|
-
*/var Un,dt,nr=9e15,mt=1e9,ir="0123456789abcdef",pa="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",ma="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",or={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-9e15,maxE:nr,crypto:!1},X=!0,Ea="[DecimalError] ",Et=Ea+"Invalid argument: ",Ln=Ea+"Precision limit exceeded",Gn=Ea+"crypto unavailable",_n="[object Decimal]",Re=Math.floor,ke=Math.pow,ws=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,xs=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,Fs=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,Hn=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,Ze=1e7,Qs=pa.length-1,sr=ma.length-1,R={toStringTag:_n};function Se(r){var e,t,a,n=r.length-1,i="",o=r[0];if(n>0){for(i+=o,e=1;e<n;e++)(t=7-(a=r[e]+"").length)&&(i+=Ct(t)),i+=a;(t=7-(a=(o=r[e])+"").length)&&(i+=Ct(t))}else if(o===0)return"0";for(;o%10==0;)o/=10;return i+o}function He(r,e,t){if(r!==~~r||r<e||r>t)throw Error(Et+r)}function Xt(r,e,t,a){var n,i,o,s;for(i=r[0];i>=10;i/=10)--e;return--e<0?(e+=7,n=0):(n=Math.ceil((e+1)/7),e%=7),i=ke(10,7-e),s=r[n]%i|0,a==null?e<3?(e==0?s=s/100|0:e==1&&(s=s/10|0),o=t<4&&s==99999||t>3&&s==49999||s==5e4||s==0):o=(t<4&&s+1==i||t>3&&s+1==i/2)&&(r[n+1]/i/100|0)==ke(10,e-2)-1||(s==i/2||s==0)&&!(r[n+1]/i/100|0):e<4?(e==0?s=s/1e3|0:e==1?s=s/100|0:e==2&&(s=s/10|0),o=(a||t<4)&&s==9999||!a&&t>3&&s==4999):o=((a||t<4)&&s+1==i||!a&&t>3&&s+1==i/2)&&(r[n+1]/i/1e3|0)==ke(10,e-3)-1,o}function Ca(r,e,t){for(var a,n,i=[0],o=0,s=r.length;o<s;){for(n=i.length;n--;)i[n]*=e;for(i[0]+=ir.indexOf(r.charAt(o++)),a=0;a<i.length;a++)i[a]>t-1&&(i[a+1]===void 0&&(i[a+1]=0),i[a+1]+=i[a]/t|0,i[a]%=t)}return i.reverse()}R.absoluteValue=R.abs=function(){var r=new this.constructor(this);return r.s<0&&(r.s=1),V(r)},R.ceil=function(){return V(new this.constructor(this),this.e+1,2)},R.clampedTo=R.clamp=function(r,e){var t=this,a=t.constructor;if(r=new a(r),e=new a(e),!r.s||!e.s)return new a(NaN);if(r.gt(e))throw Error(Et+e);return t.cmp(r)<0?r:t.cmp(e)>0?e:new a(t)},R.comparedTo=R.cmp=function(r){var e,t,a,n,i=this,o=i.d,s=(r=new i.constructor(r)).d,A=i.s,u=r.s;if(!o||!s)return A&&u?A!==u?A:o===s?0:!o^A<0?1:-1:NaN;if(!o[0]||!s[0])return o[0]?A:s[0]?-u:0;if(A!==u)return A;if(i.e!==r.e)return i.e>r.e^A<0?1:-1;for(e=0,t=(a=o.length)<(n=s.length)?a:n;e<t;++e)if(o[e]!==s[e])return o[e]>s[e]^A<0?1:-1;return a===n?0:a>n^A<0?1:-1},R.cosine=R.cos=function(){var r,e,t=this,a=t.constructor;return t.d?t.d[0]?(r=a.precision,e=a.rounding,a.precision=r+Math.max(t.e,t.sd())+7,a.rounding=1,t=function(n,i){var o,s,A;if(i.isZero())return i;s=i.d.length,s<32?A=(1/ya(4,o=Math.ceil(s/3))).toString():(o=16,A="2.3283064365386962890625e-10"),n.precision+=o,i=Gt(n,1,i.times(A),new n(1));for(var u=o;u--;){var c=i.times(i);i=c.times(c).minus(c).times(8).plus(1)}return n.precision-=o,i}(a,Kn(a,t)),a.precision=r,a.rounding=e,V(dt==2||dt==3?t.neg():t,r,e,!0)):new a(1):new a(NaN)},R.cubeRoot=R.cbrt=function(){var r,e,t,a,n,i,o,s,A,u,c=this,d=c.constructor;if(!c.isFinite()||c.isZero())return new d(c);for(X=!1,(i=c.s*ke(c.s*c,1/3))&&Math.abs(i)!=1/0?a=new d(i.toString()):(t=Se(c.d),(i=((r=c.e)-t.length+1)%3)&&(t+=i==1||i==-2?"0":"00"),i=ke(t,1/3),r=Re((r+1)/3)-(r%3==(r<0?-1:2)),(a=new d(t=i==1/0?"5e"+r:(t=i.toExponential()).slice(0,t.indexOf("e")+1)+r)).s=c.s),o=(r=d.precision)+3;;)if(u=(A=(s=a).times(s).times(s)).plus(c),a=ce(u.plus(c).times(s),u.plus(A),o+2,1),Se(s.d).slice(0,o)===(t=Se(a.d)).slice(0,o)){if((t=t.slice(o-3,o+1))!="9999"&&(n||t!="4999")){+t&&(+t.slice(1)||t.charAt(0)!="5")||(V(a,r+1,1),e=!a.times(a).times(a).eq(c));break}if(!n&&(V(s,r+1,0),s.times(s).times(s).eq(c))){a=s;break}o+=4,n=1}return X=!0,V(a,r,d.rounding,e)},R.decimalPlaces=R.dp=function(){var r,e=this.d,t=NaN;if(e){if(t=7*((r=e.length-1)-Re(this.e/7)),r=e[r])for(;r%10==0;r/=10)t--;t<0&&(t=0)}return t},R.dividedBy=R.div=function(r){return ce(this,new this.constructor(r))},R.dividedToIntegerBy=R.divToInt=function(r){var e=this.constructor;return V(ce(this,new e(r),0,1,1),e.precision,e.rounding)},R.equals=R.eq=function(r){return this.cmp(r)===0},R.floor=function(){return V(new this.constructor(this),this.e+1,3)},R.greaterThan=R.gt=function(r){return this.cmp(r)>0},R.greaterThanOrEqualTo=R.gte=function(r){var e=this.cmp(r);return e==1||e===0},R.hyperbolicCosine=R.cosh=function(){var r,e,t,a,n,i=this,o=i.constructor,s=new o(1);if(!i.isFinite())return new o(i.s?1/0:NaN);if(i.isZero())return s;t=o.precision,a=o.rounding,o.precision=t+Math.max(i.e,i.sd())+4,o.rounding=1,(n=i.d.length)<32?e=(1/ya(4,r=Math.ceil(n/3))).toString():(r=16,e="2.3283064365386962890625e-10"),i=Gt(o,1,i.times(e),new o(1),!0);for(var A,u=r,c=new o(8);u--;)A=i.times(i),i=s.minus(A.times(c.minus(A.times(c))));return V(i,o.precision=t,o.rounding=a,!0)},R.hyperbolicSine=R.sinh=function(){var r,e,t,a,n=this,i=n.constructor;if(!n.isFinite()||n.isZero())return new i(n);if(e=i.precision,t=i.rounding,i.precision=e+Math.max(n.e,n.sd())+4,i.rounding=1,(a=n.d.length)<3)n=Gt(i,2,n,n,!0);else{r=(r=1.4*Math.sqrt(a))>16?16:0|r,n=Gt(i,2,n=n.times(1/ya(5,r)),n,!0);for(var o,s=new i(5),A=new i(16),u=new i(20);r--;)o=n.times(n),n=n.times(s.plus(o.times(A.times(o).plus(u))))}return i.precision=e,i.rounding=t,V(n,e,t,!0)},R.hyperbolicTangent=R.tanh=function(){var r,e,t=this,a=t.constructor;return t.isFinite()?t.isZero()?new a(t):(r=a.precision,e=a.rounding,a.precision=r+7,a.rounding=1,ce(t.sinh(),t.cosh(),a.precision=r,a.rounding=e)):new a(t.s)},R.inverseCosine=R.acos=function(){var r=this,e=r.constructor,t=r.abs().cmp(1),a=e.precision,n=e.rounding;return t!==-1?t===0?r.isNeg()?it(e,a,n):new e(0):new e(NaN):r.isZero()?it(e,a+4,n).times(.5):(e.precision=a+6,e.rounding=1,r=new e(1).minus(r).div(r.plus(1)).sqrt().atan(),e.precision=a,e.rounding=n,r.times(2))},R.inverseHyperbolicCosine=R.acosh=function(){var r,e,t=this,a=t.constructor;return t.lte(1)?new a(t.eq(1)?0:NaN):t.isFinite()?(r=a.precision,e=a.rounding,a.precision=r+Math.max(Math.abs(t.e),t.sd())+4,a.rounding=1,X=!1,t=t.times(t).minus(1).sqrt().plus(t),X=!0,a.precision=r,a.rounding=e,t.ln()):new a(t)},R.inverseHyperbolicSine=R.asinh=function(){var r,e,t=this,a=t.constructor;return!t.isFinite()||t.isZero()?new a(t):(r=a.precision,e=a.rounding,a.precision=r+2*Math.max(Math.abs(t.e),t.sd())+6,a.rounding=1,X=!1,t=t.times(t).plus(1).sqrt().plus(t),X=!0,a.precision=r,a.rounding=e,t.ln())},R.inverseHyperbolicTangent=R.atanh=function(){var r,e,t,a,n=this,i=n.constructor;return n.isFinite()?n.e>=0?new i(n.abs().eq(1)?n.s/0:n.isZero()?n:NaN):(r=i.precision,e=i.rounding,a=n.sd(),Math.max(a,r)<2*-n.e-1?V(new i(n),r,e,!0):(i.precision=t=a-n.e,n=ce(n.plus(1),new i(1).minus(n),t+r,1),i.precision=r+4,i.rounding=1,n=n.ln(),i.precision=r,i.rounding=e,n.times(.5))):new i(NaN)},R.inverseSine=R.asin=function(){var r,e,t,a,n=this,i=n.constructor;return n.isZero()?new i(n):(e=n.abs().cmp(1),t=i.precision,a=i.rounding,e!==-1?e===0?((r=it(i,t+4,a).times(.5)).s=n.s,r):new i(NaN):(i.precision=t+6,i.rounding=1,n=n.div(new i(1).minus(n.times(n)).sqrt().plus(1)).atan(),i.precision=t,i.rounding=a,n.times(2)))},R.inverseTangent=R.atan=function(){var r,e,t,a,n,i,o,s,A,u=this,c=u.constructor,d=c.precision,l=c.rounding;if(u.isFinite()){if(u.isZero())return new c(u);if(u.abs().eq(1)&&d+4<=sr)return(o=it(c,d+4,l).times(.25)).s=u.s,o}else{if(!u.s)return new c(NaN);if(d+4<=sr)return(o=it(c,d+4,l).times(.5)).s=u.s,o}for(c.precision=s=d+10,c.rounding=1,r=t=Math.min(28,s/7+2|0);r;--r)u=u.div(u.times(u).plus(1).sqrt().plus(1));for(X=!1,e=Math.ceil(s/7),a=1,A=u.times(u),o=new c(u),n=u;r!==-1;)if(n=n.times(A),i=o.minus(n.div(a+=2)),n=n.times(A),(o=i.plus(n.div(a+=2))).d[e]!==void 0)for(r=e;o.d[r]===i.d[r]&&r--;);return t&&(o=o.times(2<<t-1)),X=!0,V(o,c.precision=d,c.rounding=l,!0)},R.isFinite=function(){return!!this.d},R.isInteger=R.isInt=function(){return!!this.d&&Re(this.e/7)>this.d.length-2},R.isNaN=function(){return!this.s},R.isNegative=R.isNeg=function(){return this.s<0},R.isPositive=R.isPos=function(){return this.s>0},R.isZero=function(){return!!this.d&&this.d[0]===0},R.lessThan=R.lt=function(r){return this.cmp(r)<0},R.lessThanOrEqualTo=R.lte=function(r){return this.cmp(r)<1},R.logarithm=R.log=function(r){var e,t,a,n,i,o,s,A,u=this,c=u.constructor,d=c.precision,l=c.rounding;if(r==null)r=new c(10),e=!0;else{if(t=(r=new c(r)).d,r.s<0||!t||!t[0]||r.eq(1))return new c(NaN);e=r.eq(10)}if(t=u.d,u.s<0||!t||!t[0]||u.eq(1))return new c(t&&!t[0]?-1/0:u.s!=1?NaN:t?0:1/0);if(e)if(t.length>1)i=!0;else{for(n=t[0];n%10==0;)n/=10;i=n!==1}if(X=!1,o=It(u,s=d+5),a=e?Ba(c,s+10):It(r,s),Xt((A=ce(o,a,s,1)).d,n=d,l))do if(o=It(u,s+=10),a=e?Ba(c,s+10):It(r,s),A=ce(o,a,s,1),!i){+Se(A.d).slice(n+1,n+15)+1==1e14&&(A=V(A,d+1,0));break}while(Xt(A.d,n+=10,l));return X=!0,V(A,d,l)},R.minus=R.sub=function(r){var e,t,a,n,i,o,s,A,u,c,d,l,h=this,b=h.constructor;if(r=new b(r),!h.d||!r.d)return h.s&&r.s?h.d?r.s=-r.s:r=new b(r.d||h.s!==r.s?h:NaN):r=new b(NaN),r;if(h.s!=r.s)return r.s=-r.s,h.plus(r);if(u=h.d,l=r.d,s=b.precision,A=b.rounding,!u[0]||!l[0]){if(l[0])r.s=-r.s;else{if(!u[0])return new b(A===3?-0:0);r=new b(h)}return X?V(r,s,A):r}if(t=Re(r.e/7),c=Re(h.e/7),u=u.slice(),i=c-t){for((d=i<0)?(e=u,i=-i,o=l.length):(e=l,t=c,o=u.length),i>(a=Math.max(Math.ceil(s/7),o)+2)&&(i=a,e.length=1),e.reverse(),a=i;a--;)e.push(0);e.reverse()}else{for((d=(a=u.length)<(o=l.length))&&(o=a),a=0;a<o;a++)if(u[a]!=l[a]){d=u[a]<l[a];break}i=0}for(d&&(e=u,u=l,l=e,r.s=-r.s),o=u.length,a=l.length-o;a>0;--a)u[o++]=0;for(a=l.length;a>i;){if(u[--a]<l[a]){for(n=a;n&&u[--n]===0;)u[n]=Ze-1;--u[n],u[a]+=Ze}u[a]-=l[a]}for(;u[--o]===0;)u.pop();for(;u[0]===0;u.shift())--t;return u[0]?(r.d=u,r.e=Ia(u,t),X?V(r,s,A):r):new b(A===3?-0:0)},R.modulo=R.mod=function(r){var e,t=this,a=t.constructor;return r=new a(r),!t.d||!r.s||r.d&&!r.d[0]?new a(NaN):!r.d||t.d&&!t.d[0]?V(new a(t),a.precision,a.rounding):(X=!1,a.modulo==9?(e=ce(t,r.abs(),0,3,1)).s*=r.s:e=ce(t,r,0,a.modulo,1),e=e.times(r),X=!0,t.minus(e))},R.naturalExponential=R.exp=function(){return Ar(this)},R.naturalLogarithm=R.ln=function(){return It(this)},R.negated=R.neg=function(){var r=new this.constructor(this);return r.s=-r.s,V(r)},R.plus=R.add=function(r){var e,t,a,n,i,o,s,A,u,c,d=this,l=d.constructor;if(r=new l(r),!d.d||!r.d)return d.s&&r.s?d.d||(r=new l(r.d||d.s===r.s?d:NaN)):r=new l(NaN),r;if(d.s!=r.s)return r.s=-r.s,d.minus(r);if(u=d.d,c=r.d,s=l.precision,A=l.rounding,!u[0]||!c[0])return c[0]||(r=new l(d)),X?V(r,s,A):r;if(i=Re(d.e/7),a=Re(r.e/7),u=u.slice(),n=i-a){for(n<0?(t=u,n=-n,o=c.length):(t=c,a=i,o=u.length),n>(o=(i=Math.ceil(s/7))>o?i+1:o+1)&&(n=o,t.length=1),t.reverse();n--;)t.push(0);t.reverse()}for((o=u.length)-(n=c.length)<0&&(n=o,t=c,c=u,u=t),e=0;n;)e=(u[--n]=u[n]+c[n]+e)/Ze|0,u[n]%=Ze;for(e&&(u.unshift(e),++a),o=u.length;u[--o]==0;)u.pop();return r.d=u,r.e=Ia(u,a),X?V(r,s,A):r},R.precision=R.sd=function(r){var e,t=this;if(r!==void 0&&r!==!!r&&r!==1&&r!==0)throw Error(Et+r);return t.d?(e=On(t.d),r&&t.e+1>e&&(e=t.e+1)):e=NaN,e},R.round=function(){var r=this,e=r.constructor;return V(new e(r),r.e+1,e.rounding)},R.sine=R.sin=function(){var r,e,t=this,a=t.constructor;return t.isFinite()?t.isZero()?new a(t):(r=a.precision,e=a.rounding,a.precision=r+Math.max(t.e,t.sd())+7,a.rounding=1,t=function(n,i){var o,s=i.d.length;if(s<3)return i.isZero()?i:Gt(n,2,i,i);o=(o=1.4*Math.sqrt(s))>16?16:0|o,i=i.times(1/ya(5,o)),i=Gt(n,2,i,i);for(var A,u=new n(5),c=new n(16),d=new n(20);o--;)A=i.times(i),i=i.times(u.plus(A.times(c.times(A).minus(d))));return i}(a,Kn(a,t)),a.precision=r,a.rounding=e,V(dt>2?t.neg():t,r,e,!0)):new a(NaN)},R.squareRoot=R.sqrt=function(){var r,e,t,a,n,i,o=this,s=o.d,A=o.e,u=o.s,c=o.constructor;if(u!==1||!s||!s[0])return new c(!u||u<0&&(!s||s[0])?NaN:s?o:1/0);for(X=!1,(u=Math.sqrt(+o))==0||u==1/0?(((e=Se(s)).length+A)%2==0&&(e+="0"),u=Math.sqrt(e),A=Re((A+1)/2)-(A<0||A%2),a=new c(e=u==1/0?"5e"+A:(e=u.toExponential()).slice(0,e.indexOf("e")+1)+A)):a=new c(u.toString()),t=(A=c.precision)+3;;)if(a=(i=a).plus(ce(o,i,t+2,1)).times(.5),Se(i.d).slice(0,t)===(e=Se(a.d)).slice(0,t)){if((e=e.slice(t-3,t+1))!="9999"&&(n||e!="4999")){+e&&(+e.slice(1)||e.charAt(0)!="5")||(V(a,A+1,1),r=!a.times(a).eq(o));break}if(!n&&(V(i,A+1,0),i.times(i).eq(o))){a=i;break}t+=4,n=1}return X=!0,V(a,A,c.rounding,r)},R.tangent=R.tan=function(){var r,e,t=this,a=t.constructor;return t.isFinite()?t.isZero()?new a(t):(r=a.precision,e=a.rounding,a.precision=r+10,a.rounding=1,(t=t.sin()).s=1,t=ce(t,new a(1).minus(t.times(t)).sqrt(),r+10,0),a.precision=r,a.rounding=e,V(dt==2||dt==4?t.neg():t,r,e,!0)):new a(NaN)},R.times=R.mul=function(r){var e,t,a,n,i,o,s,A,u,c=this,d=c.constructor,l=c.d,h=(r=new d(r)).d;if(r.s*=c.s,!(l&&l[0]&&h&&h[0]))return new d(!r.s||l&&!l[0]&&!h||h&&!h[0]&&!l?NaN:l&&h?0*r.s:r.s/0);for(t=Re(c.e/7)+Re(r.e/7),(A=l.length)<(u=h.length)&&(i=l,l=h,h=i,o=A,A=u,u=o),i=[],a=o=A+u;a--;)i.push(0);for(a=u;--a>=0;){for(e=0,n=A+a;n>a;)s=i[n]+h[a]*l[n-a-1]+e,i[n--]=s%Ze|0,e=s/Ze|0;i[n]=(i[n]+e)%Ze|0}for(;!i[--o];)i.pop();return e?++t:i.shift(),r.d=i,r.e=Ia(i,t),X?V(r,d.precision,d.rounding):r},R.toBinary=function(r,e){return cr(this,2,r,e)},R.toDecimalPlaces=R.toDP=function(r,e){var t=this,a=t.constructor;return t=new a(t),r===void 0?t:(He(r,0,mt),e===void 0?e=a.rounding:He(e,0,8),V(t,r+t.e+1,e))},R.toExponential=function(r,e){var t,a=this,n=a.constructor;return r===void 0?t=nt(a,!0):(He(r,0,mt),e===void 0?e=n.rounding:He(e,0,8),t=nt(a=V(new n(a),r+1,e),!0,r+1)),a.isNeg()&&!a.isZero()?"-"+t:t},R.toFixed=function(r,e){var t,a,n=this,i=n.constructor;return r===void 0?t=nt(n):(He(r,0,mt),e===void 0?e=i.rounding:He(e,0,8),t=nt(a=V(new i(n),r+n.e+1,e),!1,r+a.e+1)),n.isNeg()&&!n.isZero()?"-"+t:t},R.toFraction=function(r){var e,t,a,n,i,o,s,A,u,c,d,l,h=this,b=h.d,g=h.constructor;if(!b)return new g(h);if(u=t=new g(1),a=A=new g(0),o=(i=(e=new g(a)).e=On(b)-h.e-1)%7,e.d[0]=ke(10,o<0?7+o:o),r==null)r=i>0?e:u;else{if(!(s=new g(r)).isInt()||s.lt(u))throw Error(Et+s);r=s.gt(e)?i>0?e:u:s}for(X=!1,s=new g(Se(b)),c=g.precision,g.precision=i=7*b.length*2;d=ce(s,e,0,1,1),(n=t.plus(d.times(a))).cmp(r)!=1;)t=a,a=n,n=u,u=A.plus(d.times(n)),A=n,n=e,e=s.minus(d.times(n)),s=n;return n=ce(r.minus(t),a,0,1,1),A=A.plus(n.times(u)),t=t.plus(n.times(a)),A.s=u.s=h.s,l=ce(u,a,i,1).minus(h).abs().cmp(ce(A,t,i,1).minus(h).abs())<1?[u,a]:[A,t],g.precision=c,X=!0,l},R.toHexadecimal=R.toHex=function(r,e){return cr(this,16,r,e)},R.toNearest=function(r,e){var t=this,a=t.constructor;if(t=new a(t),r==null){if(!t.d)return t;r=new a(1),e=a.rounding}else{if(r=new a(r),e===void 0?e=a.rounding:He(e,0,8),!t.d)return r.s?t:r;if(!r.d)return r.s&&(r.s=t.s),r}return r.d[0]?(X=!1,t=ce(t,r,0,e,1).times(r),X=!0,V(t)):(r.s=t.s,t=r),t},R.toNumber=function(){return+this},R.toOctal=function(r,e){return cr(this,8,r,e)},R.toPower=R.pow=function(r){var e,t,a,n,i,o,s=this,A=s.constructor,u=+(r=new A(r));if(!(s.d&&r.d&&s.d[0]&&r.d[0]))return new A(ke(+s,u));if((s=new A(s)).eq(1))return s;if(a=A.precision,i=A.rounding,r.eq(1))return V(s,a,i);if((e=Re(r.e/7))>=r.d.length-1&&(t=u<0?-u:u)<=9007199254740991)return n=zn(A,s,t,a),r.s<0?new A(1).div(n):V(n,a,i);if((o=s.s)<0){if(e<r.d.length-1)return new A(NaN);if(1&r.d[e]||(o=1),s.e==0&&s.d[0]==1&&s.d.length==1)return s.s=o,s}return(e=(t=ke(+s,u))!=0&&isFinite(t)?new A(t+"").e:Re(u*(Math.log("0."+Se(s.d))/Math.LN10+s.e+1)))>A.maxE+1||e<A.minE-1?new A(e>0?o/0:0):(X=!1,A.rounding=s.s=1,t=Math.min(12,(e+"").length),(n=Ar(r.times(It(s,a+t)),a)).d&&Xt((n=V(n,a+5,1)).d,a,i)&&(e=a+10,+Se((n=V(Ar(r.times(It(s,e+t)),e),e+5,1)).d).slice(a+1,a+15)+1==1e14&&(n=V(n,a+1,0))),n.s=o,X=!0,A.rounding=i,V(n,a,i))},R.toPrecision=function(r,e){var t,a=this,n=a.constructor;return r===void 0?t=nt(a,a.e<=n.toExpNeg||a.e>=n.toExpPos):(He(r,1,mt),e===void 0?e=n.rounding:He(e,0,8),t=nt(a=V(new n(a),r,e),r<=a.e||a.e<=n.toExpNeg,r)),a.isNeg()&&!a.isZero()?"-"+t:t},R.toSignificantDigits=R.toSD=function(r,e){var t=this.constructor;return r===void 0?(r=t.precision,e=t.rounding):(He(r,1,mt),e===void 0?e=t.rounding:He(e,0,8)),V(new t(this),r,e)},R.toString=function(){var r=this,e=r.constructor,t=nt(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()&&!r.isZero()?"-"+t:t},R.truncated=R.trunc=function(){return V(new this.constructor(this),this.e+1,1)},R.valueOf=R.toJSON=function(){var r=this,e=r.constructor,t=nt(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()?"-"+t:t};var ce=function(){function r(a,n,i){var o,s=0,A=a.length;for(a=a.slice();A--;)o=a[A]*n+s,a[A]=o%i|0,s=o/i|0;return s&&a.unshift(s),a}function e(a,n,i,o){var s,A;if(i!=o)A=i>o?1:-1;else for(s=A=0;s<i;s++)if(a[s]!=n[s]){A=a[s]>n[s]?1:-1;break}return A}function t(a,n,i,o){for(var s=0;i--;)a[i]-=s,s=a[i]<n[i]?1:0,a[i]=s*o+a[i]-n[i];for(;!a[0]&&a.length>1;)a.shift()}return function(a,n,i,o,s,A){var u,c,d,l,h,b,g,f,m,p,C,I,x,y,F,D,Q,M,S,O,P=a.constructor,K=a.s==n.s?1:-1,J=a.d,q=n.d;if(!(J&&J[0]&&q&&q[0]))return new P(a.s&&n.s&&(J?!q||J[0]!=q[0]:q)?J&&J[0]==0||!q?0*K:K/0:NaN);for(A?(h=1,c=a.e-n.e):(A=Ze,h=7,c=Re(a.e/h)-Re(n.e/h)),S=q.length,Q=J.length,p=(m=new P(K)).d=[],d=0;q[d]==(J[d]||0);d++);if(q[d]>(J[d]||0)&&c--,i==null?(y=i=P.precision,o=P.rounding):y=s?i+(a.e-n.e)+1:i,y<0)p.push(1),b=!0;else{if(y=y/h+2|0,d=0,S==1){for(l=0,q=q[0],y++;(d<Q||l)&&y--;d++)F=l*A+(J[d]||0),p[d]=F/q|0,l=F%q|0;b=l||d<Q}else{for((l=A/(q[0]+1)|0)>1&&(q=r(q,l,A),J=r(J,l,A),S=q.length,Q=J.length),D=S,I=(C=J.slice(0,S)).length;I<S;)C[I++]=0;(O=q.slice()).unshift(0),M=q[0],q[1]>=A/2&&++M;do l=0,(u=e(q,C,S,I))<0?(x=C[0],S!=I&&(x=x*A+(C[1]||0)),(l=x/M|0)>1?(l>=A&&(l=A-1),(u=e(g=r(q,l,A),C,f=g.length,I=C.length))==1&&(l--,t(g,S<f?O:q,f,A))):(l==0&&(u=l=1),g=q.slice()),(f=g.length)<I&&g.unshift(0),t(C,g,I,A),u==-1&&(u=e(q,C,S,I=C.length))<1&&(l++,t(C,S<I?O:q,I,A)),I=C.length):u===0&&(l++,C=[0]),p[d++]=l,u&&C[0]?C[I++]=J[D]||0:(C=[J[D]],I=1);while((D++<Q||C[0]!==void 0)&&y--);b=C[0]!==void 0}p[0]||p.shift()}if(h==1)m.e=c,Un=b;else{for(d=1,l=p[0];l>=10;l/=10)d++;m.e=d+c*h-1,V(m,s?i+m.e+1:i,o,b)}return m}}();function V(r,e,t,a){var n,i,o,s,A,u,c,d,l,h=r.constructor;e:if(e!=null){if(!(d=r.d))return r;for(n=1,s=d[0];s>=10;s/=10)n++;if((i=e-n)<0)i+=7,o=e,A=(c=d[l=0])/ke(10,n-o-1)%10|0;else if((l=Math.ceil((i+1)/7))>=(s=d.length)){if(!a)break e;for(;s++<=l;)d.push(0);c=A=0,n=1,o=(i%=7)-7+1}else{for(c=s=d[l],n=1;s>=10;s/=10)n++;A=(o=(i%=7)-7+n)<0?0:c/ke(10,n-o-1)%10|0}if(a=a||e<0||d[l+1]!==void 0||(o<0?c:c%ke(10,n-o-1)),u=t<4?(A||a)&&(t==0||t==(r.s<0?3:2)):A>5||A==5&&(t==4||a||t==6&&(i>0?o>0?c/ke(10,n-o):0:d[l-1])%10&1||t==(r.s<0?8:7)),e<1||!d[0])return d.length=0,u?(e-=r.e+1,d[0]=ke(10,(7-e%7)%7),r.e=-e||0):d[0]=r.e=0,r;if(i==0?(d.length=l,s=1,l--):(d.length=l+1,s=ke(10,7-i),d[l]=o>0?(c/ke(10,n-o)%ke(10,o)|0)*s:0),u)for(;;){if(l==0){for(i=1,o=d[0];o>=10;o/=10)i++;for(o=d[0]+=s,s=1;o>=10;o/=10)s++;i!=s&&(r.e++,d[0]==Ze&&(d[0]=1));break}if(d[l]+=s,d[l]!=Ze)break;d[l--]=0,s=1}for(i=d.length;d[--i]===0;)d.pop()}return X&&(r.e>h.maxE?(r.d=null,r.e=NaN):r.e<h.minE&&(r.e=0,r.d=[0])),r}function nt(r,e,t){if(!r.isFinite())return Jn(r);var a,n=r.e,i=Se(r.d),o=i.length;return e?(t&&(a=t-o)>0?i=i.charAt(0)+"."+i.slice(1)+Ct(a):o>1&&(i=i.charAt(0)+"."+i.slice(1)),i=i+(r.e<0?"e":"e+")+r.e):n<0?(i="0."+Ct(-n-1)+i,t&&(a=t-o)>0&&(i+=Ct(a))):n>=o?(i+=Ct(n+1-o),t&&(a=t-n-1)>0&&(i=i+"."+Ct(a))):((a=n+1)<o&&(i=i.slice(0,a)+"."+i.slice(a)),t&&(a=t-o)>0&&(n+1===o&&(i+="."),i+=Ct(a))),i}function Ia(r,e){var t=r[0];for(e*=7;t>=10;t/=10)e++;return e}function Ba(r,e,t){if(e>Qs)throw X=!0,t&&(r.precision=t),Error(Ln);return V(new r(pa),e,1,!0)}function it(r,e,t){if(e>sr)throw Error(Ln);return V(new r(ma),e,t,!0)}function On(r){var e=r.length-1,t=7*e+1;if(e=r[e]){for(;e%10==0;e/=10)t--;for(e=r[0];e>=10;e/=10)t++}return t}function Ct(r){for(var e="";r--;)e+="0";return e}function zn(r,e,t,a){var n,i=new r(1),o=Math.ceil(a/7+4);for(X=!1;;){if(t%2&&Vn((i=i.times(e)).d,o)&&(n=!0),(t=Re(t/2))===0){t=i.d.length-1,n&&i.d[t]===0&&++i.d[t];break}Vn((e=e.times(e)).d,o)}return X=!0,i}function Pn(r){return 1&r.d[r.d.length-1]}function qn(r,e,t){for(var a,n,i=new r(e[0]),o=0;++o<e.length;){if(!(n=new r(e[o])).s){i=n;break}((a=i.cmp(n))===t||a===0&&i.s===t)&&(i=n)}return i}function Ar(r,e){var t,a,n,i,o,s,A,u=0,c=0,d=0,l=r.constructor,h=l.rounding,b=l.precision;if(!r.d||!r.d[0]||r.e>17)return new l(r.d?r.d[0]?r.s<0?0:1/0:1:r.s?r.s<0?0:r:NaN);for(e==null?(X=!1,A=b):A=e,s=new l(.03125);r.e>-2;)r=r.times(s),d+=5;for(A+=a=Math.log(ke(2,d))/Math.LN10*2+5|0,t=i=o=new l(1),l.precision=A;;){if(i=V(i.times(r),A,1),t=t.times(++c),Se((s=o.plus(ce(i,t,A,1))).d).slice(0,A)===Se(o.d).slice(0,A)){for(n=d;n--;)o=V(o.times(o),A,1);if(e!=null)return l.precision=b,o;if(!(u<3&&Xt(o.d,A-a,h,u)))return V(o,l.precision=b,h,X=!0);l.precision=A+=10,t=i=s=new l(1),c=0,u++}o=s}}function It(r,e){var t,a,n,i,o,s,A,u,c,d,l,h=1,b=r,g=b.d,f=b.constructor,m=f.rounding,p=f.precision;if(b.s<0||!g||!g[0]||!b.e&&g[0]==1&&g.length==1)return new f(g&&!g[0]?-1/0:b.s!=1?NaN:g?0:b);if(e==null?(X=!1,c=p):c=e,f.precision=c+=10,a=(t=Se(g)).charAt(0),!(Math.abs(i=b.e)<15e14))return u=Ba(f,c+2,p).times(i+""),b=It(new f(a+"."+t.slice(1)),c-10).plus(u),f.precision=p,e==null?V(b,p,m,X=!0):b;for(;a<7&&a!=1||a==1&&t.charAt(1)>3;)a=(t=Se((b=b.times(r)).d)).charAt(0),h++;for(i=b.e,a>1?(b=new f("0."+t),i++):b=new f(a+"."+t.slice(1)),d=b,A=o=b=ce(b.minus(1),b.plus(1),c,1),l=V(b.times(b),c,1),n=3;;){if(o=V(o.times(l),c,1),Se((u=A.plus(ce(o,new f(n),c,1))).d).slice(0,c)===Se(A.d).slice(0,c)){if(A=A.times(2),i!==0&&(A=A.plus(Ba(f,c+2,p).times(i+""))),A=ce(A,new f(h),c,1),e!=null)return f.precision=p,A;if(!Xt(A.d,c-10,m,s))return V(A,f.precision=p,m,X=!0);f.precision=c+=10,u=o=b=ce(d.minus(1),d.plus(1),c,1),l=V(b.times(b),c,1),n=s=1}A=u,n+=2}}function Jn(r){return String(r.s*r.s/0)}function Da(r,e){var t,a,n;for((t=e.indexOf("."))>-1&&(e=e.replace(".","")),(a=e.search(/e/i))>0?(t<0&&(t=a),t+=+e.slice(a+1),e=e.substring(0,a)):t<0&&(t=e.length),a=0;e.charCodeAt(a)===48;a++);for(n=e.length;e.charCodeAt(n-1)===48;--n);if(e=e.slice(a,n)){if(n-=a,r.e=t=t-a-1,r.d=[],a=(t+1)%7,t<0&&(a+=7),a<n){for(a&&r.d.push(+e.slice(0,a)),n-=7;a<n;)r.d.push(+e.slice(a,a+=7));a=7-(e=e.slice(a)).length}else a-=n;for(;a--;)e+="0";r.d.push(+e),X&&(r.e>r.constructor.maxE?(r.d=null,r.e=NaN):r.e<r.constructor.minE&&(r.e=0,r.d=[0]))}else r.e=0,r.d=[0];return r}function vs(r,e){var t,a,n,i,o,s,A,u,c;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),Hn.test(e))return Da(r,e)}else if(e==="Infinity"||e==="NaN")return+e||(r.s=NaN),r.e=NaN,r.d=null,r;if(xs.test(e))t=16,e=e.toLowerCase();else if(ws.test(e))t=2;else{if(!Fs.test(e))throw Error(Et+e);t=8}for((i=e.search(/p/i))>0?(A=+e.slice(i+1),e=e.substring(2,i)):e=e.slice(2),o=(i=e.indexOf("."))>=0,a=r.constructor,o&&(i=(s=(e=e.replace(".","")).length)-i,n=zn(a,new a(t),i,2*i)),i=c=(u=Ca(e,t,Ze)).length-1;u[i]===0;--i)u.pop();return i<0?new a(0*r.s):(r.e=Ia(u,c),r.d=u,X=!1,o&&(r=ce(r,n,4*s)),A&&(r=r.times(Math.abs(A)<54?ke(2,A):_t.pow(2,A))),X=!0,r)}function Gt(r,e,t,a,n){var i,o,s,A,u=r.precision,c=Math.ceil(u/7);for(X=!1,A=t.times(t),s=new r(a);;){if(o=ce(s.times(A),new r(e++*e++),u,1),s=n?a.plus(o):a.minus(o),a=ce(o.times(A),new r(e++*e++),u,1),(o=s.plus(a)).d[c]!==void 0){for(i=c;o.d[i]===s.d[i]&&i--;);if(i==-1)break}i=s,s=a,a=o,o=i}return X=!0,o.d.length=c+1,o}function ya(r,e){for(var t=r;--e;)t*=r;return t}function Kn(r,e){var t,a=e.s<0,n=it(r,r.precision,1),i=n.times(.5);if((e=e.abs()).lte(i))return dt=a?4:1,e;if((t=e.divToInt(n)).isZero())dt=a?3:2;else{if((e=e.minus(t.times(n))).lte(i))return dt=Pn(t)?a?2:3:a?4:1,e;dt=Pn(t)?a?1:4:a?3:2}return e.minus(n).abs()}function cr(r,e,t,a){var n,i,o,s,A,u,c,d,l,h=r.constructor,b=t!==void 0;if(b?(He(t,1,mt),a===void 0?a=h.rounding:He(a,0,8)):(t=h.precision,a=h.rounding),r.isFinite()){for(b?(n=2,e==16?t=4*t-3:e==8&&(t=3*t-2)):n=e,(o=(c=nt(r)).indexOf("."))>=0&&(c=c.replace(".",""),(l=new h(1)).e=c.length-o,l.d=Ca(nt(l),10,n),l.e=l.d.length),i=A=(d=Ca(c,10,n)).length;d[--A]==0;)d.pop();if(d[0]){if(o<0?i--:((r=new h(r)).d=d,r.e=i,d=(r=ce(r,l,t,a,0,n)).d,i=r.e,u=Un),o=d[t],s=n/2,u=u||d[t+1]!==void 0,u=a<4?(o!==void 0||u)&&(a===0||a===(r.s<0?3:2)):o>s||o===s&&(a===4||u||a===6&&1&d[t-1]||a===(r.s<0?8:7)),d.length=t,u)for(;++d[--t]>n-1;)d[t]=0,t||(++i,d.unshift(1));for(A=d.length;!d[A-1];--A);for(o=0,c="";o<A;o++)c+=ir.charAt(d[o]);if(b){if(A>1)if(e==16||e==8){for(o=e==16?4:3,--A;A%o;A++)c+="0";for(A=(d=Ca(c,n,e)).length;!d[A-1];--A);for(o=1,c="1.";o<A;o++)c+=ir.charAt(d[o])}else c=c.charAt(0)+"."+c.slice(1);c=c+(i<0?"p":"p+")+i}else if(i<0){for(;++i;)c="0"+c;c="0."+c}else if(++i>A)for(i-=A;i--;)c+="0";else i<A&&(c=c.slice(0,i)+"."+c.slice(i))}else c=b?"0p+0":"0";c=(e==16?"0x":e==2?"0b":e==8?"0o":"")+c}else c=Jn(r);return r.s<0?"-"+c:c}function Vn(r,e){if(r.length>e)return r.length=e,!0}function ks(r){return new this(r).abs()}function js(r){return new this(r).acos()}function Ms(r){return new this(r).acosh()}function Ss(r,e){return new this(r).plus(e)}function Rs(r){return new this(r).asin()}function Ts(r){return new this(r).asinh()}function Ns(r){return new this(r).atan()}function Us(r){return new this(r).atanh()}function Ls(r,e){r=new this(r),e=new this(e);var t,a=this.precision,n=this.rounding,i=a+4;return r.s&&e.s?r.d||e.d?!e.d||r.isZero()?(t=e.s<0?it(this,a,n):new this(0)).s=r.s:!r.d||e.isZero()?(t=it(this,i,1).times(.5)).s=r.s:e.s<0?(this.precision=i,this.rounding=1,t=this.atan(ce(r,e,i,1)),e=it(this,i,1),this.precision=a,this.rounding=n,t=r.s<0?t.minus(e):t.plus(e)):t=this.atan(ce(r,e,i,1)):(t=it(this,i,1).times(e.s>0?.25:.75)).s=r.s:t=new this(NaN),t}function Gs(r){return new this(r).cbrt()}function _s(r){return V(r=new this(r),r.e+1,2)}function Hs(r,e,t){return new this(r).clamp(e,t)}function Os(r){if(!r||typeof r!="object")throw Error(Ea+"Object expected");var e,t,a,n=r.defaults===!0,i=["precision",1,mt,"rounding",0,8,"toExpNeg",-9e15,0,"toExpPos",0,nr,"maxE",0,nr,"minE",-9e15,0,"modulo",0,9];for(e=0;e<i.length;e+=3)if(t=i[e],n&&(this[t]=or[t]),(a=r[t])!==void 0){if(!(Re(a)===a&&a>=i[e+1]&&a<=i[e+2]))throw Error(Et+t+": "+a);this[t]=a}if(t="crypto",n&&(this[t]=or[t]),(a=r[t])!==void 0){if(a!==!0&&a!==!1&&a!==0&&a!==1)throw Error(Et+t+": "+a);if(a){if(typeof crypto>"u"||!crypto||!crypto.getRandomValues&&!crypto.randomBytes)throw Error(Gn);this[t]=!0}else this[t]=!1}return this}function zs(r){return new this(r).cos()}function Ps(r){return new this(r).cosh()}function qs(r,e){return new this(r).div(e)}function Js(r){return new this(r).exp()}function Ks(r){return V(r=new this(r),r.e+1,3)}function Vs(){var r,e,t=new this(0);for(X=!1,r=0;r<arguments.length;)if((e=new this(arguments[r++])).d)t.d&&(t=t.plus(e.times(e)));else{if(e.s)return X=!0,new this(1/0);t=e}return X=!0,t.sqrt()}function Wn(r){return r instanceof _t||r&&r.toStringTag===_n||!1}function Ws(r){return new this(r).ln()}function Ys(r,e){return new this(r).log(e)}function Xs(r){return new this(r).log(2)}function Zs(r){return new this(r).log(10)}function $s(){return qn(this,arguments,-1)}function eA(){return qn(this,arguments,1)}function tA(r,e){return new this(r).mod(e)}function aA(r,e){return new this(r).mul(e)}function rA(r,e){return new this(r).pow(e)}function nA(r){var e,t,a,n,i=0,o=new this(1),s=[];if(r===void 0?r=this.precision:He(r,1,mt),a=Math.ceil(r/7),this.crypto)if(crypto.getRandomValues)for(e=crypto.getRandomValues(new Uint32Array(a));i<a;)(n=e[i])>=429e7?e[i]=crypto.getRandomValues(new Uint32Array(1))[0]:s[i++]=n%1e7;else{if(!crypto.randomBytes)throw Error(Gn);for(e=crypto.randomBytes(a*=4);i<a;)(n=e[i]+(e[i+1]<<8)+(e[i+2]<<16)+((127&e[i+3])<<24))>=214e7?crypto.randomBytes(4).copy(e,i):(s.push(n%1e7),i+=4);i=a/4}else for(;i<a;)s[i++]=1e7*Math.random()|0;for(r%=7,(a=s[--i])&&r&&(n=ke(10,7-r),s[i]=(a/n|0)*n);s[i]===0;i--)s.pop();if(i<0)t=0,s=[0];else{for(t=-1;s[0]===0;t-=7)s.shift();for(a=1,n=s[0];n>=10;n/=10)a++;a<7&&(t-=7-a)}return o.e=t,o.d=s,o}function iA(r){return V(r=new this(r),r.e+1,this.rounding)}function oA(r){return(r=new this(r)).d?r.d[0]?r.s:0*r.s:r.s||NaN}function sA(r){return new this(r).sin()}function AA(r){return new this(r).sinh()}function cA(r){return new this(r).sqrt()}function uA(r,e){return new this(r).sub(e)}function dA(){var r=0,e=arguments,t=new this(e[r]);for(X=!1;t.s&&++r<e.length;)t=t.plus(e[r]);return X=!0,V(t,this.precision,this.rounding)}function hA(r){return new this(r).tan()}function bA(r){return new this(r).tanh()}function lA(r){return V(r=new this(r),r.e+1,1)}R[Symbol.for("nodejs.util.inspect.custom")]=R.toString,R[Symbol.toStringTag]="Decimal";var _t=R.constructor=function r(e){var t,a,n;function i(o){var s,A,u,c=this;if(!(c instanceof i))return new i(o);if(c.constructor=i,Wn(o))return c.s=o.s,void(X?!o.d||o.e>i.maxE?(c.e=NaN,c.d=null):o.e<i.minE?(c.e=0,c.d=[0]):(c.e=o.e,c.d=o.d.slice()):(c.e=o.e,c.d=o.d?o.d.slice():o.d));if((u=typeof o)=="number"){if(o===0)return c.s=1/o<0?-1:1,c.e=0,void(c.d=[0]);if(o<0?(o=-o,c.s=-1):c.s=1,o===~~o&&o<1e7){for(s=0,A=o;A>=10;A/=10)s++;return void(X?s>i.maxE?(c.e=NaN,c.d=null):s<i.minE?(c.e=0,c.d=[0]):(c.e=s,c.d=[o]):(c.e=s,c.d=[o]))}return 0*o!=0?(o||(c.s=NaN),c.e=NaN,void(c.d=null)):Da(c,o.toString())}if(u==="string")return(A=o.charCodeAt(0))===45?(o=o.slice(1),c.s=-1):(A===43&&(o=o.slice(1)),c.s=1),Hn.test(o)?Da(c,o):vs(c,o);if(u==="bigint")return o<0?(o=-o,c.s=-1):c.s=1,Da(c,o.toString());throw Error(Et+o)}if(i.prototype=R,i.ROUND_UP=0,i.ROUND_DOWN=1,i.ROUND_CEIL=2,i.ROUND_FLOOR=3,i.ROUND_HALF_UP=4,i.ROUND_HALF_DOWN=5,i.ROUND_HALF_EVEN=6,i.ROUND_HALF_CEIL=7,i.ROUND_HALF_FLOOR=8,i.EUCLID=9,i.config=i.set=Os,i.clone=r,i.isDecimal=Wn,i.abs=ks,i.acos=js,i.acosh=Ms,i.add=Ss,i.asin=Rs,i.asinh=Ts,i.atan=Ns,i.atanh=Us,i.atan2=Ls,i.cbrt=Gs,i.ceil=_s,i.clamp=Hs,i.cos=zs,i.cosh=Ps,i.div=qs,i.exp=Js,i.floor=Ks,i.hypot=Vs,i.ln=Ws,i.log=Ys,i.log10=Zs,i.log2=Xs,i.max=$s,i.min=eA,i.mod=tA,i.mul=aA,i.pow=rA,i.random=nA,i.round=iA,i.sign=oA,i.sin=sA,i.sinh=AA,i.sqrt=cA,i.sub=uA,i.sum=dA,i.tan=hA,i.tanh=bA,i.trunc=lA,e===void 0&&(e={}),e&&e.defaults!==!0)for(n=["precision","rounding","toExpNeg","toExpPos","maxE","minE","modulo","crypto"],t=0;t<n.length;)e.hasOwnProperty(a=n[t++])||(e[a]=this[a]);return i.config(e),i}(or);pa=new _t(pa),ma=new _t(ma);var gA=ne("BigNumber",["?on","config"],r=>{var{on:e,config:t}=r,a=_t.clone({precision:t.precision,modulo:_t.EUCLID});return a.prototype=Object.create(a.prototype),a.prototype.type="BigNumber",a.prototype.isBigNumber=!0,a.prototype.toJSON=function(){return{mathjs:"BigNumber",value:this.toString()}},a.fromJSON=function(n){return new a(n.value)},e&&e("config",function(n,i){n.precision!==i.precision&&a.config({precision:n.precision})}),a},{isClass:!0});const Te=Math.cosh||function(r){return Math.abs(r)<1e-9?1-r:.5*(Math.exp(r)+Math.exp(-r))},We=Math.sinh||function(r){return Math.abs(r)<1e-9?r:.5*(Math.exp(r)-Math.exp(-r))},ur=function(r,e){return(r=Math.abs(r))<(e=Math.abs(e))&&([r,e]=[e,r]),r<1e8?Math.sqrt(r*r+e*e):(e/=r,r*Math.sqrt(1+e*e))},Ht=function(){throw SyntaxError("Invalid Param")};function dr(r,e){const t=Math.abs(r),a=Math.abs(e);return r===0?Math.log(a):e===0?Math.log(t):t<3e3&&a<3e3?.5*Math.log(r*r+e*e):(r*=.5,e*=.5,.5*Math.log(r*r+e*e)+Math.LN2)}const fA={re:0,im:0},Ft=function(r,e){const t=fA;if(r==null)t.re=t.im=0;else if(e!==void 0)t.re=r,t.im=e;else switch(typeof r){case"object":if("im"in r&&"re"in r)t.re=r.re,t.im=r.im;else if("abs"in r&&"arg"in r){if(!isFinite(r.abs)&&isFinite(r.arg))return k.INFINITY;t.re=r.abs*Math.cos(r.arg),t.im=r.abs*Math.sin(r.arg)}else if("r"in r&&"phi"in r){if(!isFinite(r.r)&&isFinite(r.phi))return k.INFINITY;t.re=r.r*Math.cos(r.phi),t.im=r.r*Math.sin(r.phi)}else r.length===2?(t.re=r[0],t.im=r[1]):Ht();break;case"string":t.im=t.re=0;const a=r.replace(/_/g,"").match(/\d+\.?\d*e[+-]?\d+|\d+\.?\d*|\.\d+|./g);let n=1,i=0;a===null&&Ht();for(let o=0;o<a.length;o++){const s=a[o];s===" "||s===" "||s===`
|
|
22
|
-
`||(s==="+"?n++:s==="-"?i++:s==="i"||s==="I"?(n+i===0&&Ht(),a[o+1]===" "||isNaN(a[o+1])?t.im+=parseFloat((i%2?"-":"")+"1"):(t.im+=parseFloat((i%2?"-":"")+a[o+1]),o++),n=i=0):((n+i===0||isNaN(s))&&Ht(),a[o+1]==="i"||a[o+1]==="I"?(t.im+=parseFloat((i%2?"-":"")+s),o++):t.re+=parseFloat((i%2?"-":"")+s),n=i=0))}n+i>0&&Ht();break;case"number":t.im=0,t.re=r;break;default:Ht()}return isNaN(t.re)||isNaN(t.im),t};function k(r,e){if(!(this instanceof k))return new k(r,e);const t=Ft(r,e);this.re=t.re,this.im=t.im}k.prototype={re:0,im:0,sign:function(){const r=ur(this.re,this.im);return new k(this.re/r,this.im/r)},add:function(r,e){const t=Ft(r,e),a=this.isInfinite(),n=!(isFinite(t.re)&&isFinite(t.im));return a||n?a&&n?k.NAN:k.INFINITY:new k(this.re+t.re,this.im+t.im)},sub:function(r,e){const t=Ft(r,e),a=this.isInfinite(),n=!(isFinite(t.re)&&isFinite(t.im));return a||n?a&&n?k.NAN:k.INFINITY:new k(this.re-t.re,this.im-t.im)},mul:function(r,e){const t=Ft(r,e),a=this.isInfinite(),n=!(isFinite(t.re)&&isFinite(t.im)),i=this.re===0&&this.im===0,o=t.re===0&&t.im===0;return a&&o||n&&i?k.NAN:a||n?k.INFINITY:t.im===0&&this.im===0?new k(this.re*t.re,0):new k(this.re*t.re-this.im*t.im,this.re*t.im+this.im*t.re)},div:function(r,e){const t=Ft(r,e),a=this.isInfinite(),n=!(isFinite(t.re)&&isFinite(t.im)),i=this.re===0&&this.im===0,o=t.re===0&&t.im===0;if(i&&o||a&&n)return k.NAN;if(o||a)return k.INFINITY;if(i||n)return k.ZERO;if(t.im===0)return new k(this.re/t.re,this.im/t.re);if(Math.abs(t.re)<Math.abs(t.im)){const s=t.re/t.im,A=t.re*s+t.im;return new k((this.re*s+this.im)/A,(this.im*s-this.re)/A)}{const s=t.im/t.re,A=t.im*s+t.re;return new k((this.re+this.im*s)/A,(this.im-this.re*s)/A)}},pow:function(r,e){const t=Ft(r,e),a=this.re===0&&this.im===0;if(t.re===0&&t.im===0)return k.ONE;if(t.im===0){if(this.im===0&&this.re>0)return new k(Math.pow(this.re,t.re),0);if(this.re===0)switch((t.re%4+4)%4){case 0:return new k(Math.pow(this.im,t.re),0);case 1:return new k(0,Math.pow(this.im,t.re));case 2:return new k(-Math.pow(this.im,t.re),0);case 3:return new k(0,-Math.pow(this.im,t.re))}}if(a&&t.re>0)return k.ZERO;const n=Math.atan2(this.im,this.re),i=dr(this.re,this.im);let o=Math.exp(t.re*i-t.im*n),s=t.im*i+t.re*n;return new k(o*Math.cos(s),o*Math.sin(s))},sqrt:function(){const r=this.re,e=this.im;if(e===0)return r>=0?new k(Math.sqrt(r),0):new k(0,Math.sqrt(-r));const t=ur(r,e);let a=Math.sqrt(.5*(t+Math.abs(r))),n=Math.abs(e)/(2*a);return r>=0?new k(a,e<0?-n:n):new k(n,e<0?-a:a)},exp:function(){const r=Math.exp(this.re);return this.im===0?new k(r,0):new k(r*Math.cos(this.im),r*Math.sin(this.im))},expm1:function(){const r=this.re,e=this.im;return new k(Math.expm1(r)*Math.cos(e)+function(t){const a=Math.PI/4;if(-a>t||t>a)return Math.cos(t)-1;const n=t*t;return n*(n*(n*(n*(n*(n*(n*(n/20922789888e3-1/87178291200)+1/479001600)-1/3628800)+1/40320)-1/720)+1/24)-.5)}(e),Math.exp(r)*Math.sin(e))},log:function(){const r=this.re,e=this.im;return e===0&&r>0?new k(Math.log(r),0):new k(dr(r,e),Math.atan2(e,r))},abs:function(){return ur(this.re,this.im)},arg:function(){return Math.atan2(this.im,this.re)},sin:function(){const r=this.re,e=this.im;return new k(Math.sin(r)*Te(e),Math.cos(r)*We(e))},cos:function(){const r=this.re,e=this.im;return new k(Math.cos(r)*Te(e),-Math.sin(r)*We(e))},tan:function(){const r=2*this.re,e=2*this.im,t=Math.cos(r)+Te(e);return new k(Math.sin(r)/t,We(e)/t)},cot:function(){const r=2*this.re,e=2*this.im,t=Math.cos(r)-Te(e);return new k(-Math.sin(r)/t,We(e)/t)},sec:function(){const r=this.re,e=this.im,t=.5*Te(2*e)+.5*Math.cos(2*r);return new k(Math.cos(r)*Te(e)/t,Math.sin(r)*We(e)/t)},csc:function(){const r=this.re,e=this.im,t=.5*Te(2*e)-.5*Math.cos(2*r);return new k(Math.sin(r)*Te(e)/t,-Math.cos(r)*We(e)/t)},asin:function(){const r=this.re,e=this.im,t=new k(e*e-r*r+1,-2*r*e).sqrt(),a=new k(t.re-e,t.im+r).log();return new k(a.im,-a.re)},acos:function(){const r=this.re,e=this.im,t=new k(e*e-r*r+1,-2*r*e).sqrt(),a=new k(t.re-e,t.im+r).log();return new k(Math.PI/2-a.im,a.re)},atan:function(){const r=this.re,e=this.im;if(r===0){if(e===1)return new k(0,1/0);if(e===-1)return new k(0,-1/0)}const t=r*r+(1-e)*(1-e),a=new k((1-e*e-r*r)/t,-2*r/t).log();return new k(-.5*a.im,.5*a.re)},acot:function(){const r=this.re,e=this.im;if(e===0)return new k(Math.atan2(1,r),0);const t=r*r+e*e;return t!==0?new k(r/t,-e/t).atan():new k(r!==0?r/0:0,e!==0?-e/0:0).atan()},asec:function(){const r=this.re,e=this.im;if(r===0&&e===0)return new k(0,1/0);const t=r*r+e*e;return t!==0?new k(r/t,-e/t).acos():new k(r!==0?r/0:0,e!==0?-e/0:0).acos()},acsc:function(){const r=this.re,e=this.im;if(r===0&&e===0)return new k(Math.PI/2,1/0);const t=r*r+e*e;return t!==0?new k(r/t,-e/t).asin():new k(r!==0?r/0:0,e!==0?-e/0:0).asin()},sinh:function(){const r=this.re,e=this.im;return new k(We(r)*Math.cos(e),Te(r)*Math.sin(e))},cosh:function(){const r=this.re,e=this.im;return new k(Te(r)*Math.cos(e),We(r)*Math.sin(e))},tanh:function(){const r=2*this.re,e=2*this.im,t=Te(r)+Math.cos(e);return new k(We(r)/t,Math.sin(e)/t)},coth:function(){const r=2*this.re,e=2*this.im,t=Te(r)-Math.cos(e);return new k(We(r)/t,-Math.sin(e)/t)},csch:function(){const r=this.re,e=this.im,t=Math.cos(2*e)-Te(2*r);return new k(-2*We(r)*Math.cos(e)/t,2*Te(r)*Math.sin(e)/t)},sech:function(){const r=this.re,e=this.im,t=Math.cos(2*e)+Te(2*r);return new k(2*Te(r)*Math.cos(e)/t,-2*We(r)*Math.sin(e)/t)},asinh:function(){let r=this.im;this.im=-this.re,this.re=r;const e=this.asin();return this.re=-this.im,this.im=r,r=e.re,e.re=-e.im,e.im=r,e},acosh:function(){const r=this.acos();if(r.im<=0){const e=r.re;r.re=-r.im,r.im=e}else{const e=r.im;r.im=-r.re,r.re=e}return r},atanh:function(){const r=this.re,e=this.im,t=r>1&&e===0,a=1-r,n=1+r,i=a*a+e*e,o=i!==0?new k((n*a-e*e)/i,(e*a+n*e)/i):new k(r!==-1?r/0:0,e!==0?e/0:0),s=o.re;return o.re=dr(o.re,o.im)/2,o.im=Math.atan2(o.im,s)/2,t&&(o.im=-o.im),o},acoth:function(){const r=this.re,e=this.im;if(r===0&&e===0)return new k(0,Math.PI/2);const t=r*r+e*e;return t!==0?new k(r/t,-e/t).atanh():new k(r!==0?r/0:0,e!==0?-e/0:0).atanh()},acsch:function(){const r=this.re,e=this.im;if(e===0)return new k(r!==0?Math.log(r+Math.sqrt(r*r+1)):1/0,0);const t=r*r+e*e;return t!==0?new k(r/t,-e/t).asinh():new k(r!==0?r/0:0,e!==0?-e/0:0).asinh()},asech:function(){const r=this.re,e=this.im;if(this.isZero())return k.INFINITY;const t=r*r+e*e;return t!==0?new k(r/t,-e/t).acosh():new k(r!==0?r/0:0,e!==0?-e/0:0).acosh()},inverse:function(){if(this.isZero())return k.INFINITY;if(this.isInfinite())return k.ZERO;const r=this.re,e=this.im,t=r*r+e*e;return new k(r/t,-e/t)},conjugate:function(){return new k(this.re,-this.im)},neg:function(){return new k(-this.re,-this.im)},ceil:function(r){return r=Math.pow(10,r||0),new k(Math.ceil(this.re*r)/r,Math.ceil(this.im*r)/r)},floor:function(r){return r=Math.pow(10,r||0),new k(Math.floor(this.re*r)/r,Math.floor(this.im*r)/r)},round:function(r){return r=Math.pow(10,r||0),new k(Math.round(this.re*r)/r,Math.round(this.im*r)/r)},equals:function(r,e){const t=Ft(r,e);return Math.abs(t.re-this.re)<=k.EPSILON&&Math.abs(t.im-this.im)<=k.EPSILON},clone:function(){return new k(this.re,this.im)},toString:function(){let r=this.re,e=this.im,t="";return this.isNaN()?"NaN":this.isInfinite()?"Infinity":(Math.abs(r)<k.EPSILON&&(r=0),Math.abs(e)<k.EPSILON&&(e=0),e===0?t+r:(r!==0?(t+=r,t+=" ",e<0?(e=-e,t+="-"):t+="+",t+=" "):e<0&&(e=-e,t+="-"),e!==1&&(t+=e),t+"i"))},toVector:function(){return[this.re,this.im]},valueOf:function(){return this.im===0?this.re:null},isNaN:function(){return isNaN(this.re)||isNaN(this.im)},isZero:function(){return this.im===0&&this.re===0},isFinite:function(){return isFinite(this.re)&&isFinite(this.im)},isInfinite:function(){return!this.isFinite()}},k.ZERO=new k(0,0),k.ONE=new k(1,0),k.I=new k(0,1),k.PI=new k(Math.PI,0),k.E=new k(Math.E,0),k.INFINITY=new k(1/0,1/0),k.NAN=new k(NaN,NaN),k.EPSILON=1e-15;var pA=ne("Complex",[],()=>(Object.defineProperty(k,"name",{value:"Complex"}),k.prototype.constructor=k,k.prototype.type="Complex",k.prototype.isComplex=!0,k.prototype.toJSON=function(){return{mathjs:"Complex",re:this.re,im:this.im}},k.prototype.toPolar=function(){return{r:this.abs(),phi:this.arg()}},k.prototype.format=function(r){var e=this.im,t=this.re,a=rr(this.re,r),n=rr(this.im,r),i=le(r)?r:r?r.precision:null;if(i!==null){var o=Math.pow(10,-i);Math.abs(t/e)<o&&(t=0),Math.abs(e/t)<o&&(e=0)}return e===0?a:t===0?e===1?"i":e===-1?"-i":n+"i":e<0?e===-1?a+" - i":a+" - "+n.substring(1)+"i":e===1?a+" + i":a+" + "+n+"i"},k.fromPolar=function(r){switch(arguments.length){case 1:var e=arguments[0];if(typeof e=="object")return k(e);throw new TypeError("Input has to be an object with r and phi keys.");case 2:var t=arguments[0],a=arguments[1];if(le(t)){if(vn(a)&&a.hasBase("ANGLE")&&(a=a.toNumber("rad")),le(a))return new k({r:t,phi:a});throw new TypeError("Phi is not a number nor an angle unit.")}throw new TypeError("Radius r is not a number.");default:throw new SyntaxError("Wrong number of arguments in function fromPolar")}},k.prototype.valueOf=k.prototype.toString,k.fromJSON=function(r){return new k(r)},k.compare=function(r,e){return r.re>e.re?1:r.re<e.re?-1:r.im>e.im?1:r.im<e.im?-1:0},k),{isClass:!0});typeof BigInt>"u"&&(BigInt=function(r){if(isNaN(r))throw new Error("");return r});const W=BigInt(0),Z=BigInt(1),Zt=BigInt(2),hr=BigInt(5),Oe=BigInt(10),H={s:Z,n:W,d:Z};function ht(r,e){try{r=BigInt(r)}catch{throw Bt()}return r*e}function $e(r){return typeof r=="bigint"?r:Math.floor(r)}function ge(r,e){if(e===W)throw br();const t=Object.create(Ye.prototype);t.s=r<W?-Z:Z;const a=Qt(r=r<W?-r:r,e);return t.n=r/a,t.d=e/a,t}function Ot(r){const e={};let t=r,a=Zt,n=hr-Z;for(;n<=t;){for(;t%a===W;)t/=a,e[a]=(e[a]||W)+Z;n+=Z+Zt*a++}return t!==r?t>1&&(e[t]=(e[t]||W)+Z):e[r]=(e[r]||W)+Z,e}const je=function(r,e){let t=W,a=Z,n=Z;if(r!=null)if(e!==void 0){if(typeof r=="bigint")t=r;else{if(isNaN(r))throw Bt();if(r%1!=0)throw Yn();t=BigInt(r)}if(typeof e=="bigint")a=e;else{if(isNaN(e))throw Bt();if(e%1!=0)throw Yn();a=BigInt(e)}n=t*a}else if(typeof r=="object"){if("d"in r&&"n"in r)t=BigInt(r.n),a=BigInt(r.d),"s"in r&&(t*=BigInt(r.s));else if(0 in r)t=BigInt(r[0]),1 in r&&(a=BigInt(r[1]));else{if(typeof r!="bigint")throw Bt();t=r}n=t*a}else if(typeof r=="number"){if(isNaN(r))throw Bt();if(r<0&&(n=-Z,r=-r),r%1==0)t=BigInt(r);else{let i=1,o=0,s=1,A=1,u=1,c=1e7;for(r>=1&&(i=10**Math.floor(1+Math.log10(r)),r/=i);s<=c&&u<=c;){let d=(o+A)/(s+u);if(r===d){s+u<=c?(t=o+A,a=s+u):u>s?(t=A,a=u):(t=o,a=s);break}r>d?(o+=A,s+=u):(A+=o,u+=s),s>c?(t=A,a=u):(t=o,a=s)}t=BigInt(t)*BigInt(i),a=BigInt(a)}}else if(typeof r=="string"){let i=0,o=W,s=W,A=W,u=Z,c=Z,d=r.replace(/_/g,"").match(/\d+|./g);if(d===null||(d[i]==="-"?(n=-Z,i++):d[i]==="+"&&i++,d.length===i+1?s=ht(d[i++],n):d[i+1]==="."||d[i]==="."?(d[i]!=="."&&(o=ht(d[i++],n)),i++,(i+1===d.length||d[i+1]==="("&&d[i+3]===")"||d[i+1]==="'"&&d[i+3]==="'")&&(s=ht(d[i],n),u=Oe**BigInt(d[i].length),i++),(d[i]==="("&&d[i+2]===")"||d[i]==="'"&&d[i+2]==="'")&&(A=ht(d[i+1],n),c=Oe**BigInt(d[i+1].length)-Z,i+=3)):d[i+1]==="/"||d[i+1]===":"?(s=ht(d[i],n),u=ht(d[i+2],Z),i+=3):d[i+3]==="/"&&d[i+1]===" "&&(o=ht(d[i],n),s=ht(d[i+2],n),u=ht(d[i+4],Z),i+=5),!(d.length<=i)))throw Bt();a=u*c,n=t=A+a*o+c*s}else{if(typeof r!="bigint")throw Bt();t=r,n=r,a=Z}if(a===W)throw br();H.s=n<W?-Z:Z,H.n=t<W?-t:t,H.d=a<W?-a:a};function mA(r,e,t){let a=Z,n=function(i,o,s){let A=Z;for(;o>W;i=i*i%s,o>>=Z)o&Z&&(A=A*i%s);return A}(Oe,t,e);for(let i=0;i<300;i++){if(a===n)return BigInt(i);a=a*Oe%e,n=n*Oe%e}return 0}function Qt(r,e){if(!r)return e;if(!e)return r;for(;;){if(!(r%=e))return e;if(!(e%=r))return r}}function Ye(r,e){if(je(r,e),!(this instanceof Ye))return ge(H.s*H.n,H.d);r=Qt(H.d,H.n),this.s=H.s,this.n=H.n/r,this.d=H.d/r}var br=function(){return new Error("Division by Zero")},Bt=function(){return new Error("Invalid argument")},Yn=function(){return new Error("Parameters must be integer")};Ye.prototype={s:Z,n:W,d:Z,abs:function(){return ge(this.n,this.d)},neg:function(){return ge(-this.s*this.n,this.d)},add:function(r,e){return je(r,e),ge(this.s*this.n*H.d+H.s*this.d*H.n,this.d*H.d)},sub:function(r,e){return je(r,e),ge(this.s*this.n*H.d-H.s*this.d*H.n,this.d*H.d)},mul:function(r,e){return je(r,e),ge(this.s*H.s*this.n*H.n,this.d*H.d)},div:function(r,e){return je(r,e),ge(this.s*H.s*this.n*H.d,this.d*H.n)},clone:function(){return ge(this.s*this.n,this.d)},mod:function(r,e){if(r===void 0)return ge(this.s*this.n%this.d,Z);if(je(r,e),W===H.n*this.d)throw br();return ge(this.s*(H.d*this.n)%(H.n*this.d),H.d*this.d)},gcd:function(r,e){return je(r,e),ge(Qt(H.n,this.n)*Qt(H.d,this.d),H.d*this.d)},lcm:function(r,e){return je(r,e),H.n===W&&this.n===W?ge(W,Z):ge(H.n*this.n,Qt(H.n,this.n)*Qt(H.d,this.d))},inverse:function(){return ge(this.s*this.d,this.n)},pow:function(r,e){if(je(r,e),H.d===Z)return H.s<W?ge((this.s*this.d)**H.n,this.n**H.n):ge((this.s*this.n)**H.n,this.d**H.n);if(this.s<W)return null;let t=Ot(this.n),a=Ot(this.d),n=Z,i=Z;for(let o in t)if(o!=="1"){if(o==="0"){n=W;break}if(t[o]*=H.n,t[o]%H.d!==W)return null;t[o]/=H.d,n*=BigInt(o)**t[o]}for(let o in a)if(o!=="1"){if(a[o]*=H.n,a[o]%H.d!==W)return null;a[o]/=H.d,i*=BigInt(o)**a[o]}return H.s<W?ge(i,n):ge(n,i)},log:function(r,e){if(je(r,e),this.s<=W||H.s<=W)return null;const t={},a=Ot(H.n),n=Ot(H.d),i=Ot(this.n),o=Ot(this.d);for(const u in n)a[u]=(a[u]||W)-n[u];for(const u in o)i[u]=(i[u]||W)-o[u];for(const u in a)u!=="1"&&(t[u]=!0);for(const u in i)u!=="1"&&(t[u]=!0);let s=null,A=null;for(const u in t){const c=a[u]||W,d=i[u]||W;if(c===W){if(d!==W)return null;continue}let l=d,h=c;const b=Qt(l,h);if(l/=b,h/=b,s===null&&A===null)s=l,A=h;else if(l*A!=s*h)return null}return s!==null&&A!==null?ge(s,A):null},equals:function(r,e){return je(r,e),this.s*this.n*H.d==H.s*H.n*this.d},lt:function(r,e){return je(r,e),this.s*this.n*H.d<H.s*H.n*this.d},lte:function(r,e){return je(r,e),this.s*this.n*H.d<=H.s*H.n*this.d},gt:function(r,e){return je(r,e),this.s*this.n*H.d>H.s*H.n*this.d},gte:function(r,e){return je(r,e),this.s*this.n*H.d>=H.s*H.n*this.d},compare:function(r,e){je(r,e);let t=this.s*this.n*H.d-H.s*H.n*this.d;return(W<t)-(t<W)},ceil:function(r){return r=Oe**BigInt(r||0),ge($e(this.s*r*this.n/this.d)+(r*this.n%this.d>W&&this.s>=W?Z:W),r)},floor:function(r){return r=Oe**BigInt(r||0),ge($e(this.s*r*this.n/this.d)-(r*this.n%this.d>W&&this.s<W?Z:W),r)},round:function(r){return r=Oe**BigInt(r||0),ge($e(this.s*r*this.n/this.d)+this.s*((this.s>=W?Z:W)+Zt*(r*this.n%this.d)>this.d?Z:W),r)},roundTo:function(r,e){je(r,e);const t=this.n*H.d,a=this.d*H.n,n=t%a;let i=$e(t/a);return n+n>=a&&i++,ge(this.s*i*H.n,H.d)},divisible:function(r,e){return je(r,e),!(!(H.n*this.d)||this.n*H.d%(H.n*this.d))},valueOf:function(){return Number(this.s*this.n)/Number(this.d)},toString:function(r){let e=this.n,t=this.d;r=r||15;let a=function(o,s){for(;s%Zt===W;s/=Zt);for(;s%hr===W;s/=hr);if(s===Z)return W;let A=Oe%s,u=1;for(;A!==Z;u++)if(A=A*Oe%s,u>2e3)return W;return BigInt(u)}(0,t),n=mA(0,t,a),i=this.s<W?"-":"";if(i+=$e(e/t),e%=t,e*=Oe,e&&(i+="."),a){for(let o=n;o--;)i+=$e(e/t),e%=t,e*=Oe;i+="(";for(let o=a;o--;)i+=$e(e/t),e%=t,e*=Oe;i+=")"}else for(let o=r;e&&o--;)i+=$e(e/t),e%=t,e*=Oe;return i},toFraction:function(r){let e=this.n,t=this.d,a=this.s<W?"-":"";if(t===Z)a+=e;else{let n=$e(e/t);r&&n>W&&(a+=n,a+=" ",e%=t),a+=e,a+="/",a+=t}return a},toLatex:function(r){let e=this.n,t=this.d,a=this.s<W?"-":"";if(t===Z)a+=e;else{let n=$e(e/t);r&&n>W&&(a+=n,e%=t),a+="\\frac{",a+=e,a+="}{",a+=t,a+="}"}return a},toContinued:function(){let r=this.n,e=this.d,t=[];do{t.push($e(r/e));let a=r%e;r=e,e=a}while(r!==Z);return t},simplify:function(r){const e=BigInt(1/(r||.001)|0),t=this.abs(),a=t.toContinued();for(let n=1;n<a.length;n++){let i=ge(a[n-1],Z);for(let s=n-2;s>=0;s--)i=i.inverse().add(a[s]);let o=i.sub(t);if(o.n*e<o.d)return i.mul(this.s)}return this}};var EA=ne("Fraction",[],()=>(Object.defineProperty(Ye,"name",{value:"Fraction"}),Ye.prototype.constructor=Ye,Ye.prototype.type="Fraction",Ye.prototype.isFraction=!0,Ye.prototype.toJSON=function(){return{mathjs:"Fraction",n:String(this.s*this.n),d:String(this.d)}},Ye.fromJSON=function(r){return new Ye(r)},Ye),{isClass:!0}),CA=ne("Matrix",[],()=>{function r(){if(!(this instanceof r))throw new SyntaxError("Constructor must be called with the new operator")}return r.prototype.type="Matrix",r.prototype.isMatrix=!0,r.prototype.storage=function(){throw new Error("Cannot invoke storage on a Matrix interface")},r.prototype.datatype=function(){throw new Error("Cannot invoke datatype on a Matrix interface")},r.prototype.create=function(e,t){throw new Error("Cannot invoke create on a Matrix interface")},r.prototype.subset=function(e,t,a){throw new Error("Cannot invoke subset on a Matrix interface")},r.prototype.get=function(e){throw new Error("Cannot invoke get on a Matrix interface")},r.prototype.set=function(e,t,a){throw new Error("Cannot invoke set on a Matrix interface")},r.prototype.resize=function(e,t){throw new Error("Cannot invoke resize on a Matrix interface")},r.prototype.reshape=function(e,t){throw new Error("Cannot invoke reshape on a Matrix interface")},r.prototype.clone=function(){throw new Error("Cannot invoke clone on a Matrix interface")},r.prototype.size=function(){throw new Error("Cannot invoke size on a Matrix interface")},r.prototype.map=function(e,t){throw new Error("Cannot invoke map on a Matrix interface")},r.prototype.forEach=function(e){throw new Error("Cannot invoke forEach on a Matrix interface")},r.prototype[Symbol.iterator]=function(){throw new Error("Cannot iterate a Matrix interface")},r.prototype.toArray=function(){throw new Error("Cannot invoke toArray on a Matrix interface")},r.prototype.valueOf=function(){throw new Error("Cannot invoke valueOf on a Matrix interface")},r.prototype.format=function(e){throw new Error("Cannot invoke format on a Matrix interface")},r.prototype.toString=function(){throw new Error("Cannot invoke toString on a Matrix interface")},r},{isClass:!0});function lr(r,e,t){var a=new r.constructor(2),n="";if(t){if(t<1)throw new Error("size must be in greater than 0");if(!me(t))throw new Error("size must be an integer");if(r.greaterThan(a.pow(t-1).sub(1))||r.lessThan(a.pow(t-1).mul(-1)))throw new Error("Value must be in range [-2^".concat(t-1,", 2^").concat(t-1,"-1]"));if(!r.isInteger())throw new Error("Value must be an integer");r.lessThan(0)&&(r=r.add(a.pow(t))),n="i".concat(t)}switch(e){case 2:return"".concat(r.toBinary()).concat(n);case 8:return"".concat(r.toOctal()).concat(n);case 16:return"".concat(r.toHexadecimal()).concat(n);default:throw new Error("Base ".concat(e," not supported "))}}function IA(r,e){if(typeof e=="function")return e(r);if(!r.isFinite())return r.isNaN()?"NaN":r.gt(0)?"Infinity":"-Infinity";var{notation:t,precision:a,wordSize:n}=Mn(e);switch(t){case"fixed":return function(u,c){return u.toFixed(c)}(r,a);case"exponential":return Xn(r,a);case"engineering":return function(u,c){var d=u.e,l=d%3==0?d:d<0?d-3-d%3:d-d%3,h=u.mul(Math.pow(10,-l)),b=h.toPrecision(c);return b.includes("e")&&(b=new u.constructor(b).toFixed()),b+"e"+(d>=0?"+":"")+l.toString()}(r,a);case"bin":return lr(r,2,n);case"oct":return lr(r,8,n);case"hex":return lr(r,16,n);case"auto":var i=Zn(e==null?void 0:e.lowerExp,-3),o=Zn(e==null?void 0:e.upperExp,5);if(r.isZero())return"0";var s=r.toSignificantDigits(a),A=s.e;return(A>=i&&A<o?s.toFixed():Xn(r,a)).replace(/((\.\d*?)(0+))($|e)/,function(){var u=arguments[2],c=arguments[4];return u!=="."?u+c:c});default:throw new Error('Unknown notation "'+t+'". Choose "auto", "exponential", "fixed", "bin", "oct", or "hex.')}}function Xn(r,e){return e!==void 0?r.toExponential(e-1):r.toExponential()}function Zn(r,e){return le(r)?r:xe(r)?r.toNumber():e}function Fe(r,e){var t=function(a,n){return typeof a=="number"?rr(a,n):xe(a)?IA(a,n):function(i){return i&&typeof i=="object"&&typeof i.s=="bigint"&&typeof i.n=="bigint"&&typeof i.d=="bigint"||!1}(a)?n&&n.fraction==="decimal"?a.toString():"".concat(a.s*a.n,"/").concat(a.d):Array.isArray(a)?ti(a,n):rt(a)?$n(a):typeof a=="function"?a.syntax?String(a.syntax):"function":a&&typeof a=="object"?typeof a.format=="function"?a.format(n):a&&a.toString(n)!=={}.toString()?a.toString(n):"{"+Object.keys(a).map(i=>$n(i)+": "+Fe(a[i],n)).join(", ")+"}":String(a)}(r,e);return e&&typeof e=="object"&&"truncate"in e&&t.length>e.truncate?t.substring(0,e.truncate-3)+"...":t}function $n(r){for(var e=String(r),t="",a=0;a<e.length;){var n=e.charAt(a);t+=n in ei?ei[n]:n,a++}return'"'+t+'"'}var ei={'"':'\\"',"\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r"," ":"\\t"};function ti(r,e){if(Array.isArray(r)){for(var t="[",a=r.length,n=0;n<a;n++)n!==0&&(t+=", "),t+=ti(r[n],e);return t+="]"}return Fe(r,e)}function fe(r,e,t){if(!(this instanceof fe))throw new SyntaxError("Constructor must be called with the new operator");this.actual=r,this.expected=e,this.relation=t,this.message="Dimension mismatch ("+(Array.isArray(r)?"["+r.join(", ")+"]":r)+" "+(this.relation||"!=")+" "+(Array.isArray(e)?"["+e.join(", ")+"]":e)+")",this.stack=new Error().stack}function zt(r,e,t){if(!(this instanceof zt))throw new SyntaxError("Constructor must be called with the new operator");this.index=r,arguments.length<3?(this.min=0,this.max=e):(this.min=e,this.max=t),this.min!==void 0&&this.index<this.min?this.message="Index out of range ("+this.index+" < "+this.min+")":this.max!==void 0&&this.index>=this.max?this.message="Index out of range ("+this.index+" > "+(this.max-1)+")":this.message="Index out of range ("+this.index+")",this.stack=new Error().stack}function Le(r){for(var e=[];Array.isArray(r);)e.push(r.length),r=r[0];return e}function ai(r,e,t){var a,n=r.length;if(n!==e[t])throw new fe(n,e[t]);if(t<e.length-1){var i=t+1;for(a=0;a<n;a++){var o=r[a];if(!Array.isArray(o))throw new fe(e.length-1,e.length,"<");ai(r[a],e,i)}}else for(a=0;a<n;a++)if(Array.isArray(r[a]))throw new fe(e.length+1,e.length,">")}function ri(r,e){if(e.length===0){if(Array.isArray(r))throw new fe(r.length,0)}else ai(r,e,0)}function Ce(r,e){if(r!==void 0){if(!le(r)||!me(r))throw new TypeError("Index must be an integer (value: "+r+")");if(r<0||typeof e=="number"&&r>=e)throw new zt(r,e)}}function gr(r,e,t){if(!Array.isArray(e))throw new TypeError("Array expected");if(e.length===0)throw new Error("Resizing to scalar is not supported");return e.forEach(function(a){if(!le(a)||!me(a)||a<0)throw new TypeError("Invalid size, must contain positive integers (size: "+Fe(e)+")")}),(le(r)||xe(r))&&(r=[r]),fr(r,e,0,t!==void 0?t:0),r}function fr(r,e,t,a){var n,i,o=r.length,s=e[t],A=Math.min(o,s);if(r.length=s,t<e.length-1){var u=t+1;for(n=0;n<A;n++)i=r[n],Array.isArray(i)||(i=[i],r[n]=i),fr(i,e,u,a);for(n=A;n<s;n++)i=[],r[n]=i,fr(i,e,u,a)}else{for(n=0;n<A;n++)for(;Array.isArray(r[n]);)r[n]=r[n][0];for(n=A;n<s;n++)r[n]=a}}function ni(r,e){var t=function(i){var o=arguments.length>1&&arguments[1]!==void 0&&arguments[1];if(!Array.isArray(i))return i;if(typeof o!="boolean")throw new TypeError("Boolean expected for second argument of flatten");var s=[];return o?u(i):A(i),s;function A(c){for(var d=0;d<c.length;d++){var l=c[d];Array.isArray(l)?A(l):s.push(l)}}function u(c){if(Array.isArray(c[0]))for(var d=0;d<c.length;d++)u(c[d]);else for(var l=0;l<c.length;l++)s.push(c[l])}}(r,!0),a=t.length;if(!Array.isArray(r)||!Array.isArray(e))throw new TypeError("Array expected");if(e.length===0)throw new fe(0,a,"!=");var n=ii(e=pr(e,a));if(a!==n)throw new fe(n,a,"!=");try{return function(i,o){for(var s,A=i,u=o.length-1;u>0;u--){var c=o[u];s=[];for(var d=A.length/c,l=0;l<d;l++)s.push(A.slice(l*c,(l+1)*c));A=s}return A}(t,e)}catch(i){throw i instanceof fe?new fe(n,a,"!="):i}}function pr(r,e){var t=ii(r),a=r.slice(),n=r.indexOf(-1);if(r.indexOf(-1,n+1)>=0)throw new Error("More than one wildcard in sizes");if(n>=0){if(e%t!=0)throw new Error("Could not replace wildcard, since "+e+" is no multiple of "+-t);a[n]=-e/t}return a}function ii(r){return r.reduce((e,t)=>e*t,1)}function oi(r,e,t,a){var n=a||Le(r);if(t)for(var i=0;i<t;i++)r=[r],n.unshift(1);for(r=si(r,e,0);n.length<e;)n.push(1);return r}function si(r,e,t){var a,n;if(Array.isArray(r)){var i=t+1;for(a=0,n=r.length;a<n;a++)r[a]=si(r[a],e,i)}else for(var o=t;o<e;o++)r=[r];return r}function mr(r,e){for(var t,a=0,n=0;n<r.length;n++){var i=r[n],o=Array.isArray(i);if(n===0&&o&&(a=i.length),o&&i.length!==a)return;var s=o?mr(i,e):e(i);if(t===void 0)t=s;else if(t!==s)return"mixed"}return t}function Ai(r,e,t,a){if(a<t){if(r.length!==e.length)throw new fe(r.length,e.length);for(var n=[],i=0;i<r.length;i++)n[i]=Ai(r[i],e[i],t,a+1);return n}return r.concat(e)}function BA(){var r=Array.prototype.slice.call(arguments,0,-1),e=Array.prototype.slice.call(arguments,-1);if(r.length===1)return r[0];if(r.length>1)return r.slice(1).reduce(function(t,a){return Ai(t,a,e,0)},r[0]);throw new Error("Wrong number of arguments in function concat")}function ci(r,e){for(var t=e.length,a=r.length,n=0;n<a;n++){var i=t-a+n;if(r[n]<e[i]&&r[n]>1||r[n]>e[i])throw new Error("shape mismatch: mismatch is found in arg with shape (".concat(r,") not possible to broadcast dimension ").concat(a," with size ").concat(r[n]," to size ").concat(e[i]))}}function ui(r,e){var t=Le(r);if(Nt(t,e))return r;ci(t,e);var a,n,i,o=function(){for(var d=arguments.length,l=new Array(d),h=0;h<d;h++)l[h]=arguments[h];for(var b=l.map(F=>F.length),g=Math.max(...b),f=new Array(g).fill(null),m=0;m<l.length;m++)for(var p=l[m],C=b[m],I=0;I<C;I++){var x=g-C+I;p[I]>f[x]&&(f[x]=p[I])}for(var y=0;y<l.length;y++)ci(l[y],f);return f}(t,e),s=o.length,A=[...Array(s-t.length).fill(1),...t],u=function(d){return oa([],d)}(r);t.length<s&&(t=Le(u=ni(u,A)));for(var c=0;c<s;c++)t[c]<o[c]&&(a=u,n=o[c],i=c,t=Le(u=BA(...Array(n).fill(a),i)));return u}function di(r,e){if(!Array.isArray(r))throw new Error("Array expected");var t=Le(r);if(e.length!==t.length)throw new fe(e.length,t.length);for(var a=0;a<e.length;a++)Ce(e[a],t[a]);return e.reduce((n,i)=>n[i],r)}function hi(r,e){var t=arguments.length>2&&arguments[2]!==void 0&&arguments[2];if(r.length===0)return[];if(t)return function n(i){if(Array.isArray(i)){for(var o=i.length,s=Array(o),A=0;A<o;A++)s[A]=n(i[A]);return s}return e(i)}(r);var a=[];return function n(i,o){if(Array.isArray(i)){for(var s=i.length,A=Array(s),u=0;u<s;u++)a[o]=u,A[u]=n(i[u],o+1);return A}return e(i,a.slice(0,o),r)}(r,0)}function wa(r,e,t){var a=arguments.length>3&&arguments[3]!==void 0&&arguments[3];if(ua.isTypedFunction(r)){var n,i;if(a)n=1;else{var o=(e.isMatrix?e.size():Le(e)).map(()=>0),s=e.isMatrix?e.get(o):di(e,o);n=function(u,c,d,l){for(var h=[c,d,l],b=3;b>0;b--){var g=h.slice(0,b);if(ua.resolve(u,g)!==null)return b}}(r,s,o,e)}if(e.isMatrix&&e.dataType!=="mixed"&&e.dataType!==void 0){var A=function(u,c){var d=[];if(Object.entries(u.signatures).forEach(l=>{var[h,b]=l;h.split(",").length===c&&d.push(b)}),d.length===1)return d[0]}(r,n);i=A!==void 0?A:r}else i=r;return n>=1&&n<=3?{isUnary:n===1,fn:function(){for(var u=arguments.length,c=new Array(u),d=0;d<u;d++)c[d]=arguments[d];return bi(i,c.slice(0,n),t,r.name)}}:{isUnary:!1,fn:function(){for(var u=arguments.length,c=new Array(u),d=0;d<u;d++)c[d]=arguments[d];return bi(i,c,t,r.name)}}}return a===void 0?{isUnary:DA(r),fn:r}:{isUnary:a,fn:r}}function DA(r){if(r.length!==1)return!1;var e=r.toString();if(/arguments/.test(e))return!1;var t=e.match(/\(.*?\)/);return!/\.\.\./.test(t)}function bi(r,e,t,a){try{return r(...e)}catch(n){(function(i,o,s,A){var u;if(i instanceof TypeError&&((u=i.data)===null||u===void 0?void 0:u.category)==="wrongType"){var c=[];throw c.push("value: ".concat(pt(o[0]))),o.length>=2&&c.push("index: ".concat(pt(o[1]))),o.length>=3&&c.push("array: ".concat(pt(o[2]))),new TypeError("Function ".concat(s," cannot apply callback arguments ")+"".concat(A,"(").concat(c.join(", "),") at index ").concat(JSON.stringify(o[1])))}throw new TypeError("Function ".concat(s," cannot apply callback arguments ")+"to function ".concat(A,": ").concat(i.message))})(n,e,t,a)}}fe.prototype=new RangeError,fe.prototype.constructor=RangeError,fe.prototype.name="DimensionError",fe.prototype.isDimensionError=!0,zt.prototype=new RangeError,zt.prototype.constructor=RangeError,zt.prototype.name="IndexError",zt.prototype.isIndexError=!0;var yA=ne("DenseMatrix",["Matrix"],r=>{var{Matrix:e}=r;function t(A,u){if(!(this instanceof t))throw new SyntaxError("Constructor must be called with the new operator");if(u&&!rt(u))throw new Error("Invalid datatype: "+u);if(Be(A))A.type==="DenseMatrix"?(this._data=De(A._data),this._size=De(A._size),this._datatype=u||A._datatype):(this._data=A.toArray(),this._size=A.size(),this._datatype=u||A._datatype);else if(A&&ve(A.data)&&ve(A.size))this._data=A.data,this._size=A.size,ri(this._data,this._size),this._datatype=u||A.datatype;else if(ve(A))this._data=s(A),this._size=Le(this._data),ri(this._data,this._size),this._datatype=u;else{if(A)throw new TypeError("Unsupported type of data ("+pt(A)+")");this._data=[],this._size=[0],this._datatype=u}}function a(A,u,c,d){var l=d===c-1,h=u.dimension(d);return l?h.map(function(b){return Ce(b,A.length),A[b]}).valueOf():h.map(function(b){return Ce(b,A.length),a(A[b],u,c,d+1)}).valueOf()}function n(A,u,c,d,l){var h=l===d-1,b=u.dimension(l);h?b.forEach(function(g,f){Ce(g),A[g]=c[f[0]]}):b.forEach(function(g,f){Ce(g),n(A[g],u,c[f[0]],d,l+1)})}function i(A,u,c){if(u.length===0){for(var d=A._data;ve(d);)d=d[0];return d}return A._size=u.slice(0),A._data=gr(A._data,A._size,c),A}function o(A,u,c){for(var d=A._size.slice(0),l=!1;d.length<u.length;)d.push(0),l=!0;for(var h=0,b=u.length;h<b;h++)u[h]>d[h]&&(d[h]=u[h],l=!0);l&&i(A,d,c)}function s(A){return Be(A)?s(A.valueOf()):ve(A)?A.map(s):A}return t.prototype=new e,t.prototype.createDenseMatrix=function(A,u){return new t(A,u)},Object.defineProperty(t,"name",{value:"DenseMatrix"}),t.prototype.constructor=t,t.prototype.type="DenseMatrix",t.prototype.isDenseMatrix=!0,t.prototype.getDataType=function(){return mr(this._data,pt)},t.prototype.storage=function(){return"dense"},t.prototype.datatype=function(){return this._datatype},t.prototype.create=function(A,u){return new t(A,u)},t.prototype.subset=function(A,u,c){switch(arguments.length){case 1:return function(d,l){if(!er(l))throw new TypeError("Invalid index");var h=l.isScalar();if(h)return d.get(l.min());var b=l.size();if(b.length!==d._size.length)throw new fe(b.length,d._size.length);for(var g=l.min(),f=l.max(),m=0,p=d._size.length;m<p;m++)Ce(g[m],d._size[m]),Ce(f[m],d._size[m]);return new t(a(d._data,l,b.length,0),d._datatype)}(this,A);case 2:case 3:return function(d,l,h,b){if(!l||l.isIndex!==!0)throw new TypeError("Invalid index");var g,f=l.size(),m=l.isScalar();if(Be(h)?(g=h.size(),h=h.valueOf()):g=Le(h),m){if(g.length!==0)throw new TypeError("Scalar expected");d.set(l.min(),h,b)}else{if(!Nt(g,f))try{g=Le(h=g.length===0?ui([h],f):ui(h,f))}catch{}if(f.length<d._size.length)throw new fe(f.length,d._size.length,"<");if(g.length<f.length){for(var p=0,C=0;f[p]===1&&g[p]===1;)p++;for(;f[p]===1;)C++,p++;h=oi(h,f.length,C,g)}if(!Nt(f,g))throw new fe(f,g,">");var I=l.max().map(function(F){return F+1});o(d,I,b);var x=f.length,y=0;n(d._data,l,h,x,y)}return d}(this,A,u,c);default:throw new SyntaxError("Wrong number of arguments")}},t.prototype.get=function(A){return di(this._data,A)},t.prototype.set=function(A,u,c){if(!ve(A))throw new TypeError("Array expected");if(A.length<this._size.length)throw new fe(A.length,this._size.length,"<");var d,l,h,b=A.map(function(f){return f+1});o(this,b,c);var g=this._data;for(d=0,l=A.length-1;d<l;d++)Ce(h=A[d],g.length),g=g[h];return Ce(h=A[A.length-1],g.length),g[h]=u,this},t.prototype.resize=function(A,u,c){if(!Aa(A))throw new TypeError("Array or Matrix expected");var d=A.valueOf().map(l=>Array.isArray(l)&&l.length===1?l[0]:l);return i(c?this.clone():this,d,u)},t.prototype.reshape=function(A,u){var c=u?this.clone():this;c._data=ni(c._data,A);var d=c._size.reduce((l,h)=>l*h);return c._size=pr(A,d),c},t.prototype.clone=function(){return new t({data:De(this._data),size:De(this._size),datatype:this._datatype})},t.prototype.size=function(){return this._size.slice(0)},t.prototype._forEach=function(A){var u=A.length===2,c=this._size.length-1;if(!(c<0))if(u)(function h(b){var g=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;if(g<c)for(var f=0;f<b.length;f++)h(b[f],g+1);else for(var m=0;m<b.length;m++)A(b,m)})(this._data);else if(c!==0){var d=new Array(c+1);(function h(b){var g=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;if(g<c)for(var f=0;f<b.length;f++)d[g]=f,h(b[f],g+1);else for(var m=0;m<b.length;m++)d[g]=m,A(b,m,d.slice())})(this._data)}else for(var l=0;l<this._data.length;l++)A(this._data,l,[l])},t.prototype.map=function(A){var u=arguments.length>2&&arguments[2]!==void 0&&arguments[2],c=this,d=new t(c),l=wa(A,c._data,"map",u),h=u||l.isUnary?(b,g)=>{b[g]=l.fn(b[g])}:(b,g,f)=>{b[g]=l.fn(b[g],f,c)};return d._forEach(h),d},t.prototype.forEach=function(A){var u=arguments.length>2&&arguments[2]!==void 0&&arguments[2],c=this,d=wa(A,c._data,"map",u),l=u||d.isUnary?(h,b)=>{d.fn(h[b])}:(h,b,g)=>{d.fn(h[b],g,c)};c._forEach(l)},t.prototype[Symbol.iterator]=function*(){var A=this._size.length-1;if(!(A<0))if(A!==0){var u=[],c=function*(l,h){if(h<A)for(var b=0;b<l.length;b++)u[h]=b,yield*c(l[b],h+1);else for(var g=0;g<l.length;g++)u[h]=g,yield{value:l[g],index:u.slice()}};yield*c(this._data,0)}else for(var d=0;d<this._data.length;d++)yield{value:this._data[d],index:[d]}},t.prototype.rows=function(){var A=[];if(this.size().length!==2)throw new TypeError("Rows can only be returned for a 2D matrix.");var u=this._data;for(var c of u)A.push(new t([c],this._datatype));return A},t.prototype.columns=function(){var A=this,u=[],c=this.size();if(c.length!==2)throw new TypeError("Rows can only be returned for a 2D matrix.");for(var d=this._data,l=function(b){var g=d.map(f=>[f[b]]);u.push(new t(g,A._datatype))},h=0;h<c[1];h++)l(h);return u},t.prototype.toArray=function(){return De(this._data)},t.prototype.valueOf=function(){return this._data},t.prototype.format=function(A){return Fe(this._data,A)},t.prototype.toString=function(){return Fe(this._data)},t.prototype.toJSON=function(){return{mathjs:"DenseMatrix",data:this._data,size:this._size,datatype:this._datatype}},t.prototype.diagonal=function(A){if(A){if(xe(A)&&(A=A.toNumber()),!le(A)||!me(A))throw new TypeError("The parameter k must be an integer number")}else A=0;for(var u=A>0?A:0,c=A<0?-A:0,d=this._size[0],l=this._size[1],h=Math.min(d-c,l-u),b=[],g=0;g<h;g++)b[g]=this._data[g+c][g+u];return new t({data:b,size:[h],datatype:this._datatype})},t.diagonal=function(A,u,c,d){if(!ve(A))throw new TypeError("Array expected, size parameter");if(A.length!==2)throw new Error("Only two dimensions matrix are supported");if(A=A.map(function(x){if(xe(x)&&(x=x.toNumber()),!le(x)||!me(x)||x<1)throw new Error("Size values must be positive integers");return x}),c){if(xe(c)&&(c=c.toNumber()),!le(c)||!me(c))throw new TypeError("The parameter k must be an integer number")}else c=0;var l,h=c>0?c:0,b=c<0?-c:0,g=A[0],f=A[1],m=Math.min(g-b,f-h);if(ve(u)){if(u.length!==m)throw new Error("Invalid value array length");l=function(x){return u[x]}}else if(Be(u)){var p=u.size();if(p.length!==1||p[0]!==m)throw new Error("Invalid matrix length");l=function(x){return u.get([x])}}else l=function(){return u};d||(d=xe(l(0))?l(0).mul(0):0);var C=[];if(A.length>0){C=gr(C,A,d);for(var I=0;I<m;I++)C[I+b][I+h]=l(I)}return new t({data:C,size:[g,f]})},t.fromJSON=function(A){return new t(A)},t.prototype.swapRows=function(A,u){if(!(le(A)&&me(A)&&le(u)&&me(u)))throw new Error("Row index must be positive integers");if(this._size.length!==2)throw new Error("Only two dimensional matrix is supported");return Ce(A,this._size[0]),Ce(u,this._size[0]),t._swapRows(A,u,this._data),this},t._swapRows=function(A,u,c){var d=c[A];c[A]=c[u],c[u]=d},t},{isClass:!0});function vt(r,e,t){if(!t)return Be(r)?r.map(n=>e(n),!1,!0):hi(r,e,!0);var a=n=>n===0?n:e(n);return Be(r)?r.map(n=>a(n),!1,!0):hi(r,a,!0)}var li="number",xa="number, number";function gi(r){return Math.abs(r)}function fi(r,e){return r+e}function pi(r,e){return r-e}function mi(r,e){return r*e}function Ei(r){return-r}function Ci(r,e){return r*r<1&&e===1/0||r*r>1&&e===-1/0?0:Math.pow(r,e)}function Er(r,e){if(e<r)return 1;if(e===r)return e;var t=e+r>>1;return Er(r,t)*Er(t+1,e)}function Fa(r){var e;if(me(r))return r<=0?isFinite(r)?1/0:NaN:r>171?1/0:Er(1,r-1);if(r<.5)return Math.PI/(Math.sin(Math.PI*r)*Fa(1-r));if(r>=171.35)return 1/0;if(r>85){var t=r*r,a=t*r,n=a*r,i=n*r;return Math.sqrt(2*Math.PI/r)*Math.pow(r/Math.E,r)*(1+1/(12*r)+1/(288*t)-139/(51840*a)-571/(2488320*n)+163879/(209018880*i)+5246819/(75246796800*i*r))}--r,e=Pt[0];for(var o=1;o<Pt.length;++o)e+=Pt[o]/(r+o);var s=r+Ii+.5;return Math.sqrt(2*Math.PI)*Math.pow(s,r+.5)*Math.exp(-s)*e}gi.signature=li,fi.signature=xa,pi.signature=xa,mi.signature=xa,Ei.signature=li,Ci.signature=xa,Fa.signature="number";var Ii=4.7421875,Pt=[.9999999999999971,57.15623566586292,-59.59796035547549,14.136097974741746,-.4919138160976202,3399464998481189e-20,4652362892704858e-20,-9837447530487956e-20,.0001580887032249125,-.00021026444172410488,.00021743961811521265,-.0001643181065367639,8441822398385275e-20,-26190838401581408e-21,36899182659531625e-22],Bi="isZero",wA=ne(Bi,["typed","equalScalar"],r=>{var{typed:e,equalScalar:t}=r;return e(Bi,{"number | BigNumber | Complex | Fraction":a=>t(a,0),bigint:a=>a===0n,Unit:e.referToSelf(a=>n=>e.find(a,n.valueType())(n.value)),"Array | Matrix":e.referToSelf(a=>n=>vt(n,a))})}),xA=ne("compareUnits",["typed"],r=>{var{typed:e}=r;return{"Unit, Unit":e.referToSelf(t=>(a,n)=>{if(!a.equalBase(n))throw new Error("Cannot compare units with different base");return e.find(t,[a.valueType(),n.valueType()])(a.value,n.value)})}}),Qa="equalScalar",FA=ne(Qa,["typed","config"],r=>{var{typed:e,config:t}=r,a=xA({typed:e});return e(Qa,{"boolean, boolean":function(n,i){return n===i},"number, number":function(n,i){return ba(n,i,t.relTol,t.absTol)},"BigNumber, BigNumber":function(n,i){return n.eq(i)||function(o,s){var A=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1e-9,u=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0;if(A<=0)throw new Error("Relative tolerance must be greater than 0");if(u<0)throw new Error("Absolute tolerance must be at least 0");return!o.isNaN()&&!s.isNaN()&&(o.isFinite()&&s.isFinite()?!!o.eq(s)||o.minus(s).abs().lte(o.constructor.max(o.constructor.max(o.abs(),s.abs()).mul(A),u)):o.eq(s))}(n,i,t.relTol,t.absTol)},"bigint, bigint":function(n,i){return n===i},"Fraction, Fraction":function(n,i){return n.equals(i)},"Complex, Complex":function(n,i){return function(o,s,A,u){return ba(o.re,s.re,A,u)&&ba(o.im,s.im,A,u)}(n,i,t.relTol,t.absTol)}},a)});ne(Qa,["typed","config"],r=>{var{typed:e,config:t}=r;return e(Qa,{"number, number":function(a,n){return ba(a,n,t.relTol,t.absTol)}})});var QA=ne("SparseMatrix",["typed","equalScalar","Matrix"],r=>{var{typed:e,equalScalar:t,Matrix:a}=r;function n(c,d){if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");if(d&&!rt(d))throw new Error("Invalid datatype: "+d);if(Be(c))(function(l,h,b){h.type==="SparseMatrix"?(l._values=h._values?De(h._values):void 0,l._index=De(h._index),l._ptr=De(h._ptr),l._size=De(h._size),l._datatype=b||h._datatype):i(l,h.valueOf(),b||h._datatype)})(this,c,d);else if(c&&ve(c.index)&&ve(c.ptr)&&ve(c.size))this._values=c.values,this._index=c.index,this._ptr=c.ptr,this._size=c.size,this._datatype=d||c.datatype;else if(ve(c))i(this,c,d);else{if(c)throw new TypeError("Unsupported type of data ("+pt(c)+")");this._values=[],this._index=[],this._ptr=[0],this._size=[0,0],this._datatype=d}}function i(c,d,l){c._values=[],c._index=[],c._ptr=[],c._datatype=l;var h=d.length,b=0,g=t,f=0;if(rt(l)&&(g=e.find(t,[l,l])||t,f=e.convert(0,l)),h>0){var m=0;do{c._ptr.push(c._index.length);for(var p=0;p<h;p++){var C=d[p];if(ve(C)){if(m===0&&b<C.length&&(b=C.length),m<C.length){var I=C[m];g(I,f)||(c._values.push(I),c._index.push(p))}}else m===0&&b<1&&(b=1),g(C,f)||(c._values.push(C),c._index.push(p))}m++}while(m<b)}c._ptr.push(c._index.length),c._size=[h,b]}function o(c,d,l,h){if(l-d==0)return l;for(var b=d;b<l;b++)if(h[b]===c)return b;return d}function s(c,d,l,h,b,g,f){b.splice(c,0,h),g.splice(c,0,d);for(var m=l+1;m<f.length;m++)f[m]++}function A(c,d,l,h){var b=h||0,g=t,f=0;rt(c._datatype)&&(g=e.find(t,[c._datatype,c._datatype])||t,f=e.convert(0,c._datatype),b=e.convert(b,c._datatype));var m,p,C,I=!g(b,f),x=c._size[0],y=c._size[1];if(l>y){for(p=y;p<l;p++)if(c._ptr[p]=c._values.length,I)for(m=0;m<x;m++)c._values.push(b),c._index.push(m);c._ptr[l]=c._values.length}else l<y&&(c._ptr.splice(l+1,y-l),c._values.splice(c._ptr[l],c._values.length),c._index.splice(c._ptr[l],c._index.length));if(y=l,d>x){if(I){var F=0;for(p=0;p<y;p++){c._ptr[p]=c._ptr[p]+F,C=c._ptr[p+1]+F;var D=0;for(m=x;m<d;m++,D++)c._values.splice(C+D,0,b),c._index.splice(C+D,0,m),F++}c._ptr[y]=c._values.length}}else if(d<x){var Q=0;for(p=0;p<y;p++){c._ptr[p]=c._ptr[p]-Q;var M=c._ptr[p],S=c._ptr[p+1]-Q;for(C=M;C<S;C++)(m=c._index[C])>d-1&&(c._values.splice(C,1),c._index.splice(C,1),Q++)}c._ptr[p]=c._values.length}return c._size[0]=d,c._size[1]=l,c}function u(c,d,l,h,b){var g,f,m=h[0],p=h[1],C=[];for(g=0;g<m;g++)for(C[g]=[],f=0;f<p;f++)C[g][f]=0;for(f=0;f<p;f++)for(var I=l[f],x=l[f+1],y=I;y<x;y++)C[g=d[y]][f]=c?b?De(c[y]):c[y]:1;return C}return n.prototype=new a,n.prototype.createSparseMatrix=function(c,d){return new n(c,d)},Object.defineProperty(n,"name",{value:"SparseMatrix"}),n.prototype.constructor=n,n.prototype.type="SparseMatrix",n.prototype.isSparseMatrix=!0,n.prototype.getDataType=function(){return mr(this._values,pt)},n.prototype.storage=function(){return"sparse"},n.prototype.datatype=function(){return this._datatype},n.prototype.create=function(c,d){return new n(c,d)},n.prototype.density=function(){var c=this._size[0],d=this._size[1];return c!==0&&d!==0?this._index.length/(c*d):0},n.prototype.subset=function(c,d,l){if(!this._values)throw new Error("Cannot invoke subset on a Pattern only matrix");switch(arguments.length){case 1:return function(h,b){if(!er(b))throw new TypeError("Invalid index");if(b.isScalar())return h.get(b.min());var g,f,m,p,C=b.size();if(C.length!==h._size.length)throw new fe(C.length,h._size.length);var I=b.min(),x=b.max();for(g=0,f=h._size.length;g<f;g++)Ce(I[g],h._size[g]),Ce(x[g],h._size[g]);var y=h._values,F=h._index,D=h._ptr,Q=b.dimension(0),M=b.dimension(1),S=[],O=[];Q.forEach(function(q,se){O[q]=se[0],S[q]=!0});var P=y?[]:void 0,K=[],J=[];return M.forEach(function(q){for(J.push(K.length),m=D[q],p=D[q+1];m<p;m++)g=F[m],S[g]===!0&&(K.push(O[g]),P&&P.push(y[m]))}),J.push(K.length),new n({values:P,index:K,ptr:J,size:C,datatype:h._datatype})}(this,c);case 2:case 3:return function(h,b,g,f){if(!b||b.isIndex!==!0)throw new TypeError("Invalid index");var m,p=b.size(),C=b.isScalar();if(Be(g)?(m=g.size(),g=g.toArray()):m=Le(g),C){if(m.length!==0)throw new TypeError("Scalar expected");h.set(b.min(),g,f)}else{if(p.length!==1&&p.length!==2)throw new fe(p.length,h._size.length,"<");if(m.length<p.length){for(var I=0,x=0;p[I]===1&&m[I]===1;)I++;for(;p[I]===1;)x++,I++;g=oi(g,p.length,x,m)}if(!Nt(p,m))throw new fe(p,m,">");if(p.length===1)b.dimension(0).forEach(function(D,Q){Ce(D),h.set([D,0],g[Q[0]],f)});else{var y=b.dimension(0),F=b.dimension(1);y.forEach(function(D,Q){Ce(D),F.forEach(function(M,S){Ce(M),h.set([D,M],g[Q[0]][S[0]],f)})})}}return h}(this,c,d,l);default:throw new SyntaxError("Wrong number of arguments")}},n.prototype.get=function(c){if(!ve(c))throw new TypeError("Array expected");if(c.length!==this._size.length)throw new fe(c.length,this._size.length);if(!this._values)throw new Error("Cannot invoke get on a Pattern only matrix");var d=c[0],l=c[1];Ce(d,this._size[0]),Ce(l,this._size[1]);var h=o(d,this._ptr[l],this._ptr[l+1],this._index);return h<this._ptr[l+1]&&this._index[h]===d?this._values[h]:0},n.prototype.set=function(c,d,l){if(!ve(c))throw new TypeError("Array expected");if(c.length!==this._size.length)throw new fe(c.length,this._size.length);if(!this._values)throw new Error("Cannot invoke set on a Pattern only matrix");var h=c[0],b=c[1],g=this._size[0],f=this._size[1],m=t,p=0;rt(this._datatype)&&(m=e.find(t,[this._datatype,this._datatype])||t,p=e.convert(0,this._datatype)),(h>g-1||b>f-1)&&(A(this,Math.max(h+1,g),Math.max(b+1,f),l),g=this._size[0],f=this._size[1]),Ce(h,g),Ce(b,f);var C=o(h,this._ptr[b],this._ptr[b+1],this._index);return C<this._ptr[b+1]&&this._index[C]===h?m(d,p)?function(I,x,y,F,D){y.splice(I,1),F.splice(I,1);for(var Q=x+1;Q<D.length;Q++)D[Q]--}(C,b,this._values,this._index,this._ptr):this._values[C]=d:m(d,p)||s(C,h,b,d,this._values,this._index,this._ptr),this},n.prototype.resize=function(c,d,l){if(!Aa(c))throw new TypeError("Array or Matrix expected");var h=c.valueOf().map(b=>Array.isArray(b)&&b.length===1?b[0]:b);if(h.length!==2)throw new Error("Only two dimensions matrix are supported");return h.forEach(function(b){if(!le(b)||!me(b)||b<0)throw new TypeError("Invalid size, must contain positive integers (size: "+Fe(h)+")")}),A(l?this.clone():this,h[0],h[1],d)},n.prototype.reshape=function(c,d){if(!ve(c))throw new TypeError("Array expected");if(c.length!==2)throw new Error("Sparse matrices can only be reshaped in two dimensions");c.forEach(function(O){if(!le(O)||!me(O)||O<=-2||O===0)throw new TypeError("Invalid size, must contain positive integers or -1 (size: "+Fe(c)+")")});var l=this._size[0]*this._size[1];if(l!==(c=pr(c,l))[0]*c[1])throw new Error("Reshaping sparse matrix will result in the wrong number of elements");var h=d?this.clone():this;if(this._size[0]===c[0]&&this._size[1]===c[1])return h;for(var b=[],g=0;g<h._ptr.length;g++)for(var f=0;f<h._ptr[g+1]-h._ptr[g];f++)b.push(g);for(var m=h._values.slice(),p=h._index.slice(),C=0;C<h._index.length;C++){var I=p[C],x=b[C],y=I*h._size[1]+x;b[C]=y%c[1],p[C]=Math.floor(y/c[1])}h._values.length=0,h._index.length=0,h._ptr.length=c[1]+1,h._size=c.slice();for(var F=0;F<h._ptr.length;F++)h._ptr[F]=0;for(var D=0;D<m.length;D++){var Q=p[D],M=b[D],S=m[D];s(o(Q,h._ptr[M],h._ptr[M+1],h._index),Q,M,S,h._values,h._index,h._ptr)}return h},n.prototype.clone=function(){return new n({values:this._values?De(this._values):void 0,index:De(this._index),ptr:De(this._ptr),size:De(this._size),datatype:this._datatype})},n.prototype.size=function(){return this._size.slice(0)},n.prototype.map=function(c,d){if(!this._values)throw new Error("Cannot invoke map on a Pattern only matrix");var l=this,h=this._size[0],b=this._size[1],g=wa(c,l,"map");return function(f,m,p,C,I,x,y){var F=[],D=[],Q=[],M=t,S=0;rt(f._datatype)&&(M=e.find(t,[f._datatype,f._datatype])||t,S=e.convert(0,f._datatype));for(var O=function(de,$,pe){var Y=x(de,$,pe);M(Y,S)||(F.push(Y),D.push($))},P=C;P<=I;P++){Q.push(F.length);var K=f._ptr[P],J=f._ptr[P+1];if(y)for(var q=K;q<J;q++){var se=f._index[q];se>=m&&se<=p&&O(f._values[q],se-m,P-C)}else{for(var ue={},re=K;re<J;re++)ue[f._index[re]]=f._values[re];for(var be=m;be<=p;be++)O(be in ue?ue[be]:0,be-m,P-C)}}return Q.push(F.length),new n({values:F,index:D,ptr:Q,size:[p-m+1,I-C+1]})}(this,0,h-1,0,b-1,function(f,m,p){return g.fn(f,[m,p],l)},d)},n.prototype.forEach=function(c,d){if(!this._values)throw new Error("Cannot invoke forEach on a Pattern only matrix");for(var l=this,h=this._size[0],b=this._size[1],g=wa(c,l,"forEach"),f=0;f<b;f++){var m=this._ptr[f],p=this._ptr[f+1];if(d)for(var C=m;C<p;C++){var I=this._index[C];g.fn(this._values[C],[I,f],l)}else{for(var x={},y=m;y<p;y++)x[this._index[y]]=this._values[y];for(var F=0;F<h;F++){var D=F in x?x[F]:0;g.fn(D,[F,f],l)}}}},n.prototype[Symbol.iterator]=function*(){if(!this._values)throw new Error("Cannot iterate a Pattern only matrix");for(var c=this._size[1],d=0;d<c;d++)for(var l=this._ptr[d],h=this._ptr[d+1],b=l;b<h;b++){var g=this._index[b];yield{value:this._values[b],index:[g,d]}}},n.prototype.toArray=function(){return u(this._values,this._index,this._ptr,this._size,!0)},n.prototype.valueOf=function(){return u(this._values,this._index,this._ptr,this._size,!1)},n.prototype.format=function(c){for(var d=this._size[0],l=this._size[1],h=this.density(),b="Sparse Matrix ["+Fe(d,c)+" x "+Fe(l,c)+"] density: "+Fe(h,c)+`
|
|
21
|
+
*/var Un,dt,ir=9e15,mt=1e9,or="0123456789abcdef",pa="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",ma="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",sr={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-9e15,maxE:ir,crypto:!1},X=!0,Ea="[DecimalError] ",Et=Ea+"Invalid argument: ",Ln=Ea+"Precision limit exceeded",Gn=Ea+"crypto unavailable",_n="[object Decimal]",Re=Math.floor,ke=Math.pow,ws=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,xs=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,Fs=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,Hn=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,Ze=1e7,vs=pa.length-1,Ar=ma.length-1,R={toStringTag:_n};function Se(r){var e,t,a,n=r.length-1,i="",o=r[0];if(n>0){for(i+=o,e=1;e<n;e++)(t=7-(a=r[e]+"").length)&&(i+=Ct(t)),i+=a;(t=7-(a=(o=r[e])+"").length)&&(i+=Ct(t))}else if(o===0)return"0";for(;o%10==0;)o/=10;return i+o}function He(r,e,t){if(r!==~~r||r<e||r>t)throw Error(Et+r)}function Xt(r,e,t,a){var n,i,o,s;for(i=r[0];i>=10;i/=10)--e;return--e<0?(e+=7,n=0):(n=Math.ceil((e+1)/7),e%=7),i=ke(10,7-e),s=r[n]%i|0,a==null?e<3?(e==0?s=s/100|0:e==1&&(s=s/10|0),o=t<4&&s==99999||t>3&&s==49999||s==5e4||s==0):o=(t<4&&s+1==i||t>3&&s+1==i/2)&&(r[n+1]/i/100|0)==ke(10,e-2)-1||(s==i/2||s==0)&&!(r[n+1]/i/100|0):e<4?(e==0?s=s/1e3|0:e==1?s=s/100|0:e==2&&(s=s/10|0),o=(a||t<4)&&s==9999||!a&&t>3&&s==4999):o=((a||t<4)&&s+1==i||!a&&t>3&&s+1==i/2)&&(r[n+1]/i/1e3|0)==ke(10,e-3)-1,o}function Ca(r,e,t){for(var a,n,i=[0],o=0,s=r.length;o<s;){for(n=i.length;n--;)i[n]*=e;for(i[0]+=or.indexOf(r.charAt(o++)),a=0;a<i.length;a++)i[a]>t-1&&(i[a+1]===void 0&&(i[a+1]=0),i[a+1]+=i[a]/t|0,i[a]%=t)}return i.reverse()}R.absoluteValue=R.abs=function(){var r=new this.constructor(this);return r.s<0&&(r.s=1),V(r)},R.ceil=function(){return V(new this.constructor(this),this.e+1,2)},R.clampedTo=R.clamp=function(r,e){var t=this,a=t.constructor;if(r=new a(r),e=new a(e),!r.s||!e.s)return new a(NaN);if(r.gt(e))throw Error(Et+e);return t.cmp(r)<0?r:t.cmp(e)>0?e:new a(t)},R.comparedTo=R.cmp=function(r){var e,t,a,n,i=this,o=i.d,s=(r=new i.constructor(r)).d,A=i.s,u=r.s;if(!o||!s)return A&&u?A!==u?A:o===s?0:!o^A<0?1:-1:NaN;if(!o[0]||!s[0])return o[0]?A:s[0]?-u:0;if(A!==u)return A;if(i.e!==r.e)return i.e>r.e^A<0?1:-1;for(e=0,t=(a=o.length)<(n=s.length)?a:n;e<t;++e)if(o[e]!==s[e])return o[e]>s[e]^A<0?1:-1;return a===n?0:a>n^A<0?1:-1},R.cosine=R.cos=function(){var r,e,t=this,a=t.constructor;return t.d?t.d[0]?(r=a.precision,e=a.rounding,a.precision=r+Math.max(t.e,t.sd())+7,a.rounding=1,t=function(n,i){var o,s,A;if(i.isZero())return i;s=i.d.length,s<32?A=(1/ya(4,o=Math.ceil(s/3))).toString():(o=16,A="2.3283064365386962890625e-10"),n.precision+=o,i=Gt(n,1,i.times(A),new n(1));for(var u=o;u--;){var c=i.times(i);i=c.times(c).minus(c).times(8).plus(1)}return n.precision-=o,i}(a,Kn(a,t)),a.precision=r,a.rounding=e,V(dt==2||dt==3?t.neg():t,r,e,!0)):new a(1):new a(NaN)},R.cubeRoot=R.cbrt=function(){var r,e,t,a,n,i,o,s,A,u,c=this,d=c.constructor;if(!c.isFinite()||c.isZero())return new d(c);for(X=!1,(i=c.s*ke(c.s*c,1/3))&&Math.abs(i)!=1/0?a=new d(i.toString()):(t=Se(c.d),(i=((r=c.e)-t.length+1)%3)&&(t+=i==1||i==-2?"0":"00"),i=ke(t,1/3),r=Re((r+1)/3)-(r%3==(r<0?-1:2)),(a=new d(t=i==1/0?"5e"+r:(t=i.toExponential()).slice(0,t.indexOf("e")+1)+r)).s=c.s),o=(r=d.precision)+3;;)if(u=(A=(s=a).times(s).times(s)).plus(c),a=ce(u.plus(c).times(s),u.plus(A),o+2,1),Se(s.d).slice(0,o)===(t=Se(a.d)).slice(0,o)){if((t=t.slice(o-3,o+1))!="9999"&&(n||t!="4999")){+t&&(+t.slice(1)||t.charAt(0)!="5")||(V(a,r+1,1),e=!a.times(a).times(a).eq(c));break}if(!n&&(V(s,r+1,0),s.times(s).times(s).eq(c))){a=s;break}o+=4,n=1}return X=!0,V(a,r,d.rounding,e)},R.decimalPlaces=R.dp=function(){var r,e=this.d,t=NaN;if(e){if(t=7*((r=e.length-1)-Re(this.e/7)),r=e[r])for(;r%10==0;r/=10)t--;t<0&&(t=0)}return t},R.dividedBy=R.div=function(r){return ce(this,new this.constructor(r))},R.dividedToIntegerBy=R.divToInt=function(r){var e=this.constructor;return V(ce(this,new e(r),0,1,1),e.precision,e.rounding)},R.equals=R.eq=function(r){return this.cmp(r)===0},R.floor=function(){return V(new this.constructor(this),this.e+1,3)},R.greaterThan=R.gt=function(r){return this.cmp(r)>0},R.greaterThanOrEqualTo=R.gte=function(r){var e=this.cmp(r);return e==1||e===0},R.hyperbolicCosine=R.cosh=function(){var r,e,t,a,n,i=this,o=i.constructor,s=new o(1);if(!i.isFinite())return new o(i.s?1/0:NaN);if(i.isZero())return s;t=o.precision,a=o.rounding,o.precision=t+Math.max(i.e,i.sd())+4,o.rounding=1,(n=i.d.length)<32?e=(1/ya(4,r=Math.ceil(n/3))).toString():(r=16,e="2.3283064365386962890625e-10"),i=Gt(o,1,i.times(e),new o(1),!0);for(var A,u=r,c=new o(8);u--;)A=i.times(i),i=s.minus(A.times(c.minus(A.times(c))));return V(i,o.precision=t,o.rounding=a,!0)},R.hyperbolicSine=R.sinh=function(){var r,e,t,a,n=this,i=n.constructor;if(!n.isFinite()||n.isZero())return new i(n);if(e=i.precision,t=i.rounding,i.precision=e+Math.max(n.e,n.sd())+4,i.rounding=1,(a=n.d.length)<3)n=Gt(i,2,n,n,!0);else{r=(r=1.4*Math.sqrt(a))>16?16:0|r,n=Gt(i,2,n=n.times(1/ya(5,r)),n,!0);for(var o,s=new i(5),A=new i(16),u=new i(20);r--;)o=n.times(n),n=n.times(s.plus(o.times(A.times(o).plus(u))))}return i.precision=e,i.rounding=t,V(n,e,t,!0)},R.hyperbolicTangent=R.tanh=function(){var r,e,t=this,a=t.constructor;return t.isFinite()?t.isZero()?new a(t):(r=a.precision,e=a.rounding,a.precision=r+7,a.rounding=1,ce(t.sinh(),t.cosh(),a.precision=r,a.rounding=e)):new a(t.s)},R.inverseCosine=R.acos=function(){var r=this,e=r.constructor,t=r.abs().cmp(1),a=e.precision,n=e.rounding;return t!==-1?t===0?r.isNeg()?it(e,a,n):new e(0):new e(NaN):r.isZero()?it(e,a+4,n).times(.5):(e.precision=a+6,e.rounding=1,r=new e(1).minus(r).div(r.plus(1)).sqrt().atan(),e.precision=a,e.rounding=n,r.times(2))},R.inverseHyperbolicCosine=R.acosh=function(){var r,e,t=this,a=t.constructor;return t.lte(1)?new a(t.eq(1)?0:NaN):t.isFinite()?(r=a.precision,e=a.rounding,a.precision=r+Math.max(Math.abs(t.e),t.sd())+4,a.rounding=1,X=!1,t=t.times(t).minus(1).sqrt().plus(t),X=!0,a.precision=r,a.rounding=e,t.ln()):new a(t)},R.inverseHyperbolicSine=R.asinh=function(){var r,e,t=this,a=t.constructor;return!t.isFinite()||t.isZero()?new a(t):(r=a.precision,e=a.rounding,a.precision=r+2*Math.max(Math.abs(t.e),t.sd())+6,a.rounding=1,X=!1,t=t.times(t).plus(1).sqrt().plus(t),X=!0,a.precision=r,a.rounding=e,t.ln())},R.inverseHyperbolicTangent=R.atanh=function(){var r,e,t,a,n=this,i=n.constructor;return n.isFinite()?n.e>=0?new i(n.abs().eq(1)?n.s/0:n.isZero()?n:NaN):(r=i.precision,e=i.rounding,a=n.sd(),Math.max(a,r)<2*-n.e-1?V(new i(n),r,e,!0):(i.precision=t=a-n.e,n=ce(n.plus(1),new i(1).minus(n),t+r,1),i.precision=r+4,i.rounding=1,n=n.ln(),i.precision=r,i.rounding=e,n.times(.5))):new i(NaN)},R.inverseSine=R.asin=function(){var r,e,t,a,n=this,i=n.constructor;return n.isZero()?new i(n):(e=n.abs().cmp(1),t=i.precision,a=i.rounding,e!==-1?e===0?((r=it(i,t+4,a).times(.5)).s=n.s,r):new i(NaN):(i.precision=t+6,i.rounding=1,n=n.div(new i(1).minus(n.times(n)).sqrt().plus(1)).atan(),i.precision=t,i.rounding=a,n.times(2)))},R.inverseTangent=R.atan=function(){var r,e,t,a,n,i,o,s,A,u=this,c=u.constructor,d=c.precision,l=c.rounding;if(u.isFinite()){if(u.isZero())return new c(u);if(u.abs().eq(1)&&d+4<=Ar)return(o=it(c,d+4,l).times(.25)).s=u.s,o}else{if(!u.s)return new c(NaN);if(d+4<=Ar)return(o=it(c,d+4,l).times(.5)).s=u.s,o}for(c.precision=s=d+10,c.rounding=1,r=t=Math.min(28,s/7+2|0);r;--r)u=u.div(u.times(u).plus(1).sqrt().plus(1));for(X=!1,e=Math.ceil(s/7),a=1,A=u.times(u),o=new c(u),n=u;r!==-1;)if(n=n.times(A),i=o.minus(n.div(a+=2)),n=n.times(A),(o=i.plus(n.div(a+=2))).d[e]!==void 0)for(r=e;o.d[r]===i.d[r]&&r--;);return t&&(o=o.times(2<<t-1)),X=!0,V(o,c.precision=d,c.rounding=l,!0)},R.isFinite=function(){return!!this.d},R.isInteger=R.isInt=function(){return!!this.d&&Re(this.e/7)>this.d.length-2},R.isNaN=function(){return!this.s},R.isNegative=R.isNeg=function(){return this.s<0},R.isPositive=R.isPos=function(){return this.s>0},R.isZero=function(){return!!this.d&&this.d[0]===0},R.lessThan=R.lt=function(r){return this.cmp(r)<0},R.lessThanOrEqualTo=R.lte=function(r){return this.cmp(r)<1},R.logarithm=R.log=function(r){var e,t,a,n,i,o,s,A,u=this,c=u.constructor,d=c.precision,l=c.rounding;if(r==null)r=new c(10),e=!0;else{if(t=(r=new c(r)).d,r.s<0||!t||!t[0]||r.eq(1))return new c(NaN);e=r.eq(10)}if(t=u.d,u.s<0||!t||!t[0]||u.eq(1))return new c(t&&!t[0]?-1/0:u.s!=1?NaN:t?0:1/0);if(e)if(t.length>1)i=!0;else{for(n=t[0];n%10==0;)n/=10;i=n!==1}if(X=!1,o=It(u,s=d+5),a=e?Ba(c,s+10):It(r,s),Xt((A=ce(o,a,s,1)).d,n=d,l))do if(o=It(u,s+=10),a=e?Ba(c,s+10):It(r,s),A=ce(o,a,s,1),!i){+Se(A.d).slice(n+1,n+15)+1==1e14&&(A=V(A,d+1,0));break}while(Xt(A.d,n+=10,l));return X=!0,V(A,d,l)},R.minus=R.sub=function(r){var e,t,a,n,i,o,s,A,u,c,d,l,h=this,b=h.constructor;if(r=new b(r),!h.d||!r.d)return h.s&&r.s?h.d?r.s=-r.s:r=new b(r.d||h.s!==r.s?h:NaN):r=new b(NaN),r;if(h.s!=r.s)return r.s=-r.s,h.plus(r);if(u=h.d,l=r.d,s=b.precision,A=b.rounding,!u[0]||!l[0]){if(l[0])r.s=-r.s;else{if(!u[0])return new b(A===3?-0:0);r=new b(h)}return X?V(r,s,A):r}if(t=Re(r.e/7),c=Re(h.e/7),u=u.slice(),i=c-t){for((d=i<0)?(e=u,i=-i,o=l.length):(e=l,t=c,o=u.length),i>(a=Math.max(Math.ceil(s/7),o)+2)&&(i=a,e.length=1),e.reverse(),a=i;a--;)e.push(0);e.reverse()}else{for((d=(a=u.length)<(o=l.length))&&(o=a),a=0;a<o;a++)if(u[a]!=l[a]){d=u[a]<l[a];break}i=0}for(d&&(e=u,u=l,l=e,r.s=-r.s),o=u.length,a=l.length-o;a>0;--a)u[o++]=0;for(a=l.length;a>i;){if(u[--a]<l[a]){for(n=a;n&&u[--n]===0;)u[n]=Ze-1;--u[n],u[a]+=Ze}u[a]-=l[a]}for(;u[--o]===0;)u.pop();for(;u[0]===0;u.shift())--t;return u[0]?(r.d=u,r.e=Ia(u,t),X?V(r,s,A):r):new b(A===3?-0:0)},R.modulo=R.mod=function(r){var e,t=this,a=t.constructor;return r=new a(r),!t.d||!r.s||r.d&&!r.d[0]?new a(NaN):!r.d||t.d&&!t.d[0]?V(new a(t),a.precision,a.rounding):(X=!1,a.modulo==9?(e=ce(t,r.abs(),0,3,1)).s*=r.s:e=ce(t,r,0,a.modulo,1),e=e.times(r),X=!0,t.minus(e))},R.naturalExponential=R.exp=function(){return cr(this)},R.naturalLogarithm=R.ln=function(){return It(this)},R.negated=R.neg=function(){var r=new this.constructor(this);return r.s=-r.s,V(r)},R.plus=R.add=function(r){var e,t,a,n,i,o,s,A,u,c,d=this,l=d.constructor;if(r=new l(r),!d.d||!r.d)return d.s&&r.s?d.d||(r=new l(r.d||d.s===r.s?d:NaN)):r=new l(NaN),r;if(d.s!=r.s)return r.s=-r.s,d.minus(r);if(u=d.d,c=r.d,s=l.precision,A=l.rounding,!u[0]||!c[0])return c[0]||(r=new l(d)),X?V(r,s,A):r;if(i=Re(d.e/7),a=Re(r.e/7),u=u.slice(),n=i-a){for(n<0?(t=u,n=-n,o=c.length):(t=c,a=i,o=u.length),n>(o=(i=Math.ceil(s/7))>o?i+1:o+1)&&(n=o,t.length=1),t.reverse();n--;)t.push(0);t.reverse()}for((o=u.length)-(n=c.length)<0&&(n=o,t=c,c=u,u=t),e=0;n;)e=(u[--n]=u[n]+c[n]+e)/Ze|0,u[n]%=Ze;for(e&&(u.unshift(e),++a),o=u.length;u[--o]==0;)u.pop();return r.d=u,r.e=Ia(u,a),X?V(r,s,A):r},R.precision=R.sd=function(r){var e,t=this;if(r!==void 0&&r!==!!r&&r!==1&&r!==0)throw Error(Et+r);return t.d?(e=On(t.d),r&&t.e+1>e&&(e=t.e+1)):e=NaN,e},R.round=function(){var r=this,e=r.constructor;return V(new e(r),r.e+1,e.rounding)},R.sine=R.sin=function(){var r,e,t=this,a=t.constructor;return t.isFinite()?t.isZero()?new a(t):(r=a.precision,e=a.rounding,a.precision=r+Math.max(t.e,t.sd())+7,a.rounding=1,t=function(n,i){var o,s=i.d.length;if(s<3)return i.isZero()?i:Gt(n,2,i,i);o=(o=1.4*Math.sqrt(s))>16?16:0|o,i=i.times(1/ya(5,o)),i=Gt(n,2,i,i);for(var A,u=new n(5),c=new n(16),d=new n(20);o--;)A=i.times(i),i=i.times(u.plus(A.times(c.times(A).minus(d))));return i}(a,Kn(a,t)),a.precision=r,a.rounding=e,V(dt>2?t.neg():t,r,e,!0)):new a(NaN)},R.squareRoot=R.sqrt=function(){var r,e,t,a,n,i,o=this,s=o.d,A=o.e,u=o.s,c=o.constructor;if(u!==1||!s||!s[0])return new c(!u||u<0&&(!s||s[0])?NaN:s?o:1/0);for(X=!1,(u=Math.sqrt(+o))==0||u==1/0?(((e=Se(s)).length+A)%2==0&&(e+="0"),u=Math.sqrt(e),A=Re((A+1)/2)-(A<0||A%2),a=new c(e=u==1/0?"5e"+A:(e=u.toExponential()).slice(0,e.indexOf("e")+1)+A)):a=new c(u.toString()),t=(A=c.precision)+3;;)if(a=(i=a).plus(ce(o,i,t+2,1)).times(.5),Se(i.d).slice(0,t)===(e=Se(a.d)).slice(0,t)){if((e=e.slice(t-3,t+1))!="9999"&&(n||e!="4999")){+e&&(+e.slice(1)||e.charAt(0)!="5")||(V(a,A+1,1),r=!a.times(a).eq(o));break}if(!n&&(V(i,A+1,0),i.times(i).eq(o))){a=i;break}t+=4,n=1}return X=!0,V(a,A,c.rounding,r)},R.tangent=R.tan=function(){var r,e,t=this,a=t.constructor;return t.isFinite()?t.isZero()?new a(t):(r=a.precision,e=a.rounding,a.precision=r+10,a.rounding=1,(t=t.sin()).s=1,t=ce(t,new a(1).minus(t.times(t)).sqrt(),r+10,0),a.precision=r,a.rounding=e,V(dt==2||dt==4?t.neg():t,r,e,!0)):new a(NaN)},R.times=R.mul=function(r){var e,t,a,n,i,o,s,A,u,c=this,d=c.constructor,l=c.d,h=(r=new d(r)).d;if(r.s*=c.s,!(l&&l[0]&&h&&h[0]))return new d(!r.s||l&&!l[0]&&!h||h&&!h[0]&&!l?NaN:l&&h?0*r.s:r.s/0);for(t=Re(c.e/7)+Re(r.e/7),(A=l.length)<(u=h.length)&&(i=l,l=h,h=i,o=A,A=u,u=o),i=[],a=o=A+u;a--;)i.push(0);for(a=u;--a>=0;){for(e=0,n=A+a;n>a;)s=i[n]+h[a]*l[n-a-1]+e,i[n--]=s%Ze|0,e=s/Ze|0;i[n]=(i[n]+e)%Ze|0}for(;!i[--o];)i.pop();return e?++t:i.shift(),r.d=i,r.e=Ia(i,t),X?V(r,d.precision,d.rounding):r},R.toBinary=function(r,e){return ur(this,2,r,e)},R.toDecimalPlaces=R.toDP=function(r,e){var t=this,a=t.constructor;return t=new a(t),r===void 0?t:(He(r,0,mt),e===void 0?e=a.rounding:He(e,0,8),V(t,r+t.e+1,e))},R.toExponential=function(r,e){var t,a=this,n=a.constructor;return r===void 0?t=nt(a,!0):(He(r,0,mt),e===void 0?e=n.rounding:He(e,0,8),t=nt(a=V(new n(a),r+1,e),!0,r+1)),a.isNeg()&&!a.isZero()?"-"+t:t},R.toFixed=function(r,e){var t,a,n=this,i=n.constructor;return r===void 0?t=nt(n):(He(r,0,mt),e===void 0?e=i.rounding:He(e,0,8),t=nt(a=V(new i(n),r+n.e+1,e),!1,r+a.e+1)),n.isNeg()&&!n.isZero()?"-"+t:t},R.toFraction=function(r){var e,t,a,n,i,o,s,A,u,c,d,l,h=this,b=h.d,g=h.constructor;if(!b)return new g(h);if(u=t=new g(1),a=A=new g(0),o=(i=(e=new g(a)).e=On(b)-h.e-1)%7,e.d[0]=ke(10,o<0?7+o:o),r==null)r=i>0?e:u;else{if(!(s=new g(r)).isInt()||s.lt(u))throw Error(Et+s);r=s.gt(e)?i>0?e:u:s}for(X=!1,s=new g(Se(b)),c=g.precision,g.precision=i=7*b.length*2;d=ce(s,e,0,1,1),(n=t.plus(d.times(a))).cmp(r)!=1;)t=a,a=n,n=u,u=A.plus(d.times(n)),A=n,n=e,e=s.minus(d.times(n)),s=n;return n=ce(r.minus(t),a,0,1,1),A=A.plus(n.times(u)),t=t.plus(n.times(a)),A.s=u.s=h.s,l=ce(u,a,i,1).minus(h).abs().cmp(ce(A,t,i,1).minus(h).abs())<1?[u,a]:[A,t],g.precision=c,X=!0,l},R.toHexadecimal=R.toHex=function(r,e){return ur(this,16,r,e)},R.toNearest=function(r,e){var t=this,a=t.constructor;if(t=new a(t),r==null){if(!t.d)return t;r=new a(1),e=a.rounding}else{if(r=new a(r),e===void 0?e=a.rounding:He(e,0,8),!t.d)return r.s?t:r;if(!r.d)return r.s&&(r.s=t.s),r}return r.d[0]?(X=!1,t=ce(t,r,0,e,1).times(r),X=!0,V(t)):(r.s=t.s,t=r),t},R.toNumber=function(){return+this},R.toOctal=function(r,e){return ur(this,8,r,e)},R.toPower=R.pow=function(r){var e,t,a,n,i,o,s=this,A=s.constructor,u=+(r=new A(r));if(!(s.d&&r.d&&s.d[0]&&r.d[0]))return new A(ke(+s,u));if((s=new A(s)).eq(1))return s;if(a=A.precision,i=A.rounding,r.eq(1))return V(s,a,i);if((e=Re(r.e/7))>=r.d.length-1&&(t=u<0?-u:u)<=9007199254740991)return n=zn(A,s,t,a),r.s<0?new A(1).div(n):V(n,a,i);if((o=s.s)<0){if(e<r.d.length-1)return new A(NaN);if(1&r.d[e]||(o=1),s.e==0&&s.d[0]==1&&s.d.length==1)return s.s=o,s}return(e=(t=ke(+s,u))!=0&&isFinite(t)?new A(t+"").e:Re(u*(Math.log("0."+Se(s.d))/Math.LN10+s.e+1)))>A.maxE+1||e<A.minE-1?new A(e>0?o/0:0):(X=!1,A.rounding=s.s=1,t=Math.min(12,(e+"").length),(n=cr(r.times(It(s,a+t)),a)).d&&Xt((n=V(n,a+5,1)).d,a,i)&&(e=a+10,+Se((n=V(cr(r.times(It(s,e+t)),e),e+5,1)).d).slice(a+1,a+15)+1==1e14&&(n=V(n,a+1,0))),n.s=o,X=!0,A.rounding=i,V(n,a,i))},R.toPrecision=function(r,e){var t,a=this,n=a.constructor;return r===void 0?t=nt(a,a.e<=n.toExpNeg||a.e>=n.toExpPos):(He(r,1,mt),e===void 0?e=n.rounding:He(e,0,8),t=nt(a=V(new n(a),r,e),r<=a.e||a.e<=n.toExpNeg,r)),a.isNeg()&&!a.isZero()?"-"+t:t},R.toSignificantDigits=R.toSD=function(r,e){var t=this.constructor;return r===void 0?(r=t.precision,e=t.rounding):(He(r,1,mt),e===void 0?e=t.rounding:He(e,0,8)),V(new t(this),r,e)},R.toString=function(){var r=this,e=r.constructor,t=nt(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()&&!r.isZero()?"-"+t:t},R.truncated=R.trunc=function(){return V(new this.constructor(this),this.e+1,1)},R.valueOf=R.toJSON=function(){var r=this,e=r.constructor,t=nt(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()?"-"+t:t};var ce=function(){function r(a,n,i){var o,s=0,A=a.length;for(a=a.slice();A--;)o=a[A]*n+s,a[A]=o%i|0,s=o/i|0;return s&&a.unshift(s),a}function e(a,n,i,o){var s,A;if(i!=o)A=i>o?1:-1;else for(s=A=0;s<i;s++)if(a[s]!=n[s]){A=a[s]>n[s]?1:-1;break}return A}function t(a,n,i,o){for(var s=0;i--;)a[i]-=s,s=a[i]<n[i]?1:0,a[i]=s*o+a[i]-n[i];for(;!a[0]&&a.length>1;)a.shift()}return function(a,n,i,o,s,A){var u,c,d,l,h,b,g,f,m,p,C,I,x,y,F,D,v,M,S,O,P=a.constructor,K=a.s==n.s?1:-1,J=a.d,q=n.d;if(!(J&&J[0]&&q&&q[0]))return new P(a.s&&n.s&&(J?!q||J[0]!=q[0]:q)?J&&J[0]==0||!q?0*K:K/0:NaN);for(A?(h=1,c=a.e-n.e):(A=Ze,h=7,c=Re(a.e/h)-Re(n.e/h)),S=q.length,v=J.length,p=(m=new P(K)).d=[],d=0;q[d]==(J[d]||0);d++);if(q[d]>(J[d]||0)&&c--,i==null?(y=i=P.precision,o=P.rounding):y=s?i+(a.e-n.e)+1:i,y<0)p.push(1),b=!0;else{if(y=y/h+2|0,d=0,S==1){for(l=0,q=q[0],y++;(d<v||l)&&y--;d++)F=l*A+(J[d]||0),p[d]=F/q|0,l=F%q|0;b=l||d<v}else{for((l=A/(q[0]+1)|0)>1&&(q=r(q,l,A),J=r(J,l,A),S=q.length,v=J.length),D=S,I=(C=J.slice(0,S)).length;I<S;)C[I++]=0;(O=q.slice()).unshift(0),M=q[0],q[1]>=A/2&&++M;do l=0,(u=e(q,C,S,I))<0?(x=C[0],S!=I&&(x=x*A+(C[1]||0)),(l=x/M|0)>1?(l>=A&&(l=A-1),(u=e(g=r(q,l,A),C,f=g.length,I=C.length))==1&&(l--,t(g,S<f?O:q,f,A))):(l==0&&(u=l=1),g=q.slice()),(f=g.length)<I&&g.unshift(0),t(C,g,I,A),u==-1&&(u=e(q,C,S,I=C.length))<1&&(l++,t(C,S<I?O:q,I,A)),I=C.length):u===0&&(l++,C=[0]),p[d++]=l,u&&C[0]?C[I++]=J[D]||0:(C=[J[D]],I=1);while((D++<v||C[0]!==void 0)&&y--);b=C[0]!==void 0}p[0]||p.shift()}if(h==1)m.e=c,Un=b;else{for(d=1,l=p[0];l>=10;l/=10)d++;m.e=d+c*h-1,V(m,s?i+m.e+1:i,o,b)}return m}}();function V(r,e,t,a){var n,i,o,s,A,u,c,d,l,h=r.constructor;e:if(e!=null){if(!(d=r.d))return r;for(n=1,s=d[0];s>=10;s/=10)n++;if((i=e-n)<0)i+=7,o=e,A=(c=d[l=0])/ke(10,n-o-1)%10|0;else if((l=Math.ceil((i+1)/7))>=(s=d.length)){if(!a)break e;for(;s++<=l;)d.push(0);c=A=0,n=1,o=(i%=7)-7+1}else{for(c=s=d[l],n=1;s>=10;s/=10)n++;A=(o=(i%=7)-7+n)<0?0:c/ke(10,n-o-1)%10|0}if(a=a||e<0||d[l+1]!==void 0||(o<0?c:c%ke(10,n-o-1)),u=t<4?(A||a)&&(t==0||t==(r.s<0?3:2)):A>5||A==5&&(t==4||a||t==6&&(i>0?o>0?c/ke(10,n-o):0:d[l-1])%10&1||t==(r.s<0?8:7)),e<1||!d[0])return d.length=0,u?(e-=r.e+1,d[0]=ke(10,(7-e%7)%7),r.e=-e||0):d[0]=r.e=0,r;if(i==0?(d.length=l,s=1,l--):(d.length=l+1,s=ke(10,7-i),d[l]=o>0?(c/ke(10,n-o)%ke(10,o)|0)*s:0),u)for(;;){if(l==0){for(i=1,o=d[0];o>=10;o/=10)i++;for(o=d[0]+=s,s=1;o>=10;o/=10)s++;i!=s&&(r.e++,d[0]==Ze&&(d[0]=1));break}if(d[l]+=s,d[l]!=Ze)break;d[l--]=0,s=1}for(i=d.length;d[--i]===0;)d.pop()}return X&&(r.e>h.maxE?(r.d=null,r.e=NaN):r.e<h.minE&&(r.e=0,r.d=[0])),r}function nt(r,e,t){if(!r.isFinite())return Jn(r);var a,n=r.e,i=Se(r.d),o=i.length;return e?(t&&(a=t-o)>0?i=i.charAt(0)+"."+i.slice(1)+Ct(a):o>1&&(i=i.charAt(0)+"."+i.slice(1)),i=i+(r.e<0?"e":"e+")+r.e):n<0?(i="0."+Ct(-n-1)+i,t&&(a=t-o)>0&&(i+=Ct(a))):n>=o?(i+=Ct(n+1-o),t&&(a=t-n-1)>0&&(i=i+"."+Ct(a))):((a=n+1)<o&&(i=i.slice(0,a)+"."+i.slice(a)),t&&(a=t-o)>0&&(n+1===o&&(i+="."),i+=Ct(a))),i}function Ia(r,e){var t=r[0];for(e*=7;t>=10;t/=10)e++;return e}function Ba(r,e,t){if(e>vs)throw X=!0,t&&(r.precision=t),Error(Ln);return V(new r(pa),e,1,!0)}function it(r,e,t){if(e>Ar)throw Error(Ln);return V(new r(ma),e,t,!0)}function On(r){var e=r.length-1,t=7*e+1;if(e=r[e]){for(;e%10==0;e/=10)t--;for(e=r[0];e>=10;e/=10)t++}return t}function Ct(r){for(var e="";r--;)e+="0";return e}function zn(r,e,t,a){var n,i=new r(1),o=Math.ceil(a/7+4);for(X=!1;;){if(t%2&&Vn((i=i.times(e)).d,o)&&(n=!0),(t=Re(t/2))===0){t=i.d.length-1,n&&i.d[t]===0&&++i.d[t];break}Vn((e=e.times(e)).d,o)}return X=!0,i}function Pn(r){return 1&r.d[r.d.length-1]}function qn(r,e,t){for(var a,n,i=new r(e[0]),o=0;++o<e.length;){if(!(n=new r(e[o])).s){i=n;break}((a=i.cmp(n))===t||a===0&&i.s===t)&&(i=n)}return i}function cr(r,e){var t,a,n,i,o,s,A,u=0,c=0,d=0,l=r.constructor,h=l.rounding,b=l.precision;if(!r.d||!r.d[0]||r.e>17)return new l(r.d?r.d[0]?r.s<0?0:1/0:1:r.s?r.s<0?0:r:NaN);for(e==null?(X=!1,A=b):A=e,s=new l(.03125);r.e>-2;)r=r.times(s),d+=5;for(A+=a=Math.log(ke(2,d))/Math.LN10*2+5|0,t=i=o=new l(1),l.precision=A;;){if(i=V(i.times(r),A,1),t=t.times(++c),Se((s=o.plus(ce(i,t,A,1))).d).slice(0,A)===Se(o.d).slice(0,A)){for(n=d;n--;)o=V(o.times(o),A,1);if(e!=null)return l.precision=b,o;if(!(u<3&&Xt(o.d,A-a,h,u)))return V(o,l.precision=b,h,X=!0);l.precision=A+=10,t=i=s=new l(1),c=0,u++}o=s}}function It(r,e){var t,a,n,i,o,s,A,u,c,d,l,h=1,b=r,g=b.d,f=b.constructor,m=f.rounding,p=f.precision;if(b.s<0||!g||!g[0]||!b.e&&g[0]==1&&g.length==1)return new f(g&&!g[0]?-1/0:b.s!=1?NaN:g?0:b);if(e==null?(X=!1,c=p):c=e,f.precision=c+=10,a=(t=Se(g)).charAt(0),!(Math.abs(i=b.e)<15e14))return u=Ba(f,c+2,p).times(i+""),b=It(new f(a+"."+t.slice(1)),c-10).plus(u),f.precision=p,e==null?V(b,p,m,X=!0):b;for(;a<7&&a!=1||a==1&&t.charAt(1)>3;)a=(t=Se((b=b.times(r)).d)).charAt(0),h++;for(i=b.e,a>1?(b=new f("0."+t),i++):b=new f(a+"."+t.slice(1)),d=b,A=o=b=ce(b.minus(1),b.plus(1),c,1),l=V(b.times(b),c,1),n=3;;){if(o=V(o.times(l),c,1),Se((u=A.plus(ce(o,new f(n),c,1))).d).slice(0,c)===Se(A.d).slice(0,c)){if(A=A.times(2),i!==0&&(A=A.plus(Ba(f,c+2,p).times(i+""))),A=ce(A,new f(h),c,1),e!=null)return f.precision=p,A;if(!Xt(A.d,c-10,m,s))return V(A,f.precision=p,m,X=!0);f.precision=c+=10,u=o=b=ce(d.minus(1),d.plus(1),c,1),l=V(b.times(b),c,1),n=s=1}A=u,n+=2}}function Jn(r){return String(r.s*r.s/0)}function Da(r,e){var t,a,n;for((t=e.indexOf("."))>-1&&(e=e.replace(".","")),(a=e.search(/e/i))>0?(t<0&&(t=a),t+=+e.slice(a+1),e=e.substring(0,a)):t<0&&(t=e.length),a=0;e.charCodeAt(a)===48;a++);for(n=e.length;e.charCodeAt(n-1)===48;--n);if(e=e.slice(a,n)){if(n-=a,r.e=t=t-a-1,r.d=[],a=(t+1)%7,t<0&&(a+=7),a<n){for(a&&r.d.push(+e.slice(0,a)),n-=7;a<n;)r.d.push(+e.slice(a,a+=7));a=7-(e=e.slice(a)).length}else a-=n;for(;a--;)e+="0";r.d.push(+e),X&&(r.e>r.constructor.maxE?(r.d=null,r.e=NaN):r.e<r.constructor.minE&&(r.e=0,r.d=[0]))}else r.e=0,r.d=[0];return r}function Qs(r,e){var t,a,n,i,o,s,A,u,c;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),Hn.test(e))return Da(r,e)}else if(e==="Infinity"||e==="NaN")return+e||(r.s=NaN),r.e=NaN,r.d=null,r;if(xs.test(e))t=16,e=e.toLowerCase();else if(ws.test(e))t=2;else{if(!Fs.test(e))throw Error(Et+e);t=8}for((i=e.search(/p/i))>0?(A=+e.slice(i+1),e=e.substring(2,i)):e=e.slice(2),o=(i=e.indexOf("."))>=0,a=r.constructor,o&&(i=(s=(e=e.replace(".","")).length)-i,n=zn(a,new a(t),i,2*i)),i=c=(u=Ca(e,t,Ze)).length-1;u[i]===0;--i)u.pop();return i<0?new a(0*r.s):(r.e=Ia(u,c),r.d=u,X=!1,o&&(r=ce(r,n,4*s)),A&&(r=r.times(Math.abs(A)<54?ke(2,A):_t.pow(2,A))),X=!0,r)}function Gt(r,e,t,a,n){var i,o,s,A,u=r.precision,c=Math.ceil(u/7);for(X=!1,A=t.times(t),s=new r(a);;){if(o=ce(s.times(A),new r(e++*e++),u,1),s=n?a.plus(o):a.minus(o),a=ce(o.times(A),new r(e++*e++),u,1),(o=s.plus(a)).d[c]!==void 0){for(i=c;o.d[i]===s.d[i]&&i--;);if(i==-1)break}i=s,s=a,a=o,o=i}return X=!0,o.d.length=c+1,o}function ya(r,e){for(var t=r;--e;)t*=r;return t}function Kn(r,e){var t,a=e.s<0,n=it(r,r.precision,1),i=n.times(.5);if((e=e.abs()).lte(i))return dt=a?4:1,e;if((t=e.divToInt(n)).isZero())dt=a?3:2;else{if((e=e.minus(t.times(n))).lte(i))return dt=Pn(t)?a?2:3:a?4:1,e;dt=Pn(t)?a?1:4:a?3:2}return e.minus(n).abs()}function ur(r,e,t,a){var n,i,o,s,A,u,c,d,l,h=r.constructor,b=t!==void 0;if(b?(He(t,1,mt),a===void 0?a=h.rounding:He(a,0,8)):(t=h.precision,a=h.rounding),r.isFinite()){for(b?(n=2,e==16?t=4*t-3:e==8&&(t=3*t-2)):n=e,(o=(c=nt(r)).indexOf("."))>=0&&(c=c.replace(".",""),(l=new h(1)).e=c.length-o,l.d=Ca(nt(l),10,n),l.e=l.d.length),i=A=(d=Ca(c,10,n)).length;d[--A]==0;)d.pop();if(d[0]){if(o<0?i--:((r=new h(r)).d=d,r.e=i,d=(r=ce(r,l,t,a,0,n)).d,i=r.e,u=Un),o=d[t],s=n/2,u=u||d[t+1]!==void 0,u=a<4?(o!==void 0||u)&&(a===0||a===(r.s<0?3:2)):o>s||o===s&&(a===4||u||a===6&&1&d[t-1]||a===(r.s<0?8:7)),d.length=t,u)for(;++d[--t]>n-1;)d[t]=0,t||(++i,d.unshift(1));for(A=d.length;!d[A-1];--A);for(o=0,c="";o<A;o++)c+=or.charAt(d[o]);if(b){if(A>1)if(e==16||e==8){for(o=e==16?4:3,--A;A%o;A++)c+="0";for(A=(d=Ca(c,n,e)).length;!d[A-1];--A);for(o=1,c="1.";o<A;o++)c+=or.charAt(d[o])}else c=c.charAt(0)+"."+c.slice(1);c=c+(i<0?"p":"p+")+i}else if(i<0){for(;++i;)c="0"+c;c="0."+c}else if(++i>A)for(i-=A;i--;)c+="0";else i<A&&(c=c.slice(0,i)+"."+c.slice(i))}else c=b?"0p+0":"0";c=(e==16?"0x":e==2?"0b":e==8?"0o":"")+c}else c=Jn(r);return r.s<0?"-"+c:c}function Vn(r,e){if(r.length>e)return r.length=e,!0}function ks(r){return new this(r).abs()}function js(r){return new this(r).acos()}function Ms(r){return new this(r).acosh()}function Ss(r,e){return new this(r).plus(e)}function Rs(r){return new this(r).asin()}function Ts(r){return new this(r).asinh()}function Ns(r){return new this(r).atan()}function Us(r){return new this(r).atanh()}function Ls(r,e){r=new this(r),e=new this(e);var t,a=this.precision,n=this.rounding,i=a+4;return r.s&&e.s?r.d||e.d?!e.d||r.isZero()?(t=e.s<0?it(this,a,n):new this(0)).s=r.s:!r.d||e.isZero()?(t=it(this,i,1).times(.5)).s=r.s:e.s<0?(this.precision=i,this.rounding=1,t=this.atan(ce(r,e,i,1)),e=it(this,i,1),this.precision=a,this.rounding=n,t=r.s<0?t.minus(e):t.plus(e)):t=this.atan(ce(r,e,i,1)):(t=it(this,i,1).times(e.s>0?.25:.75)).s=r.s:t=new this(NaN),t}function Gs(r){return new this(r).cbrt()}function _s(r){return V(r=new this(r),r.e+1,2)}function Hs(r,e,t){return new this(r).clamp(e,t)}function Os(r){if(!r||typeof r!="object")throw Error(Ea+"Object expected");var e,t,a,n=r.defaults===!0,i=["precision",1,mt,"rounding",0,8,"toExpNeg",-9e15,0,"toExpPos",0,ir,"maxE",0,ir,"minE",-9e15,0,"modulo",0,9];for(e=0;e<i.length;e+=3)if(t=i[e],n&&(this[t]=sr[t]),(a=r[t])!==void 0){if(!(Re(a)===a&&a>=i[e+1]&&a<=i[e+2]))throw Error(Et+t+": "+a);this[t]=a}if(t="crypto",n&&(this[t]=sr[t]),(a=r[t])!==void 0){if(a!==!0&&a!==!1&&a!==0&&a!==1)throw Error(Et+t+": "+a);if(a){if(typeof crypto>"u"||!crypto||!crypto.getRandomValues&&!crypto.randomBytes)throw Error(Gn);this[t]=!0}else this[t]=!1}return this}function zs(r){return new this(r).cos()}function Ps(r){return new this(r).cosh()}function qs(r,e){return new this(r).div(e)}function Js(r){return new this(r).exp()}function Ks(r){return V(r=new this(r),r.e+1,3)}function Vs(){var r,e,t=new this(0);for(X=!1,r=0;r<arguments.length;)if((e=new this(arguments[r++])).d)t.d&&(t=t.plus(e.times(e)));else{if(e.s)return X=!0,new this(1/0);t=e}return X=!0,t.sqrt()}function Wn(r){return r instanceof _t||r&&r.toStringTag===_n||!1}function Ws(r){return new this(r).ln()}function Ys(r,e){return new this(r).log(e)}function Xs(r){return new this(r).log(2)}function Zs(r){return new this(r).log(10)}function $s(){return qn(this,arguments,-1)}function eA(){return qn(this,arguments,1)}function tA(r,e){return new this(r).mod(e)}function aA(r,e){return new this(r).mul(e)}function rA(r,e){return new this(r).pow(e)}function nA(r){var e,t,a,n,i=0,o=new this(1),s=[];if(r===void 0?r=this.precision:He(r,1,mt),a=Math.ceil(r/7),this.crypto)if(crypto.getRandomValues)for(e=crypto.getRandomValues(new Uint32Array(a));i<a;)(n=e[i])>=429e7?e[i]=crypto.getRandomValues(new Uint32Array(1))[0]:s[i++]=n%1e7;else{if(!crypto.randomBytes)throw Error(Gn);for(e=crypto.randomBytes(a*=4);i<a;)(n=e[i]+(e[i+1]<<8)+(e[i+2]<<16)+((127&e[i+3])<<24))>=214e7?crypto.randomBytes(4).copy(e,i):(s.push(n%1e7),i+=4);i=a/4}else for(;i<a;)s[i++]=1e7*Math.random()|0;for(r%=7,(a=s[--i])&&r&&(n=ke(10,7-r),s[i]=(a/n|0)*n);s[i]===0;i--)s.pop();if(i<0)t=0,s=[0];else{for(t=-1;s[0]===0;t-=7)s.shift();for(a=1,n=s[0];n>=10;n/=10)a++;a<7&&(t-=7-a)}return o.e=t,o.d=s,o}function iA(r){return V(r=new this(r),r.e+1,this.rounding)}function oA(r){return(r=new this(r)).d?r.d[0]?r.s:0*r.s:r.s||NaN}function sA(r){return new this(r).sin()}function AA(r){return new this(r).sinh()}function cA(r){return new this(r).sqrt()}function uA(r,e){return new this(r).sub(e)}function dA(){var r=0,e=arguments,t=new this(e[r]);for(X=!1;t.s&&++r<e.length;)t=t.plus(e[r]);return X=!0,V(t,this.precision,this.rounding)}function hA(r){return new this(r).tan()}function bA(r){return new this(r).tanh()}function lA(r){return V(r=new this(r),r.e+1,1)}R[Symbol.for("nodejs.util.inspect.custom")]=R.toString,R[Symbol.toStringTag]="Decimal";var _t=R.constructor=function r(e){var t,a,n;function i(o){var s,A,u,c=this;if(!(c instanceof i))return new i(o);if(c.constructor=i,Wn(o))return c.s=o.s,void(X?!o.d||o.e>i.maxE?(c.e=NaN,c.d=null):o.e<i.minE?(c.e=0,c.d=[0]):(c.e=o.e,c.d=o.d.slice()):(c.e=o.e,c.d=o.d?o.d.slice():o.d));if((u=typeof o)=="number"){if(o===0)return c.s=1/o<0?-1:1,c.e=0,void(c.d=[0]);if(o<0?(o=-o,c.s=-1):c.s=1,o===~~o&&o<1e7){for(s=0,A=o;A>=10;A/=10)s++;return void(X?s>i.maxE?(c.e=NaN,c.d=null):s<i.minE?(c.e=0,c.d=[0]):(c.e=s,c.d=[o]):(c.e=s,c.d=[o]))}return 0*o!=0?(o||(c.s=NaN),c.e=NaN,void(c.d=null)):Da(c,o.toString())}if(u==="string")return(A=o.charCodeAt(0))===45?(o=o.slice(1),c.s=-1):(A===43&&(o=o.slice(1)),c.s=1),Hn.test(o)?Da(c,o):Qs(c,o);if(u==="bigint")return o<0?(o=-o,c.s=-1):c.s=1,Da(c,o.toString());throw Error(Et+o)}if(i.prototype=R,i.ROUND_UP=0,i.ROUND_DOWN=1,i.ROUND_CEIL=2,i.ROUND_FLOOR=3,i.ROUND_HALF_UP=4,i.ROUND_HALF_DOWN=5,i.ROUND_HALF_EVEN=6,i.ROUND_HALF_CEIL=7,i.ROUND_HALF_FLOOR=8,i.EUCLID=9,i.config=i.set=Os,i.clone=r,i.isDecimal=Wn,i.abs=ks,i.acos=js,i.acosh=Ms,i.add=Ss,i.asin=Rs,i.asinh=Ts,i.atan=Ns,i.atanh=Us,i.atan2=Ls,i.cbrt=Gs,i.ceil=_s,i.clamp=Hs,i.cos=zs,i.cosh=Ps,i.div=qs,i.exp=Js,i.floor=Ks,i.hypot=Vs,i.ln=Ws,i.log=Ys,i.log10=Zs,i.log2=Xs,i.max=$s,i.min=eA,i.mod=tA,i.mul=aA,i.pow=rA,i.random=nA,i.round=iA,i.sign=oA,i.sin=sA,i.sinh=AA,i.sqrt=cA,i.sub=uA,i.sum=dA,i.tan=hA,i.tanh=bA,i.trunc=lA,e===void 0&&(e={}),e&&e.defaults!==!0)for(n=["precision","rounding","toExpNeg","toExpPos","maxE","minE","modulo","crypto"],t=0;t<n.length;)e.hasOwnProperty(a=n[t++])||(e[a]=this[a]);return i.config(e),i}(sr);pa=new _t(pa),ma=new _t(ma);var gA=ne("BigNumber",["?on","config"],r=>{var{on:e,config:t}=r,a=_t.clone({precision:t.precision,modulo:_t.EUCLID});return a.prototype=Object.create(a.prototype),a.prototype.type="BigNumber",a.prototype.isBigNumber=!0,a.prototype.toJSON=function(){return{mathjs:"BigNumber",value:this.toString()}},a.fromJSON=function(n){return new a(n.value)},e&&e("config",function(n,i){n.precision!==i.precision&&a.config({precision:n.precision})}),a},{isClass:!0});const Te=Math.cosh||function(r){return Math.abs(r)<1e-9?1-r:.5*(Math.exp(r)+Math.exp(-r))},We=Math.sinh||function(r){return Math.abs(r)<1e-9?r:.5*(Math.exp(r)-Math.exp(-r))},dr=function(r,e){return(r=Math.abs(r))<(e=Math.abs(e))&&([r,e]=[e,r]),r<1e8?Math.sqrt(r*r+e*e):(e/=r,r*Math.sqrt(1+e*e))},Ht=function(){throw SyntaxError("Invalid Param")};function hr(r,e){const t=Math.abs(r),a=Math.abs(e);return r===0?Math.log(a):e===0?Math.log(t):t<3e3&&a<3e3?.5*Math.log(r*r+e*e):(r*=.5,e*=.5,.5*Math.log(r*r+e*e)+Math.LN2)}const fA={re:0,im:0},Ft=function(r,e){const t=fA;if(r==null)t.re=t.im=0;else if(e!==void 0)t.re=r,t.im=e;else switch(typeof r){case"object":if("im"in r&&"re"in r)t.re=r.re,t.im=r.im;else if("abs"in r&&"arg"in r){if(!isFinite(r.abs)&&isFinite(r.arg))return k.INFINITY;t.re=r.abs*Math.cos(r.arg),t.im=r.abs*Math.sin(r.arg)}else if("r"in r&&"phi"in r){if(!isFinite(r.r)&&isFinite(r.phi))return k.INFINITY;t.re=r.r*Math.cos(r.phi),t.im=r.r*Math.sin(r.phi)}else r.length===2?(t.re=r[0],t.im=r[1]):Ht();break;case"string":t.im=t.re=0;const a=r.replace(/_/g,"").match(/\d+\.?\d*e[+-]?\d+|\d+\.?\d*|\.\d+|./g);let n=1,i=0;a===null&&Ht();for(let o=0;o<a.length;o++){const s=a[o];s===" "||s===" "||s===`
|
|
22
|
+
`||(s==="+"?n++:s==="-"?i++:s==="i"||s==="I"?(n+i===0&&Ht(),a[o+1]===" "||isNaN(a[o+1])?t.im+=parseFloat((i%2?"-":"")+"1"):(t.im+=parseFloat((i%2?"-":"")+a[o+1]),o++),n=i=0):((n+i===0||isNaN(s))&&Ht(),a[o+1]==="i"||a[o+1]==="I"?(t.im+=parseFloat((i%2?"-":"")+s),o++):t.re+=parseFloat((i%2?"-":"")+s),n=i=0))}n+i>0&&Ht();break;case"number":t.im=0,t.re=r;break;default:Ht()}return isNaN(t.re)||isNaN(t.im),t};function k(r,e){if(!(this instanceof k))return new k(r,e);const t=Ft(r,e);this.re=t.re,this.im=t.im}k.prototype={re:0,im:0,sign:function(){const r=dr(this.re,this.im);return new k(this.re/r,this.im/r)},add:function(r,e){const t=Ft(r,e),a=this.isInfinite(),n=!(isFinite(t.re)&&isFinite(t.im));return a||n?a&&n?k.NAN:k.INFINITY:new k(this.re+t.re,this.im+t.im)},sub:function(r,e){const t=Ft(r,e),a=this.isInfinite(),n=!(isFinite(t.re)&&isFinite(t.im));return a||n?a&&n?k.NAN:k.INFINITY:new k(this.re-t.re,this.im-t.im)},mul:function(r,e){const t=Ft(r,e),a=this.isInfinite(),n=!(isFinite(t.re)&&isFinite(t.im)),i=this.re===0&&this.im===0,o=t.re===0&&t.im===0;return a&&o||n&&i?k.NAN:a||n?k.INFINITY:t.im===0&&this.im===0?new k(this.re*t.re,0):new k(this.re*t.re-this.im*t.im,this.re*t.im+this.im*t.re)},div:function(r,e){const t=Ft(r,e),a=this.isInfinite(),n=!(isFinite(t.re)&&isFinite(t.im)),i=this.re===0&&this.im===0,o=t.re===0&&t.im===0;if(i&&o||a&&n)return k.NAN;if(o||a)return k.INFINITY;if(i||n)return k.ZERO;if(t.im===0)return new k(this.re/t.re,this.im/t.re);if(Math.abs(t.re)<Math.abs(t.im)){const s=t.re/t.im,A=t.re*s+t.im;return new k((this.re*s+this.im)/A,(this.im*s-this.re)/A)}{const s=t.im/t.re,A=t.im*s+t.re;return new k((this.re+this.im*s)/A,(this.im-this.re*s)/A)}},pow:function(r,e){const t=Ft(r,e),a=this.re===0&&this.im===0;if(t.re===0&&t.im===0)return k.ONE;if(t.im===0){if(this.im===0&&this.re>0)return new k(Math.pow(this.re,t.re),0);if(this.re===0)switch((t.re%4+4)%4){case 0:return new k(Math.pow(this.im,t.re),0);case 1:return new k(0,Math.pow(this.im,t.re));case 2:return new k(-Math.pow(this.im,t.re),0);case 3:return new k(0,-Math.pow(this.im,t.re))}}if(a&&t.re>0)return k.ZERO;const n=Math.atan2(this.im,this.re),i=hr(this.re,this.im);let o=Math.exp(t.re*i-t.im*n),s=t.im*i+t.re*n;return new k(o*Math.cos(s),o*Math.sin(s))},sqrt:function(){const r=this.re,e=this.im;if(e===0)return r>=0?new k(Math.sqrt(r),0):new k(0,Math.sqrt(-r));const t=dr(r,e);let a=Math.sqrt(.5*(t+Math.abs(r))),n=Math.abs(e)/(2*a);return r>=0?new k(a,e<0?-n:n):new k(n,e<0?-a:a)},exp:function(){const r=Math.exp(this.re);return this.im===0?new k(r,0):new k(r*Math.cos(this.im),r*Math.sin(this.im))},expm1:function(){const r=this.re,e=this.im;return new k(Math.expm1(r)*Math.cos(e)+function(t){const a=Math.PI/4;if(-a>t||t>a)return Math.cos(t)-1;const n=t*t;return n*(n*(n*(n*(n*(n*(n*(n/20922789888e3-1/87178291200)+1/479001600)-1/3628800)+1/40320)-1/720)+1/24)-.5)}(e),Math.exp(r)*Math.sin(e))},log:function(){const r=this.re,e=this.im;return e===0&&r>0?new k(Math.log(r),0):new k(hr(r,e),Math.atan2(e,r))},abs:function(){return dr(this.re,this.im)},arg:function(){return Math.atan2(this.im,this.re)},sin:function(){const r=this.re,e=this.im;return new k(Math.sin(r)*Te(e),Math.cos(r)*We(e))},cos:function(){const r=this.re,e=this.im;return new k(Math.cos(r)*Te(e),-Math.sin(r)*We(e))},tan:function(){const r=2*this.re,e=2*this.im,t=Math.cos(r)+Te(e);return new k(Math.sin(r)/t,We(e)/t)},cot:function(){const r=2*this.re,e=2*this.im,t=Math.cos(r)-Te(e);return new k(-Math.sin(r)/t,We(e)/t)},sec:function(){const r=this.re,e=this.im,t=.5*Te(2*e)+.5*Math.cos(2*r);return new k(Math.cos(r)*Te(e)/t,Math.sin(r)*We(e)/t)},csc:function(){const r=this.re,e=this.im,t=.5*Te(2*e)-.5*Math.cos(2*r);return new k(Math.sin(r)*Te(e)/t,-Math.cos(r)*We(e)/t)},asin:function(){const r=this.re,e=this.im,t=new k(e*e-r*r+1,-2*r*e).sqrt(),a=new k(t.re-e,t.im+r).log();return new k(a.im,-a.re)},acos:function(){const r=this.re,e=this.im,t=new k(e*e-r*r+1,-2*r*e).sqrt(),a=new k(t.re-e,t.im+r).log();return new k(Math.PI/2-a.im,a.re)},atan:function(){const r=this.re,e=this.im;if(r===0){if(e===1)return new k(0,1/0);if(e===-1)return new k(0,-1/0)}const t=r*r+(1-e)*(1-e),a=new k((1-e*e-r*r)/t,-2*r/t).log();return new k(-.5*a.im,.5*a.re)},acot:function(){const r=this.re,e=this.im;if(e===0)return new k(Math.atan2(1,r),0);const t=r*r+e*e;return t!==0?new k(r/t,-e/t).atan():new k(r!==0?r/0:0,e!==0?-e/0:0).atan()},asec:function(){const r=this.re,e=this.im;if(r===0&&e===0)return new k(0,1/0);const t=r*r+e*e;return t!==0?new k(r/t,-e/t).acos():new k(r!==0?r/0:0,e!==0?-e/0:0).acos()},acsc:function(){const r=this.re,e=this.im;if(r===0&&e===0)return new k(Math.PI/2,1/0);const t=r*r+e*e;return t!==0?new k(r/t,-e/t).asin():new k(r!==0?r/0:0,e!==0?-e/0:0).asin()},sinh:function(){const r=this.re,e=this.im;return new k(We(r)*Math.cos(e),Te(r)*Math.sin(e))},cosh:function(){const r=this.re,e=this.im;return new k(Te(r)*Math.cos(e),We(r)*Math.sin(e))},tanh:function(){const r=2*this.re,e=2*this.im,t=Te(r)+Math.cos(e);return new k(We(r)/t,Math.sin(e)/t)},coth:function(){const r=2*this.re,e=2*this.im,t=Te(r)-Math.cos(e);return new k(We(r)/t,-Math.sin(e)/t)},csch:function(){const r=this.re,e=this.im,t=Math.cos(2*e)-Te(2*r);return new k(-2*We(r)*Math.cos(e)/t,2*Te(r)*Math.sin(e)/t)},sech:function(){const r=this.re,e=this.im,t=Math.cos(2*e)+Te(2*r);return new k(2*Te(r)*Math.cos(e)/t,-2*We(r)*Math.sin(e)/t)},asinh:function(){let r=this.im;this.im=-this.re,this.re=r;const e=this.asin();return this.re=-this.im,this.im=r,r=e.re,e.re=-e.im,e.im=r,e},acosh:function(){const r=this.acos();if(r.im<=0){const e=r.re;r.re=-r.im,r.im=e}else{const e=r.im;r.im=-r.re,r.re=e}return r},atanh:function(){const r=this.re,e=this.im,t=r>1&&e===0,a=1-r,n=1+r,i=a*a+e*e,o=i!==0?new k((n*a-e*e)/i,(e*a+n*e)/i):new k(r!==-1?r/0:0,e!==0?e/0:0),s=o.re;return o.re=hr(o.re,o.im)/2,o.im=Math.atan2(o.im,s)/2,t&&(o.im=-o.im),o},acoth:function(){const r=this.re,e=this.im;if(r===0&&e===0)return new k(0,Math.PI/2);const t=r*r+e*e;return t!==0?new k(r/t,-e/t).atanh():new k(r!==0?r/0:0,e!==0?-e/0:0).atanh()},acsch:function(){const r=this.re,e=this.im;if(e===0)return new k(r!==0?Math.log(r+Math.sqrt(r*r+1)):1/0,0);const t=r*r+e*e;return t!==0?new k(r/t,-e/t).asinh():new k(r!==0?r/0:0,e!==0?-e/0:0).asinh()},asech:function(){const r=this.re,e=this.im;if(this.isZero())return k.INFINITY;const t=r*r+e*e;return t!==0?new k(r/t,-e/t).acosh():new k(r!==0?r/0:0,e!==0?-e/0:0).acosh()},inverse:function(){if(this.isZero())return k.INFINITY;if(this.isInfinite())return k.ZERO;const r=this.re,e=this.im,t=r*r+e*e;return new k(r/t,-e/t)},conjugate:function(){return new k(this.re,-this.im)},neg:function(){return new k(-this.re,-this.im)},ceil:function(r){return r=Math.pow(10,r||0),new k(Math.ceil(this.re*r)/r,Math.ceil(this.im*r)/r)},floor:function(r){return r=Math.pow(10,r||0),new k(Math.floor(this.re*r)/r,Math.floor(this.im*r)/r)},round:function(r){return r=Math.pow(10,r||0),new k(Math.round(this.re*r)/r,Math.round(this.im*r)/r)},equals:function(r,e){const t=Ft(r,e);return Math.abs(t.re-this.re)<=k.EPSILON&&Math.abs(t.im-this.im)<=k.EPSILON},clone:function(){return new k(this.re,this.im)},toString:function(){let r=this.re,e=this.im,t="";return this.isNaN()?"NaN":this.isInfinite()?"Infinity":(Math.abs(r)<k.EPSILON&&(r=0),Math.abs(e)<k.EPSILON&&(e=0),e===0?t+r:(r!==0?(t+=r,t+=" ",e<0?(e=-e,t+="-"):t+="+",t+=" "):e<0&&(e=-e,t+="-"),e!==1&&(t+=e),t+"i"))},toVector:function(){return[this.re,this.im]},valueOf:function(){return this.im===0?this.re:null},isNaN:function(){return isNaN(this.re)||isNaN(this.im)},isZero:function(){return this.im===0&&this.re===0},isFinite:function(){return isFinite(this.re)&&isFinite(this.im)},isInfinite:function(){return!this.isFinite()}},k.ZERO=new k(0,0),k.ONE=new k(1,0),k.I=new k(0,1),k.PI=new k(Math.PI,0),k.E=new k(Math.E,0),k.INFINITY=new k(1/0,1/0),k.NAN=new k(NaN,NaN),k.EPSILON=1e-15;var pA=ne("Complex",[],()=>(Object.defineProperty(k,"name",{value:"Complex"}),k.prototype.constructor=k,k.prototype.type="Complex",k.prototype.isComplex=!0,k.prototype.toJSON=function(){return{mathjs:"Complex",re:this.re,im:this.im}},k.prototype.toPolar=function(){return{r:this.abs(),phi:this.arg()}},k.prototype.format=function(r){var e=this.im,t=this.re,a=nr(this.re,r),n=nr(this.im,r),i=le(r)?r:r?r.precision:null;if(i!==null){var o=Math.pow(10,-i);Math.abs(t/e)<o&&(t=0),Math.abs(e/t)<o&&(e=0)}return e===0?a:t===0?e===1?"i":e===-1?"-i":n+"i":e<0?e===-1?a+" - i":a+" - "+n.substring(1)+"i":e===1?a+" + i":a+" + "+n+"i"},k.fromPolar=function(r){switch(arguments.length){case 1:var e=arguments[0];if(typeof e=="object")return k(e);throw new TypeError("Input has to be an object with r and phi keys.");case 2:var t=arguments[0],a=arguments[1];if(le(t)){if(Qn(a)&&a.hasBase("ANGLE")&&(a=a.toNumber("rad")),le(a))return new k({r:t,phi:a});throw new TypeError("Phi is not a number nor an angle unit.")}throw new TypeError("Radius r is not a number.");default:throw new SyntaxError("Wrong number of arguments in function fromPolar")}},k.prototype.valueOf=k.prototype.toString,k.fromJSON=function(r){return new k(r)},k.compare=function(r,e){return r.re>e.re?1:r.re<e.re?-1:r.im>e.im?1:r.im<e.im?-1:0},k),{isClass:!0});typeof BigInt>"u"&&(BigInt=function(r){if(isNaN(r))throw new Error("");return r});const W=BigInt(0),Z=BigInt(1),Zt=BigInt(2),br=BigInt(5),Oe=BigInt(10),H={s:Z,n:W,d:Z};function ht(r,e){try{r=BigInt(r)}catch{throw Bt()}return r*e}function $e(r){return typeof r=="bigint"?r:Math.floor(r)}function ge(r,e){if(e===W)throw lr();const t=Object.create(Ye.prototype);t.s=r<W?-Z:Z;const a=vt(r=r<W?-r:r,e);return t.n=r/a,t.d=e/a,t}function Ot(r){const e={};let t=r,a=Zt,n=br-Z;for(;n<=t;){for(;t%a===W;)t/=a,e[a]=(e[a]||W)+Z;n+=Z+Zt*a++}return t!==r?t>1&&(e[t]=(e[t]||W)+Z):e[r]=(e[r]||W)+Z,e}const je=function(r,e){let t=W,a=Z,n=Z;if(r!=null)if(e!==void 0){if(typeof r=="bigint")t=r;else{if(isNaN(r))throw Bt();if(r%1!=0)throw Yn();t=BigInt(r)}if(typeof e=="bigint")a=e;else{if(isNaN(e))throw Bt();if(e%1!=0)throw Yn();a=BigInt(e)}n=t*a}else if(typeof r=="object"){if("d"in r&&"n"in r)t=BigInt(r.n),a=BigInt(r.d),"s"in r&&(t*=BigInt(r.s));else if(0 in r)t=BigInt(r[0]),1 in r&&(a=BigInt(r[1]));else{if(typeof r!="bigint")throw Bt();t=r}n=t*a}else if(typeof r=="number"){if(isNaN(r))throw Bt();if(r<0&&(n=-Z,r=-r),r%1==0)t=BigInt(r);else{let i=1,o=0,s=1,A=1,u=1,c=1e7;for(r>=1&&(i=10**Math.floor(1+Math.log10(r)),r/=i);s<=c&&u<=c;){let d=(o+A)/(s+u);if(r===d){s+u<=c?(t=o+A,a=s+u):u>s?(t=A,a=u):(t=o,a=s);break}r>d?(o+=A,s+=u):(A+=o,u+=s),s>c?(t=A,a=u):(t=o,a=s)}t=BigInt(t)*BigInt(i),a=BigInt(a)}}else if(typeof r=="string"){let i=0,o=W,s=W,A=W,u=Z,c=Z,d=r.replace(/_/g,"").match(/\d+|./g);if(d===null||(d[i]==="-"?(n=-Z,i++):d[i]==="+"&&i++,d.length===i+1?s=ht(d[i++],n):d[i+1]==="."||d[i]==="."?(d[i]!=="."&&(o=ht(d[i++],n)),i++,(i+1===d.length||d[i+1]==="("&&d[i+3]===")"||d[i+1]==="'"&&d[i+3]==="'")&&(s=ht(d[i],n),u=Oe**BigInt(d[i].length),i++),(d[i]==="("&&d[i+2]===")"||d[i]==="'"&&d[i+2]==="'")&&(A=ht(d[i+1],n),c=Oe**BigInt(d[i+1].length)-Z,i+=3)):d[i+1]==="/"||d[i+1]===":"?(s=ht(d[i],n),u=ht(d[i+2],Z),i+=3):d[i+3]==="/"&&d[i+1]===" "&&(o=ht(d[i],n),s=ht(d[i+2],n),u=ht(d[i+4],Z),i+=5),!(d.length<=i)))throw Bt();a=u*c,n=t=A+a*o+c*s}else{if(typeof r!="bigint")throw Bt();t=r,n=r,a=Z}if(a===W)throw lr();H.s=n<W?-Z:Z,H.n=t<W?-t:t,H.d=a<W?-a:a};function mA(r,e,t){let a=Z,n=function(i,o,s){let A=Z;for(;o>W;i=i*i%s,o>>=Z)o&Z&&(A=A*i%s);return A}(Oe,t,e);for(let i=0;i<300;i++){if(a===n)return BigInt(i);a=a*Oe%e,n=n*Oe%e}return 0}function vt(r,e){if(!r)return e;if(!e)return r;for(;;){if(!(r%=e))return e;if(!(e%=r))return r}}function Ye(r,e){if(je(r,e),!(this instanceof Ye))return ge(H.s*H.n,H.d);r=vt(H.d,H.n),this.s=H.s,this.n=H.n/r,this.d=H.d/r}var lr=function(){return new Error("Division by Zero")},Bt=function(){return new Error("Invalid argument")},Yn=function(){return new Error("Parameters must be integer")};Ye.prototype={s:Z,n:W,d:Z,abs:function(){return ge(this.n,this.d)},neg:function(){return ge(-this.s*this.n,this.d)},add:function(r,e){return je(r,e),ge(this.s*this.n*H.d+H.s*this.d*H.n,this.d*H.d)},sub:function(r,e){return je(r,e),ge(this.s*this.n*H.d-H.s*this.d*H.n,this.d*H.d)},mul:function(r,e){return je(r,e),ge(this.s*H.s*this.n*H.n,this.d*H.d)},div:function(r,e){return je(r,e),ge(this.s*H.s*this.n*H.d,this.d*H.n)},clone:function(){return ge(this.s*this.n,this.d)},mod:function(r,e){if(r===void 0)return ge(this.s*this.n%this.d,Z);if(je(r,e),W===H.n*this.d)throw lr();return ge(this.s*(H.d*this.n)%(H.n*this.d),H.d*this.d)},gcd:function(r,e){return je(r,e),ge(vt(H.n,this.n)*vt(H.d,this.d),H.d*this.d)},lcm:function(r,e){return je(r,e),H.n===W&&this.n===W?ge(W,Z):ge(H.n*this.n,vt(H.n,this.n)*vt(H.d,this.d))},inverse:function(){return ge(this.s*this.d,this.n)},pow:function(r,e){if(je(r,e),H.d===Z)return H.s<W?ge((this.s*this.d)**H.n,this.n**H.n):ge((this.s*this.n)**H.n,this.d**H.n);if(this.s<W)return null;let t=Ot(this.n),a=Ot(this.d),n=Z,i=Z;for(let o in t)if(o!=="1"){if(o==="0"){n=W;break}if(t[o]*=H.n,t[o]%H.d!==W)return null;t[o]/=H.d,n*=BigInt(o)**t[o]}for(let o in a)if(o!=="1"){if(a[o]*=H.n,a[o]%H.d!==W)return null;a[o]/=H.d,i*=BigInt(o)**a[o]}return H.s<W?ge(i,n):ge(n,i)},log:function(r,e){if(je(r,e),this.s<=W||H.s<=W)return null;const t={},a=Ot(H.n),n=Ot(H.d),i=Ot(this.n),o=Ot(this.d);for(const u in n)a[u]=(a[u]||W)-n[u];for(const u in o)i[u]=(i[u]||W)-o[u];for(const u in a)u!=="1"&&(t[u]=!0);for(const u in i)u!=="1"&&(t[u]=!0);let s=null,A=null;for(const u in t){const c=a[u]||W,d=i[u]||W;if(c===W){if(d!==W)return null;continue}let l=d,h=c;const b=vt(l,h);if(l/=b,h/=b,s===null&&A===null)s=l,A=h;else if(l*A!=s*h)return null}return s!==null&&A!==null?ge(s,A):null},equals:function(r,e){return je(r,e),this.s*this.n*H.d==H.s*H.n*this.d},lt:function(r,e){return je(r,e),this.s*this.n*H.d<H.s*H.n*this.d},lte:function(r,e){return je(r,e),this.s*this.n*H.d<=H.s*H.n*this.d},gt:function(r,e){return je(r,e),this.s*this.n*H.d>H.s*H.n*this.d},gte:function(r,e){return je(r,e),this.s*this.n*H.d>=H.s*H.n*this.d},compare:function(r,e){je(r,e);let t=this.s*this.n*H.d-H.s*H.n*this.d;return(W<t)-(t<W)},ceil:function(r){return r=Oe**BigInt(r||0),ge($e(this.s*r*this.n/this.d)+(r*this.n%this.d>W&&this.s>=W?Z:W),r)},floor:function(r){return r=Oe**BigInt(r||0),ge($e(this.s*r*this.n/this.d)-(r*this.n%this.d>W&&this.s<W?Z:W),r)},round:function(r){return r=Oe**BigInt(r||0),ge($e(this.s*r*this.n/this.d)+this.s*((this.s>=W?Z:W)+Zt*(r*this.n%this.d)>this.d?Z:W),r)},roundTo:function(r,e){je(r,e);const t=this.n*H.d,a=this.d*H.n,n=t%a;let i=$e(t/a);return n+n>=a&&i++,ge(this.s*i*H.n,H.d)},divisible:function(r,e){return je(r,e),!(!(H.n*this.d)||this.n*H.d%(H.n*this.d))},valueOf:function(){return Number(this.s*this.n)/Number(this.d)},toString:function(r){let e=this.n,t=this.d;r=r||15;let a=function(o,s){for(;s%Zt===W;s/=Zt);for(;s%br===W;s/=br);if(s===Z)return W;let A=Oe%s,u=1;for(;A!==Z;u++)if(A=A*Oe%s,u>2e3)return W;return BigInt(u)}(0,t),n=mA(0,t,a),i=this.s<W?"-":"";if(i+=$e(e/t),e%=t,e*=Oe,e&&(i+="."),a){for(let o=n;o--;)i+=$e(e/t),e%=t,e*=Oe;i+="(";for(let o=a;o--;)i+=$e(e/t),e%=t,e*=Oe;i+=")"}else for(let o=r;e&&o--;)i+=$e(e/t),e%=t,e*=Oe;return i},toFraction:function(r){let e=this.n,t=this.d,a=this.s<W?"-":"";if(t===Z)a+=e;else{let n=$e(e/t);r&&n>W&&(a+=n,a+=" ",e%=t),a+=e,a+="/",a+=t}return a},toLatex:function(r){let e=this.n,t=this.d,a=this.s<W?"-":"";if(t===Z)a+=e;else{let n=$e(e/t);r&&n>W&&(a+=n,e%=t),a+="\\frac{",a+=e,a+="}{",a+=t,a+="}"}return a},toContinued:function(){let r=this.n,e=this.d,t=[];do{t.push($e(r/e));let a=r%e;r=e,e=a}while(r!==Z);return t},simplify:function(r){const e=BigInt(1/(r||.001)|0),t=this.abs(),a=t.toContinued();for(let n=1;n<a.length;n++){let i=ge(a[n-1],Z);for(let s=n-2;s>=0;s--)i=i.inverse().add(a[s]);let o=i.sub(t);if(o.n*e<o.d)return i.mul(this.s)}return this}};var EA=ne("Fraction",[],()=>(Object.defineProperty(Ye,"name",{value:"Fraction"}),Ye.prototype.constructor=Ye,Ye.prototype.type="Fraction",Ye.prototype.isFraction=!0,Ye.prototype.toJSON=function(){return{mathjs:"Fraction",n:String(this.s*this.n),d:String(this.d)}},Ye.fromJSON=function(r){return new Ye(r)},Ye),{isClass:!0}),CA=ne("Matrix",[],()=>{function r(){if(!(this instanceof r))throw new SyntaxError("Constructor must be called with the new operator")}return r.prototype.type="Matrix",r.prototype.isMatrix=!0,r.prototype.storage=function(){throw new Error("Cannot invoke storage on a Matrix interface")},r.prototype.datatype=function(){throw new Error("Cannot invoke datatype on a Matrix interface")},r.prototype.create=function(e,t){throw new Error("Cannot invoke create on a Matrix interface")},r.prototype.subset=function(e,t,a){throw new Error("Cannot invoke subset on a Matrix interface")},r.prototype.get=function(e){throw new Error("Cannot invoke get on a Matrix interface")},r.prototype.set=function(e,t,a){throw new Error("Cannot invoke set on a Matrix interface")},r.prototype.resize=function(e,t){throw new Error("Cannot invoke resize on a Matrix interface")},r.prototype.reshape=function(e,t){throw new Error("Cannot invoke reshape on a Matrix interface")},r.prototype.clone=function(){throw new Error("Cannot invoke clone on a Matrix interface")},r.prototype.size=function(){throw new Error("Cannot invoke size on a Matrix interface")},r.prototype.map=function(e,t){throw new Error("Cannot invoke map on a Matrix interface")},r.prototype.forEach=function(e){throw new Error("Cannot invoke forEach on a Matrix interface")},r.prototype[Symbol.iterator]=function(){throw new Error("Cannot iterate a Matrix interface")},r.prototype.toArray=function(){throw new Error("Cannot invoke toArray on a Matrix interface")},r.prototype.valueOf=function(){throw new Error("Cannot invoke valueOf on a Matrix interface")},r.prototype.format=function(e){throw new Error("Cannot invoke format on a Matrix interface")},r.prototype.toString=function(){throw new Error("Cannot invoke toString on a Matrix interface")},r},{isClass:!0});function gr(r,e,t){var a=new r.constructor(2),n="";if(t){if(t<1)throw new Error("size must be in greater than 0");if(!me(t))throw new Error("size must be an integer");if(r.greaterThan(a.pow(t-1).sub(1))||r.lessThan(a.pow(t-1).mul(-1)))throw new Error("Value must be in range [-2^".concat(t-1,", 2^").concat(t-1,"-1]"));if(!r.isInteger())throw new Error("Value must be an integer");r.lessThan(0)&&(r=r.add(a.pow(t))),n="i".concat(t)}switch(e){case 2:return"".concat(r.toBinary()).concat(n);case 8:return"".concat(r.toOctal()).concat(n);case 16:return"".concat(r.toHexadecimal()).concat(n);default:throw new Error("Base ".concat(e," not supported "))}}function IA(r,e){if(typeof e=="function")return e(r);if(!r.isFinite())return r.isNaN()?"NaN":r.gt(0)?"Infinity":"-Infinity";var{notation:t,precision:a,wordSize:n}=Mn(e);switch(t){case"fixed":return function(u,c){return u.toFixed(c)}(r,a);case"exponential":return Xn(r,a);case"engineering":return function(u,c){var d=u.e,l=d%3==0?d:d<0?d-3-d%3:d-d%3,h=u.mul(Math.pow(10,-l)),b=h.toPrecision(c);return b.includes("e")&&(b=new u.constructor(b).toFixed()),b+"e"+(d>=0?"+":"")+l.toString()}(r,a);case"bin":return gr(r,2,n);case"oct":return gr(r,8,n);case"hex":return gr(r,16,n);case"auto":var i=Zn(e==null?void 0:e.lowerExp,-3),o=Zn(e==null?void 0:e.upperExp,5);if(r.isZero())return"0";var s=r.toSignificantDigits(a),A=s.e;return(A>=i&&A<o?s.toFixed():Xn(r,a)).replace(/((\.\d*?)(0+))($|e)/,function(){var u=arguments[2],c=arguments[4];return u!=="."?u+c:c});default:throw new Error('Unknown notation "'+t+'". Choose "auto", "exponential", "fixed", "bin", "oct", or "hex.')}}function Xn(r,e){return e!==void 0?r.toExponential(e-1):r.toExponential()}function Zn(r,e){return le(r)?r:xe(r)?r.toNumber():e}function Fe(r,e){var t=function(a,n){return typeof a=="number"?nr(a,n):xe(a)?IA(a,n):function(i){return i&&typeof i=="object"&&typeof i.s=="bigint"&&typeof i.n=="bigint"&&typeof i.d=="bigint"||!1}(a)?n&&n.fraction==="decimal"?a.toString():"".concat(a.s*a.n,"/").concat(a.d):Array.isArray(a)?ti(a,n):rt(a)?$n(a):typeof a=="function"?a.syntax?String(a.syntax):"function":a&&typeof a=="object"?typeof a.format=="function"?a.format(n):a&&a.toString(n)!=={}.toString()?a.toString(n):"{"+Object.keys(a).map(i=>$n(i)+": "+Fe(a[i],n)).join(", ")+"}":String(a)}(r,e);return e&&typeof e=="object"&&"truncate"in e&&t.length>e.truncate?t.substring(0,e.truncate-3)+"...":t}function $n(r){for(var e=String(r),t="",a=0;a<e.length;){var n=e.charAt(a);t+=n in ei?ei[n]:n,a++}return'"'+t+'"'}var ei={'"':'\\"',"\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r"," ":"\\t"};function ti(r,e){if(Array.isArray(r)){for(var t="[",a=r.length,n=0;n<a;n++)n!==0&&(t+=", "),t+=ti(r[n],e);return t+="]"}return Fe(r,e)}function fe(r,e,t){if(!(this instanceof fe))throw new SyntaxError("Constructor must be called with the new operator");this.actual=r,this.expected=e,this.relation=t,this.message="Dimension mismatch ("+(Array.isArray(r)?"["+r.join(", ")+"]":r)+" "+(this.relation||"!=")+" "+(Array.isArray(e)?"["+e.join(", ")+"]":e)+")",this.stack=new Error().stack}function zt(r,e,t){if(!(this instanceof zt))throw new SyntaxError("Constructor must be called with the new operator");this.index=r,arguments.length<3?(this.min=0,this.max=e):(this.min=e,this.max=t),this.min!==void 0&&this.index<this.min?this.message="Index out of range ("+this.index+" < "+this.min+")":this.max!==void 0&&this.index>=this.max?this.message="Index out of range ("+this.index+" > "+(this.max-1)+")":this.message="Index out of range ("+this.index+")",this.stack=new Error().stack}function Le(r){for(var e=[];Array.isArray(r);)e.push(r.length),r=r[0];return e}function ai(r,e,t){var a,n=r.length;if(n!==e[t])throw new fe(n,e[t]);if(t<e.length-1){var i=t+1;for(a=0;a<n;a++){var o=r[a];if(!Array.isArray(o))throw new fe(e.length-1,e.length,"<");ai(r[a],e,i)}}else for(a=0;a<n;a++)if(Array.isArray(r[a]))throw new fe(e.length+1,e.length,">")}function ri(r,e){if(e.length===0){if(Array.isArray(r))throw new fe(r.length,0)}else ai(r,e,0)}function Ce(r,e){if(r!==void 0){if(!le(r)||!me(r))throw new TypeError("Index must be an integer (value: "+r+")");if(r<0||typeof e=="number"&&r>=e)throw new zt(r,e)}}function fr(r,e,t){if(!Array.isArray(e))throw new TypeError("Array expected");if(e.length===0)throw new Error("Resizing to scalar is not supported");return e.forEach(function(a){if(!le(a)||!me(a)||a<0)throw new TypeError("Invalid size, must contain positive integers (size: "+Fe(e)+")")}),(le(r)||xe(r))&&(r=[r]),pr(r,e,0,t!==void 0?t:0),r}function pr(r,e,t,a){var n,i,o=r.length,s=e[t],A=Math.min(o,s);if(r.length=s,t<e.length-1){var u=t+1;for(n=0;n<A;n++)i=r[n],Array.isArray(i)||(i=[i],r[n]=i),pr(i,e,u,a);for(n=A;n<s;n++)i=[],r[n]=i,pr(i,e,u,a)}else{for(n=0;n<A;n++)for(;Array.isArray(r[n]);)r[n]=r[n][0];for(n=A;n<s;n++)r[n]=a}}function ni(r,e){var t=function(i){var o=arguments.length>1&&arguments[1]!==void 0&&arguments[1];if(!Array.isArray(i))return i;if(typeof o!="boolean")throw new TypeError("Boolean expected for second argument of flatten");var s=[];return o?u(i):A(i),s;function A(c){for(var d=0;d<c.length;d++){var l=c[d];Array.isArray(l)?A(l):s.push(l)}}function u(c){if(Array.isArray(c[0]))for(var d=0;d<c.length;d++)u(c[d]);else for(var l=0;l<c.length;l++)s.push(c[l])}}(r,!0),a=t.length;if(!Array.isArray(r)||!Array.isArray(e))throw new TypeError("Array expected");if(e.length===0)throw new fe(0,a,"!=");var n=ii(e=mr(e,a));if(a!==n)throw new fe(n,a,"!=");try{return function(i,o){for(var s,A=i,u=o.length-1;u>0;u--){var c=o[u];s=[];for(var d=A.length/c,l=0;l<d;l++)s.push(A.slice(l*c,(l+1)*c));A=s}return A}(t,e)}catch(i){throw i instanceof fe?new fe(n,a,"!="):i}}function mr(r,e){var t=ii(r),a=r.slice(),n=r.indexOf(-1);if(r.indexOf(-1,n+1)>=0)throw new Error("More than one wildcard in sizes");if(n>=0){if(e%t!=0)throw new Error("Could not replace wildcard, since "+e+" is no multiple of "+-t);a[n]=-e/t}return a}function ii(r){return r.reduce((e,t)=>e*t,1)}function oi(r,e,t,a){var n=a||Le(r);if(t)for(var i=0;i<t;i++)r=[r],n.unshift(1);for(r=si(r,e,0);n.length<e;)n.push(1);return r}function si(r,e,t){var a,n;if(Array.isArray(r)){var i=t+1;for(a=0,n=r.length;a<n;a++)r[a]=si(r[a],e,i)}else for(var o=t;o<e;o++)r=[r];return r}function Er(r,e){for(var t,a=0,n=0;n<r.length;n++){var i=r[n],o=Array.isArray(i);if(n===0&&o&&(a=i.length),o&&i.length!==a)return;var s=o?Er(i,e):e(i);if(t===void 0)t=s;else if(t!==s)return"mixed"}return t}function Ai(r,e,t,a){if(a<t){if(r.length!==e.length)throw new fe(r.length,e.length);for(var n=[],i=0;i<r.length;i++)n[i]=Ai(r[i],e[i],t,a+1);return n}return r.concat(e)}function BA(){var r=Array.prototype.slice.call(arguments,0,-1),e=Array.prototype.slice.call(arguments,-1);if(r.length===1)return r[0];if(r.length>1)return r.slice(1).reduce(function(t,a){return Ai(t,a,e,0)},r[0]);throw new Error("Wrong number of arguments in function concat")}function ci(r,e){for(var t=e.length,a=r.length,n=0;n<a;n++){var i=t-a+n;if(r[n]<e[i]&&r[n]>1||r[n]>e[i])throw new Error("shape mismatch: mismatch is found in arg with shape (".concat(r,") not possible to broadcast dimension ").concat(a," with size ").concat(r[n]," to size ").concat(e[i]))}}function ui(r,e){var t=Le(r);if(Nt(t,e))return r;ci(t,e);var a,n,i,o=function(){for(var d=arguments.length,l=new Array(d),h=0;h<d;h++)l[h]=arguments[h];for(var b=l.map(F=>F.length),g=Math.max(...b),f=new Array(g).fill(null),m=0;m<l.length;m++)for(var p=l[m],C=b[m],I=0;I<C;I++){var x=g-C+I;p[I]>f[x]&&(f[x]=p[I])}for(var y=0;y<l.length;y++)ci(l[y],f);return f}(t,e),s=o.length,A=[...Array(s-t.length).fill(1),...t],u=function(d){return oa([],d)}(r);t.length<s&&(t=Le(u=ni(u,A)));for(var c=0;c<s;c++)t[c]<o[c]&&(a=u,n=o[c],i=c,t=Le(u=BA(...Array(n).fill(a),i)));return u}function di(r,e){if(!Array.isArray(r))throw new Error("Array expected");var t=Le(r);if(e.length!==t.length)throw new fe(e.length,t.length);for(var a=0;a<e.length;a++)Ce(e[a],t[a]);return e.reduce((n,i)=>n[i],r)}function hi(r,e){var t=arguments.length>2&&arguments[2]!==void 0&&arguments[2];if(r.length===0)return[];if(t)return function n(i){if(Array.isArray(i)){for(var o=i.length,s=Array(o),A=0;A<o;A++)s[A]=n(i[A]);return s}return e(i)}(r);var a=[];return function n(i,o){if(Array.isArray(i)){for(var s=i.length,A=Array(s),u=0;u<s;u++)a[o]=u,A[u]=n(i[u],o+1);return A}return e(i,a.slice(0,o),r)}(r,0)}function wa(r,e,t){var a=arguments.length>3&&arguments[3]!==void 0&&arguments[3];if(ua.isTypedFunction(r)){var n,i;if(a)n=1;else{var o=(e.isMatrix?e.size():Le(e)).map(()=>0),s=e.isMatrix?e.get(o):di(e,o);n=function(u,c,d,l){for(var h=[c,d,l],b=3;b>0;b--){var g=h.slice(0,b);if(ua.resolve(u,g)!==null)return b}}(r,s,o,e)}if(e.isMatrix&&e.dataType!=="mixed"&&e.dataType!==void 0){var A=function(u,c){var d=[];if(Object.entries(u.signatures).forEach(l=>{var[h,b]=l;h.split(",").length===c&&d.push(b)}),d.length===1)return d[0]}(r,n);i=A!==void 0?A:r}else i=r;return n>=1&&n<=3?{isUnary:n===1,fn:function(){for(var u=arguments.length,c=new Array(u),d=0;d<u;d++)c[d]=arguments[d];return bi(i,c.slice(0,n),t,r.name)}}:{isUnary:!1,fn:function(){for(var u=arguments.length,c=new Array(u),d=0;d<u;d++)c[d]=arguments[d];return bi(i,c,t,r.name)}}}return a===void 0?{isUnary:DA(r),fn:r}:{isUnary:a,fn:r}}function DA(r){if(r.length!==1)return!1;var e=r.toString();if(/arguments/.test(e))return!1;var t=e.match(/\(.*?\)/);return!/\.\.\./.test(t)}function bi(r,e,t,a){try{return r(...e)}catch(n){(function(i,o,s,A){var u;if(i instanceof TypeError&&((u=i.data)===null||u===void 0?void 0:u.category)==="wrongType"){var c=[];throw c.push("value: ".concat(pt(o[0]))),o.length>=2&&c.push("index: ".concat(pt(o[1]))),o.length>=3&&c.push("array: ".concat(pt(o[2]))),new TypeError("Function ".concat(s," cannot apply callback arguments ")+"".concat(A,"(").concat(c.join(", "),") at index ").concat(JSON.stringify(o[1])))}throw new TypeError("Function ".concat(s," cannot apply callback arguments ")+"to function ".concat(A,": ").concat(i.message))})(n,e,t,a)}}fe.prototype=new RangeError,fe.prototype.constructor=RangeError,fe.prototype.name="DimensionError",fe.prototype.isDimensionError=!0,zt.prototype=new RangeError,zt.prototype.constructor=RangeError,zt.prototype.name="IndexError",zt.prototype.isIndexError=!0;var yA=ne("DenseMatrix",["Matrix"],r=>{var{Matrix:e}=r;function t(A,u){if(!(this instanceof t))throw new SyntaxError("Constructor must be called with the new operator");if(u&&!rt(u))throw new Error("Invalid datatype: "+u);if(Be(A))A.type==="DenseMatrix"?(this._data=De(A._data),this._size=De(A._size),this._datatype=u||A._datatype):(this._data=A.toArray(),this._size=A.size(),this._datatype=u||A._datatype);else if(A&&Qe(A.data)&&Qe(A.size))this._data=A.data,this._size=A.size,ri(this._data,this._size),this._datatype=u||A.datatype;else if(Qe(A))this._data=s(A),this._size=Le(this._data),ri(this._data,this._size),this._datatype=u;else{if(A)throw new TypeError("Unsupported type of data ("+pt(A)+")");this._data=[],this._size=[0],this._datatype=u}}function a(A,u,c,d){var l=d===c-1,h=u.dimension(d);return l?h.map(function(b){return Ce(b,A.length),A[b]}).valueOf():h.map(function(b){return Ce(b,A.length),a(A[b],u,c,d+1)}).valueOf()}function n(A,u,c,d,l){var h=l===d-1,b=u.dimension(l);h?b.forEach(function(g,f){Ce(g),A[g]=c[f[0]]}):b.forEach(function(g,f){Ce(g),n(A[g],u,c[f[0]],d,l+1)})}function i(A,u,c){if(u.length===0){for(var d=A._data;Qe(d);)d=d[0];return d}return A._size=u.slice(0),A._data=fr(A._data,A._size,c),A}function o(A,u,c){for(var d=A._size.slice(0),l=!1;d.length<u.length;)d.push(0),l=!0;for(var h=0,b=u.length;h<b;h++)u[h]>d[h]&&(d[h]=u[h],l=!0);l&&i(A,d,c)}function s(A){return Be(A)?s(A.valueOf()):Qe(A)?A.map(s):A}return t.prototype=new e,t.prototype.createDenseMatrix=function(A,u){return new t(A,u)},Object.defineProperty(t,"name",{value:"DenseMatrix"}),t.prototype.constructor=t,t.prototype.type="DenseMatrix",t.prototype.isDenseMatrix=!0,t.prototype.getDataType=function(){return Er(this._data,pt)},t.prototype.storage=function(){return"dense"},t.prototype.datatype=function(){return this._datatype},t.prototype.create=function(A,u){return new t(A,u)},t.prototype.subset=function(A,u,c){switch(arguments.length){case 1:return function(d,l){if(!tr(l))throw new TypeError("Invalid index");var h=l.isScalar();if(h)return d.get(l.min());var b=l.size();if(b.length!==d._size.length)throw new fe(b.length,d._size.length);for(var g=l.min(),f=l.max(),m=0,p=d._size.length;m<p;m++)Ce(g[m],d._size[m]),Ce(f[m],d._size[m]);return new t(a(d._data,l,b.length,0),d._datatype)}(this,A);case 2:case 3:return function(d,l,h,b){if(!l||l.isIndex!==!0)throw new TypeError("Invalid index");var g,f=l.size(),m=l.isScalar();if(Be(h)?(g=h.size(),h=h.valueOf()):g=Le(h),m){if(g.length!==0)throw new TypeError("Scalar expected");d.set(l.min(),h,b)}else{if(!Nt(g,f))try{g=Le(h=g.length===0?ui([h],f):ui(h,f))}catch{}if(f.length<d._size.length)throw new fe(f.length,d._size.length,"<");if(g.length<f.length){for(var p=0,C=0;f[p]===1&&g[p]===1;)p++;for(;f[p]===1;)C++,p++;h=oi(h,f.length,C,g)}if(!Nt(f,g))throw new fe(f,g,">");var I=l.max().map(function(F){return F+1});o(d,I,b);var x=f.length,y=0;n(d._data,l,h,x,y)}return d}(this,A,u,c);default:throw new SyntaxError("Wrong number of arguments")}},t.prototype.get=function(A){return di(this._data,A)},t.prototype.set=function(A,u,c){if(!Qe(A))throw new TypeError("Array expected");if(A.length<this._size.length)throw new fe(A.length,this._size.length,"<");var d,l,h,b=A.map(function(f){return f+1});o(this,b,c);var g=this._data;for(d=0,l=A.length-1;d<l;d++)Ce(h=A[d],g.length),g=g[h];return Ce(h=A[A.length-1],g.length),g[h]=u,this},t.prototype.resize=function(A,u,c){if(!Aa(A))throw new TypeError("Array or Matrix expected");var d=A.valueOf().map(l=>Array.isArray(l)&&l.length===1?l[0]:l);return i(c?this.clone():this,d,u)},t.prototype.reshape=function(A,u){var c=u?this.clone():this;c._data=ni(c._data,A);var d=c._size.reduce((l,h)=>l*h);return c._size=mr(A,d),c},t.prototype.clone=function(){return new t({data:De(this._data),size:De(this._size),datatype:this._datatype})},t.prototype.size=function(){return this._size.slice(0)},t.prototype._forEach=function(A){var u=A.length===2,c=this._size.length-1;if(!(c<0))if(u)(function h(b){var g=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;if(g<c)for(var f=0;f<b.length;f++)h(b[f],g+1);else for(var m=0;m<b.length;m++)A(b,m)})(this._data);else if(c!==0){var d=new Array(c+1);(function h(b){var g=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;if(g<c)for(var f=0;f<b.length;f++)d[g]=f,h(b[f],g+1);else for(var m=0;m<b.length;m++)d[g]=m,A(b,m,d.slice())})(this._data)}else for(var l=0;l<this._data.length;l++)A(this._data,l,[l])},t.prototype.map=function(A){var u=arguments.length>2&&arguments[2]!==void 0&&arguments[2],c=this,d=new t(c),l=wa(A,c._data,"map",u),h=u||l.isUnary?(b,g)=>{b[g]=l.fn(b[g])}:(b,g,f)=>{b[g]=l.fn(b[g],f,c)};return d._forEach(h),d},t.prototype.forEach=function(A){var u=arguments.length>2&&arguments[2]!==void 0&&arguments[2],c=this,d=wa(A,c._data,"map",u),l=u||d.isUnary?(h,b)=>{d.fn(h[b])}:(h,b,g)=>{d.fn(h[b],g,c)};c._forEach(l)},t.prototype[Symbol.iterator]=function*(){var A=this._size.length-1;if(!(A<0))if(A!==0){var u=[],c=function*(l,h){if(h<A)for(var b=0;b<l.length;b++)u[h]=b,yield*c(l[b],h+1);else for(var g=0;g<l.length;g++)u[h]=g,yield{value:l[g],index:u.slice()}};yield*c(this._data,0)}else for(var d=0;d<this._data.length;d++)yield{value:this._data[d],index:[d]}},t.prototype.rows=function(){var A=[];if(this.size().length!==2)throw new TypeError("Rows can only be returned for a 2D matrix.");var u=this._data;for(var c of u)A.push(new t([c],this._datatype));return A},t.prototype.columns=function(){var A=this,u=[],c=this.size();if(c.length!==2)throw new TypeError("Rows can only be returned for a 2D matrix.");for(var d=this._data,l=function(b){var g=d.map(f=>[f[b]]);u.push(new t(g,A._datatype))},h=0;h<c[1];h++)l(h);return u},t.prototype.toArray=function(){return De(this._data)},t.prototype.valueOf=function(){return this._data},t.prototype.format=function(A){return Fe(this._data,A)},t.prototype.toString=function(){return Fe(this._data)},t.prototype.toJSON=function(){return{mathjs:"DenseMatrix",data:this._data,size:this._size,datatype:this._datatype}},t.prototype.diagonal=function(A){if(A){if(xe(A)&&(A=A.toNumber()),!le(A)||!me(A))throw new TypeError("The parameter k must be an integer number")}else A=0;for(var u=A>0?A:0,c=A<0?-A:0,d=this._size[0],l=this._size[1],h=Math.min(d-c,l-u),b=[],g=0;g<h;g++)b[g]=this._data[g+c][g+u];return new t({data:b,size:[h],datatype:this._datatype})},t.diagonal=function(A,u,c,d){if(!Qe(A))throw new TypeError("Array expected, size parameter");if(A.length!==2)throw new Error("Only two dimensions matrix are supported");if(A=A.map(function(x){if(xe(x)&&(x=x.toNumber()),!le(x)||!me(x)||x<1)throw new Error("Size values must be positive integers");return x}),c){if(xe(c)&&(c=c.toNumber()),!le(c)||!me(c))throw new TypeError("The parameter k must be an integer number")}else c=0;var l,h=c>0?c:0,b=c<0?-c:0,g=A[0],f=A[1],m=Math.min(g-b,f-h);if(Qe(u)){if(u.length!==m)throw new Error("Invalid value array length");l=function(x){return u[x]}}else if(Be(u)){var p=u.size();if(p.length!==1||p[0]!==m)throw new Error("Invalid matrix length");l=function(x){return u.get([x])}}else l=function(){return u};d||(d=xe(l(0))?l(0).mul(0):0);var C=[];if(A.length>0){C=fr(C,A,d);for(var I=0;I<m;I++)C[I+b][I+h]=l(I)}return new t({data:C,size:[g,f]})},t.fromJSON=function(A){return new t(A)},t.prototype.swapRows=function(A,u){if(!(le(A)&&me(A)&&le(u)&&me(u)))throw new Error("Row index must be positive integers");if(this._size.length!==2)throw new Error("Only two dimensional matrix is supported");return Ce(A,this._size[0]),Ce(u,this._size[0]),t._swapRows(A,u,this._data),this},t._swapRows=function(A,u,c){var d=c[A];c[A]=c[u],c[u]=d},t},{isClass:!0});function Qt(r,e,t){if(!t)return Be(r)?r.map(n=>e(n),!1,!0):hi(r,e,!0);var a=n=>n===0?n:e(n);return Be(r)?r.map(n=>a(n),!1,!0):hi(r,a,!0)}var li="number",xa="number, number";function gi(r){return Math.abs(r)}function fi(r,e){return r+e}function pi(r,e){return r-e}function mi(r,e){return r*e}function Ei(r){return-r}function Ci(r,e){return r*r<1&&e===1/0||r*r>1&&e===-1/0?0:Math.pow(r,e)}function Cr(r,e){if(e<r)return 1;if(e===r)return e;var t=e+r>>1;return Cr(r,t)*Cr(t+1,e)}function Fa(r){var e;if(me(r))return r<=0?isFinite(r)?1/0:NaN:r>171?1/0:Cr(1,r-1);if(r<.5)return Math.PI/(Math.sin(Math.PI*r)*Fa(1-r));if(r>=171.35)return 1/0;if(r>85){var t=r*r,a=t*r,n=a*r,i=n*r;return Math.sqrt(2*Math.PI/r)*Math.pow(r/Math.E,r)*(1+1/(12*r)+1/(288*t)-139/(51840*a)-571/(2488320*n)+163879/(209018880*i)+5246819/(75246796800*i*r))}--r,e=Pt[0];for(var o=1;o<Pt.length;++o)e+=Pt[o]/(r+o);var s=r+Ii+.5;return Math.sqrt(2*Math.PI)*Math.pow(s,r+.5)*Math.exp(-s)*e}gi.signature=li,fi.signature=xa,pi.signature=xa,mi.signature=xa,Ei.signature=li,Ci.signature=xa,Fa.signature="number";var Ii=4.7421875,Pt=[.9999999999999971,57.15623566586292,-59.59796035547549,14.136097974741746,-.4919138160976202,3399464998481189e-20,4652362892704858e-20,-9837447530487956e-20,.0001580887032249125,-.00021026444172410488,.00021743961811521265,-.0001643181065367639,8441822398385275e-20,-26190838401581408e-21,36899182659531625e-22],Bi="isZero",wA=ne(Bi,["typed","equalScalar"],r=>{var{typed:e,equalScalar:t}=r;return e(Bi,{"number | BigNumber | Complex | Fraction":a=>t(a,0),bigint:a=>a===0n,Unit:e.referToSelf(a=>n=>e.find(a,n.valueType())(n.value)),"Array | Matrix":e.referToSelf(a=>n=>Qt(n,a))})}),xA=ne("compareUnits",["typed"],r=>{var{typed:e}=r;return{"Unit, Unit":e.referToSelf(t=>(a,n)=>{if(!a.equalBase(n))throw new Error("Cannot compare units with different base");return e.find(t,[a.valueType(),n.valueType()])(a.value,n.value)})}}),va="equalScalar",FA=ne(va,["typed","config"],r=>{var{typed:e,config:t}=r,a=xA({typed:e});return e(va,{"boolean, boolean":function(n,i){return n===i},"number, number":function(n,i){return ba(n,i,t.relTol,t.absTol)},"BigNumber, BigNumber":function(n,i){return n.eq(i)||function(o,s){var A=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1e-9,u=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0;if(A<=0)throw new Error("Relative tolerance must be greater than 0");if(u<0)throw new Error("Absolute tolerance must be at least 0");return!o.isNaN()&&!s.isNaN()&&(o.isFinite()&&s.isFinite()?!!o.eq(s)||o.minus(s).abs().lte(o.constructor.max(o.constructor.max(o.abs(),s.abs()).mul(A),u)):o.eq(s))}(n,i,t.relTol,t.absTol)},"bigint, bigint":function(n,i){return n===i},"Fraction, Fraction":function(n,i){return n.equals(i)},"Complex, Complex":function(n,i){return function(o,s,A,u){return ba(o.re,s.re,A,u)&&ba(o.im,s.im,A,u)}(n,i,t.relTol,t.absTol)}},a)});ne(va,["typed","config"],r=>{var{typed:e,config:t}=r;return e(va,{"number, number":function(a,n){return ba(a,n,t.relTol,t.absTol)}})});var vA=ne("SparseMatrix",["typed","equalScalar","Matrix"],r=>{var{typed:e,equalScalar:t,Matrix:a}=r;function n(c,d){if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");if(d&&!rt(d))throw new Error("Invalid datatype: "+d);if(Be(c))(function(l,h,b){h.type==="SparseMatrix"?(l._values=h._values?De(h._values):void 0,l._index=De(h._index),l._ptr=De(h._ptr),l._size=De(h._size),l._datatype=b||h._datatype):i(l,h.valueOf(),b||h._datatype)})(this,c,d);else if(c&&Qe(c.index)&&Qe(c.ptr)&&Qe(c.size))this._values=c.values,this._index=c.index,this._ptr=c.ptr,this._size=c.size,this._datatype=d||c.datatype;else if(Qe(c))i(this,c,d);else{if(c)throw new TypeError("Unsupported type of data ("+pt(c)+")");this._values=[],this._index=[],this._ptr=[0],this._size=[0,0],this._datatype=d}}function i(c,d,l){c._values=[],c._index=[],c._ptr=[],c._datatype=l;var h=d.length,b=0,g=t,f=0;if(rt(l)&&(g=e.find(t,[l,l])||t,f=e.convert(0,l)),h>0){var m=0;do{c._ptr.push(c._index.length);for(var p=0;p<h;p++){var C=d[p];if(Qe(C)){if(m===0&&b<C.length&&(b=C.length),m<C.length){var I=C[m];g(I,f)||(c._values.push(I),c._index.push(p))}}else m===0&&b<1&&(b=1),g(C,f)||(c._values.push(C),c._index.push(p))}m++}while(m<b)}c._ptr.push(c._index.length),c._size=[h,b]}function o(c,d,l,h){if(l-d==0)return l;for(var b=d;b<l;b++)if(h[b]===c)return b;return d}function s(c,d,l,h,b,g,f){b.splice(c,0,h),g.splice(c,0,d);for(var m=l+1;m<f.length;m++)f[m]++}function A(c,d,l,h){var b=h||0,g=t,f=0;rt(c._datatype)&&(g=e.find(t,[c._datatype,c._datatype])||t,f=e.convert(0,c._datatype),b=e.convert(b,c._datatype));var m,p,C,I=!g(b,f),x=c._size[0],y=c._size[1];if(l>y){for(p=y;p<l;p++)if(c._ptr[p]=c._values.length,I)for(m=0;m<x;m++)c._values.push(b),c._index.push(m);c._ptr[l]=c._values.length}else l<y&&(c._ptr.splice(l+1,y-l),c._values.splice(c._ptr[l],c._values.length),c._index.splice(c._ptr[l],c._index.length));if(y=l,d>x){if(I){var F=0;for(p=0;p<y;p++){c._ptr[p]=c._ptr[p]+F,C=c._ptr[p+1]+F;var D=0;for(m=x;m<d;m++,D++)c._values.splice(C+D,0,b),c._index.splice(C+D,0,m),F++}c._ptr[y]=c._values.length}}else if(d<x){var v=0;for(p=0;p<y;p++){c._ptr[p]=c._ptr[p]-v;var M=c._ptr[p],S=c._ptr[p+1]-v;for(C=M;C<S;C++)(m=c._index[C])>d-1&&(c._values.splice(C,1),c._index.splice(C,1),v++)}c._ptr[p]=c._values.length}return c._size[0]=d,c._size[1]=l,c}function u(c,d,l,h,b){var g,f,m=h[0],p=h[1],C=[];for(g=0;g<m;g++)for(C[g]=[],f=0;f<p;f++)C[g][f]=0;for(f=0;f<p;f++)for(var I=l[f],x=l[f+1],y=I;y<x;y++)C[g=d[y]][f]=c?b?De(c[y]):c[y]:1;return C}return n.prototype=new a,n.prototype.createSparseMatrix=function(c,d){return new n(c,d)},Object.defineProperty(n,"name",{value:"SparseMatrix"}),n.prototype.constructor=n,n.prototype.type="SparseMatrix",n.prototype.isSparseMatrix=!0,n.prototype.getDataType=function(){return Er(this._values,pt)},n.prototype.storage=function(){return"sparse"},n.prototype.datatype=function(){return this._datatype},n.prototype.create=function(c,d){return new n(c,d)},n.prototype.density=function(){var c=this._size[0],d=this._size[1];return c!==0&&d!==0?this._index.length/(c*d):0},n.prototype.subset=function(c,d,l){if(!this._values)throw new Error("Cannot invoke subset on a Pattern only matrix");switch(arguments.length){case 1:return function(h,b){if(!tr(b))throw new TypeError("Invalid index");if(b.isScalar())return h.get(b.min());var g,f,m,p,C=b.size();if(C.length!==h._size.length)throw new fe(C.length,h._size.length);var I=b.min(),x=b.max();for(g=0,f=h._size.length;g<f;g++)Ce(I[g],h._size[g]),Ce(x[g],h._size[g]);var y=h._values,F=h._index,D=h._ptr,v=b.dimension(0),M=b.dimension(1),S=[],O=[];v.forEach(function(q,se){O[q]=se[0],S[q]=!0});var P=y?[]:void 0,K=[],J=[];return M.forEach(function(q){for(J.push(K.length),m=D[q],p=D[q+1];m<p;m++)g=F[m],S[g]===!0&&(K.push(O[g]),P&&P.push(y[m]))}),J.push(K.length),new n({values:P,index:K,ptr:J,size:C,datatype:h._datatype})}(this,c);case 2:case 3:return function(h,b,g,f){if(!b||b.isIndex!==!0)throw new TypeError("Invalid index");var m,p=b.size(),C=b.isScalar();if(Be(g)?(m=g.size(),g=g.toArray()):m=Le(g),C){if(m.length!==0)throw new TypeError("Scalar expected");h.set(b.min(),g,f)}else{if(p.length!==1&&p.length!==2)throw new fe(p.length,h._size.length,"<");if(m.length<p.length){for(var I=0,x=0;p[I]===1&&m[I]===1;)I++;for(;p[I]===1;)x++,I++;g=oi(g,p.length,x,m)}if(!Nt(p,m))throw new fe(p,m,">");if(p.length===1)b.dimension(0).forEach(function(D,v){Ce(D),h.set([D,0],g[v[0]],f)});else{var y=b.dimension(0),F=b.dimension(1);y.forEach(function(D,v){Ce(D),F.forEach(function(M,S){Ce(M),h.set([D,M],g[v[0]][S[0]],f)})})}}return h}(this,c,d,l);default:throw new SyntaxError("Wrong number of arguments")}},n.prototype.get=function(c){if(!Qe(c))throw new TypeError("Array expected");if(c.length!==this._size.length)throw new fe(c.length,this._size.length);if(!this._values)throw new Error("Cannot invoke get on a Pattern only matrix");var d=c[0],l=c[1];Ce(d,this._size[0]),Ce(l,this._size[1]);var h=o(d,this._ptr[l],this._ptr[l+1],this._index);return h<this._ptr[l+1]&&this._index[h]===d?this._values[h]:0},n.prototype.set=function(c,d,l){if(!Qe(c))throw new TypeError("Array expected");if(c.length!==this._size.length)throw new fe(c.length,this._size.length);if(!this._values)throw new Error("Cannot invoke set on a Pattern only matrix");var h=c[0],b=c[1],g=this._size[0],f=this._size[1],m=t,p=0;rt(this._datatype)&&(m=e.find(t,[this._datatype,this._datatype])||t,p=e.convert(0,this._datatype)),(h>g-1||b>f-1)&&(A(this,Math.max(h+1,g),Math.max(b+1,f),l),g=this._size[0],f=this._size[1]),Ce(h,g),Ce(b,f);var C=o(h,this._ptr[b],this._ptr[b+1],this._index);return C<this._ptr[b+1]&&this._index[C]===h?m(d,p)?function(I,x,y,F,D){y.splice(I,1),F.splice(I,1);for(var v=x+1;v<D.length;v++)D[v]--}(C,b,this._values,this._index,this._ptr):this._values[C]=d:m(d,p)||s(C,h,b,d,this._values,this._index,this._ptr),this},n.prototype.resize=function(c,d,l){if(!Aa(c))throw new TypeError("Array or Matrix expected");var h=c.valueOf().map(b=>Array.isArray(b)&&b.length===1?b[0]:b);if(h.length!==2)throw new Error("Only two dimensions matrix are supported");return h.forEach(function(b){if(!le(b)||!me(b)||b<0)throw new TypeError("Invalid size, must contain positive integers (size: "+Fe(h)+")")}),A(l?this.clone():this,h[0],h[1],d)},n.prototype.reshape=function(c,d){if(!Qe(c))throw new TypeError("Array expected");if(c.length!==2)throw new Error("Sparse matrices can only be reshaped in two dimensions");c.forEach(function(O){if(!le(O)||!me(O)||O<=-2||O===0)throw new TypeError("Invalid size, must contain positive integers or -1 (size: "+Fe(c)+")")});var l=this._size[0]*this._size[1];if(l!==(c=mr(c,l))[0]*c[1])throw new Error("Reshaping sparse matrix will result in the wrong number of elements");var h=d?this.clone():this;if(this._size[0]===c[0]&&this._size[1]===c[1])return h;for(var b=[],g=0;g<h._ptr.length;g++)for(var f=0;f<h._ptr[g+1]-h._ptr[g];f++)b.push(g);for(var m=h._values.slice(),p=h._index.slice(),C=0;C<h._index.length;C++){var I=p[C],x=b[C],y=I*h._size[1]+x;b[C]=y%c[1],p[C]=Math.floor(y/c[1])}h._values.length=0,h._index.length=0,h._ptr.length=c[1]+1,h._size=c.slice();for(var F=0;F<h._ptr.length;F++)h._ptr[F]=0;for(var D=0;D<m.length;D++){var v=p[D],M=b[D],S=m[D];s(o(v,h._ptr[M],h._ptr[M+1],h._index),v,M,S,h._values,h._index,h._ptr)}return h},n.prototype.clone=function(){return new n({values:this._values?De(this._values):void 0,index:De(this._index),ptr:De(this._ptr),size:De(this._size),datatype:this._datatype})},n.prototype.size=function(){return this._size.slice(0)},n.prototype.map=function(c,d){if(!this._values)throw new Error("Cannot invoke map on a Pattern only matrix");var l=this,h=this._size[0],b=this._size[1],g=wa(c,l,"map");return function(f,m,p,C,I,x,y){var F=[],D=[],v=[],M=t,S=0;rt(f._datatype)&&(M=e.find(t,[f._datatype,f._datatype])||t,S=e.convert(0,f._datatype));for(var O=function(de,$,pe){var Y=x(de,$,pe);M(Y,S)||(F.push(Y),D.push($))},P=C;P<=I;P++){v.push(F.length);var K=f._ptr[P],J=f._ptr[P+1];if(y)for(var q=K;q<J;q++){var se=f._index[q];se>=m&&se<=p&&O(f._values[q],se-m,P-C)}else{for(var ue={},re=K;re<J;re++)ue[f._index[re]]=f._values[re];for(var be=m;be<=p;be++)O(be in ue?ue[be]:0,be-m,P-C)}}return v.push(F.length),new n({values:F,index:D,ptr:v,size:[p-m+1,I-C+1]})}(this,0,h-1,0,b-1,function(f,m,p){return g.fn(f,[m,p],l)},d)},n.prototype.forEach=function(c,d){if(!this._values)throw new Error("Cannot invoke forEach on a Pattern only matrix");for(var l=this,h=this._size[0],b=this._size[1],g=wa(c,l,"forEach"),f=0;f<b;f++){var m=this._ptr[f],p=this._ptr[f+1];if(d)for(var C=m;C<p;C++){var I=this._index[C];g.fn(this._values[C],[I,f],l)}else{for(var x={},y=m;y<p;y++)x[this._index[y]]=this._values[y];for(var F=0;F<h;F++){var D=F in x?x[F]:0;g.fn(D,[F,f],l)}}}},n.prototype[Symbol.iterator]=function*(){if(!this._values)throw new Error("Cannot iterate a Pattern only matrix");for(var c=this._size[1],d=0;d<c;d++)for(var l=this._ptr[d],h=this._ptr[d+1],b=l;b<h;b++){var g=this._index[b];yield{value:this._values[b],index:[g,d]}}},n.prototype.toArray=function(){return u(this._values,this._index,this._ptr,this._size,!0)},n.prototype.valueOf=function(){return u(this._values,this._index,this._ptr,this._size,!1)},n.prototype.format=function(c){for(var d=this._size[0],l=this._size[1],h=this.density(),b="Sparse Matrix ["+Fe(d,c)+" x "+Fe(l,c)+"] density: "+Fe(h,c)+`
|
|
23
23
|
`,g=0;g<l;g++)for(var f=this._ptr[g],m=this._ptr[g+1],p=f;p<m;p++)b+=`
|
|
24
|
-
(`+Fe(this._index[p],c)+", "+Fe(g,c)+") ==> "+(this._values?Fe(this._values[p],c):"X");return b},n.prototype.toString=function(){return Fe(this.toArray())},n.prototype.toJSON=function(){return{mathjs:"SparseMatrix",values:this._values,index:this._index,ptr:this._ptr,size:this._size,datatype:this._datatype}},n.prototype.diagonal=function(c){if(c){if(xe(c)&&(c=c.toNumber()),!le(c)||!me(c))throw new TypeError("The parameter k must be an integer number")}else c=0;var d=c>0?c:0,l=c<0?-c:0,h=this._size[0],b=this._size[1],g=Math.min(h-l,b-d),f=[],m=[],p=[];p[0]=0;for(var C=d;C<b&&f.length<g;C++)for(var I=this._ptr[C],x=this._ptr[C+1],y=I;y<x;y++){var F=this._index[y];if(F===C-d+l){f.push(this._values[y]),m[f.length-1]=F-l;break}}return p.push(f.length),new n({values:f,index:m,ptr:p,size:[g,1]})},n.fromJSON=function(c){return new n(c)},n.diagonal=function(c,d,l,h,b){if(!ve(c))throw new TypeError("Array expected, size parameter");if(c.length!==2)throw new Error("Only two dimensions matrix are supported");if(c=c.map(function(K){if(xe(K)&&(K=K.toNumber()),!le(K)||!me(K)||K<1)throw new Error("Size values must be positive integers");return K}),l){if(xe(l)&&(l=l.toNumber()),!le(l)||!me(l))throw new TypeError("The parameter k must be an integer number")}else l=0;var g=t,f=0;rt(b)&&(g=e.find(t,[b,b])||t,f=e.convert(0,b));var m,p=l>0?l:0,C=l<0?-l:0,I=c[0],x=c[1],y=Math.min(I-C,x-p);if(ve(d)){if(d.length!==y)throw new Error("Invalid value array length");m=function(K){return d[K]}}else if(Be(d)){var F=d.size();if(F.length!==1||F[0]!==y)throw new Error("Invalid matrix length");m=function(K){return d.get([K])}}else m=function(){return d};for(var D=[],Q=[],M=[],S=0;S<x;S++){M.push(D.length);var O=S-p;if(O>=0&&O<y){var P=m(O);g(P,f)||(Q.push(O+C),D.push(P))}}return M.push(D.length),new n({values:D,index:Q,ptr:M,size:[I,x]})},n.prototype.swapRows=function(c,d){if(!(le(c)&&me(c)&&le(d)&&me(d)))throw new Error("Row index must be positive integers");if(this._size.length!==2)throw new Error("Only two dimensional matrix is supported");return Ce(c,this._size[0]),Ce(d,this._size[0]),n._swapRows(c,d,this._size[1],this._values,this._index,this._ptr),this},n._forEachRow=function(c,d,l,h,b){for(var g=h[c],f=h[c+1],m=g;m<f;m++)b(l[m],d[m])},n._swapRows=function(c,d,l,h,b,g){for(var f=0;f<l;f++){var m=g[f],p=g[f+1],C=o(c,m,p,b),I=o(d,m,p,b);if(C<p&&I<p&&b[C]===c&&b[I]===d){if(h){var x=h[C];h[C]=h[I],h[I]=x}}else if(C<p&&b[C]===c&&(I>=p||b[I]!==d)){var y=h?h[C]:void 0;b.splice(I,0,d),h&&h.splice(I,0,y),b.splice(I<=C?C+1:C,1),h&&h.splice(I<=C?C+1:C,1)}else if(I<p&&b[I]===d&&(C>=p||b[C]!==c)){var F=h?h[I]:void 0;b.splice(C,0,c),h&&h.splice(C,0,F),b.splice(C<=I?I+1:I,1),h&&h.splice(C<=I?I+1:I,1)}}},n},{isClass:!0}),vA=ne("number",["typed"],r=>{var{typed:e}=r,t=e("number",{"":function(){return 0},number:function(a){return a},string:function(a){if(a==="NaN")return NaN;var n,i,o=(i=(n=a).match(/(0[box])([0-9a-fA-F]*)\.([0-9a-fA-F]*)/))?{input:n,radix:{"0b":2,"0o":8,"0x":16}[i[1]],integerPart:i[2],fractionalPart:i[3]}:null;if(o)return function(c){for(var d=parseInt(c.integerPart,c.radix),l=0,h=0;h<c.fractionalPart.length;h++)l+=parseInt(c.fractionalPart[h],c.radix)/Math.pow(c.radix,h+1);var b=d+l;if(isNaN(b))throw new SyntaxError('String "'+c.input+'" is not a valid number');return b}(o);var s=0,A=a.match(/(0[box][0-9a-fA-F]*)i([0-9]*)/);A&&(s=Number(A[2]),a=A[1]);var u=Number(a);if(isNaN(u))throw new SyntaxError('String "'+a+'" is not a valid number');if(A){if(u>2**s-1)throw new SyntaxError('String "'.concat(a,'" is out of range'));u>=2**(s-1)&&(u-=2**s)}return u},BigNumber:function(a){return a.toNumber()},bigint:function(a){return Number(a)},Fraction:function(a){return a.valueOf()},Unit:e.referToSelf(a=>n=>{var i=n.clone();return i.value=a(n.value),i}),null:function(a){return 0},"Unit, string | Unit":function(a,n){return a.toNumber(n)},"Array | Matrix":e.referToSelf(a=>n=>vt(n,a))});return t.fromJSON=function(a){return parseFloat(a.value)},t}),kA=ne("bignumber",["typed","BigNumber"],r=>{var{typed:e,BigNumber:t}=r;return e("bignumber",{"":function(){return new t(0)},number:function(a){return new t(a+"")},string:function(a){var n=a.match(/(0[box][0-9a-fA-F]*)i([0-9]*)/);if(n){var i=n[2],o=t(n[1]),s=new t(2).pow(Number(i));if(o.gt(s.sub(1)))throw new SyntaxError('String "'.concat(a,'" is out of range'));var A=new t(2).pow(Number(i)-1);return o.gte(A)?o.sub(s):o}return new t(a)},BigNumber:function(a){return a},bigint:function(a){return new t(a.toString())},Unit:e.referToSelf(a=>n=>{var i=n.clone();return i.value=a(n.value),i}),Fraction:function(a){return new t(String(a.n)).div(String(a.d)).times(String(a.s))},null:function(a){return new t(0)},"Array | Matrix":e.referToSelf(a=>n=>vt(n,a))})}),jA=ne("fraction",["typed","Fraction"],r=>{var{typed:e,Fraction:t}=r;return e("fraction",{number:function(a){if(!isFinite(a)||isNaN(a))throw new Error(a+" cannot be represented as a fraction");return new t(a)},string:function(a){return new t(a)},"number, number":function(a,n){return new t(a,n)},"bigint, bigint":function(a,n){return new t(a,n)},null:function(a){return new t(0)},BigNumber:function(a){return new t(a.toString())},bigint:function(a){return new t(a.toString())},Fraction:function(a){return a},Unit:e.referToSelf(a=>n=>{var i=n.clone();return i.value=a(n.value),i}),Object:function(a){return new t(a)},"Array | Matrix":e.referToSelf(a=>n=>vt(n,a))})}),Di="matrix",MA=ne(Di,["typed","Matrix","DenseMatrix","SparseMatrix"],r=>{var{typed:e,Matrix:t,DenseMatrix:a,SparseMatrix:n}=r;return e(Di,{"":function(){return i([])},string:function(o){return i([],o)},"string, string":function(o,s){return i([],o,s)},Array:function(o){return i(o)},Matrix:function(o){return i(o,o.storage())},"Array | Matrix, string":i,"Array | Matrix, string, string":i});function i(o,s,A){if(s==="dense"||s==="default"||s===void 0)return new a(o,A);if(s==="sparse")return new n(o,A);throw new TypeError("Unknown matrix type "+JSON.stringify(s)+".")}}),yi="unaryMinus",SA=ne(yi,["typed"],r=>{var{typed:e}=r;return e(yi,{number:Ei,"Complex | BigNumber | Fraction":t=>t.neg(),bigint:t=>-t,Unit:e.referToSelf(t=>a=>{var n=a.clone();return n.value=e.find(t,n.valueType())(a.value),n}),"Array | Matrix":e.referToSelf(t=>a=>vt(a,t,!0))})}),RA=ne("abs",["typed"],r=>{var{typed:e}=r;return e("abs",{number:gi,"Complex | BigNumber | Fraction | Unit":t=>t.abs(),bigint:t=>t<0n?-t:t,"Array | Matrix":e.referToSelf(t=>a=>vt(a,t,!0))})}),wi="addScalar",TA=ne(wi,["typed"],r=>{var{typed:e}=r;return e(wi,{"number, number":fi,"Complex, Complex":function(t,a){return t.add(a)},"BigNumber, BigNumber":function(t,a){return t.plus(a)},"bigint, bigint":function(t,a){return t+a},"Fraction, Fraction":function(t,a){return t.add(a)},"Unit, Unit":e.referToSelf(t=>(a,n)=>{if(a.value===null||a.value===void 0)throw new Error("Parameter x contains a unit with undefined value");if(n.value===null||n.value===void 0)throw new Error("Parameter y contains a unit with undefined value");if(!a.equalBase(n))throw new Error("Units do not match");var i=a.clone();return i.value=e.find(t,[i.valueType(),n.valueType()])(i.value,n.value),i.fixPrefix=!1,i})})}),xi="subtractScalar",NA=ne(xi,["typed"],r=>{var{typed:e}=r;return e(xi,{"number, number":pi,"Complex, Complex":function(t,a){return t.sub(a)},"BigNumber, BigNumber":function(t,a){return t.minus(a)},"bigint, bigint":function(t,a){return t-a},"Fraction, Fraction":function(t,a){return t.sub(a)},"Unit, Unit":e.referToSelf(t=>(a,n)=>{if(a.value===null||a.value===void 0)throw new Error("Parameter x contains a unit with undefined value");if(n.value===null||n.value===void 0)throw new Error("Parameter y contains a unit with undefined value");if(!a.equalBase(n))throw new Error("Units do not match");var i=a.clone();return i.value=e.find(t,[i.valueType(),n.valueType()])(i.value,n.value),i.fixPrefix=!1,i})})}),UA=ne("matAlgo11xS0s",["typed","equalScalar"],r=>{var{typed:e,equalScalar:t}=r;return function(a,n,i,o){var s=a._values,A=a._index,u=a._ptr,c=a._size,d=a._datatype;if(!s)throw new Error("Cannot perform operation on Pattern Sparse Matrix and Scalar value");var l,h=c[0],b=c[1],g=t,f=0,m=i;typeof d=="string"&&(l=d,g=e.find(t,[l,l]),f=e.convert(0,l),n=e.convert(n,l),m=e.find(i,[l,l]));for(var p=[],C=[],I=[],x=0;x<b;x++){I[x]=C.length;for(var y=u[x],F=u[x+1],D=y;D<F;D++){var Q=A[D],M=o?m(n,s[D]):m(s[D],n);g(M,f)||(C.push(Q),p.push(M))}}return I[b]=C.length,a.createSparseMatrix({values:p,index:C,ptr:I,size:[h,b],datatype:l})}}),LA=ne("matAlgo14xDs",["typed"],r=>{var{typed:e}=r;return function(a,n,i,o){var s,A=a._data,u=a._size,c=a._datatype,d=i;typeof c=="string"&&(s=c,n=e.convert(n,s),d=e.find(i,[s,s]));var l=u.length>0?t(d,0,u,u[0],A,n,o):[];return a.createDenseMatrix({data:l,size:De(u),datatype:s})};function t(a,n,i,o,s,A,u){var c=[];if(n===i.length-1)for(var d=0;d<o;d++)c[d]=u?a(A,s[d]):a(s[d],A);else for(var l=0;l<o;l++)c[l]=t(a,n+1,i,i[n+1],s[l],A,u);return c}}),GA=ne("multiplyScalar",["typed"],r=>{var{typed:e}=r;return e("multiplyScalar",{"number, number":mi,"Complex, Complex":function(t,a){return t.mul(a)},"BigNumber, BigNumber":function(t,a){return t.times(a)},"bigint, bigint":function(t,a){return t*a},"Fraction, Fraction":function(t,a){return t.mul(a)},"number | Fraction | BigNumber | Complex, Unit":(t,a)=>a.multiply(t),"Unit, number | Fraction | BigNumber | Complex | Unit":(t,a)=>t.multiply(a)})}),Fi="multiply",_A=ne(Fi,["typed","matrix","addScalar","multiplyScalar","equalScalar","dot"],r=>{var{typed:e,matrix:t,addScalar:a,multiplyScalar:n,equalScalar:i,dot:o}=r,s=UA({typed:e,equalScalar:i}),A=LA({typed:e});function u(h,b){switch(h.length){case 1:switch(b.length){case 1:if(h[0]!==b[0])throw new RangeError("Dimension mismatch in multiplication. Vectors must have the same length");break;case 2:if(h[0]!==b[0])throw new RangeError("Dimension mismatch in multiplication. Vector length ("+h[0]+") must match Matrix rows ("+b[0]+")");break;default:throw new Error("Can only multiply a 1 or 2 dimensional matrix (Matrix B has "+b.length+" dimensions)")}break;case 2:switch(b.length){case 1:if(h[1]!==b[0])throw new RangeError("Dimension mismatch in multiplication. Matrix columns ("+h[1]+") must match Vector length ("+b[0]+")");break;case 2:if(h[1]!==b[0])throw new RangeError("Dimension mismatch in multiplication. Matrix A columns ("+h[1]+") must match Matrix B rows ("+b[0]+")");break;default:throw new Error("Can only multiply a 1 or 2 dimensional matrix (Matrix B has "+b.length+" dimensions)")}break;default:throw new Error("Can only multiply a 1 or 2 dimensional matrix (Matrix A has "+h.length+" dimensions)")}}function c(h,b){if(b.storage()!=="dense")throw new Error("Support for SparseMatrix not implemented");return function(g,f){var m,p=g._data,C=g._size,I=g._datatype||g.getDataType(),x=f._data,y=f._size,F=f._datatype||f.getDataType(),D=C[0],Q=y[1],M=a,S=n;I&&F&&I===F&&typeof I=="string"&&I!=="mixed"&&(m=I,M=e.find(a,[m,m]),S=e.find(n,[m,m]));for(var O=[],P=0;P<Q;P++){for(var K=S(p[0],x[0][P]),J=1;J<D;J++)K=M(K,S(p[J],x[J][P]));O[P]=K}return g.createDenseMatrix({data:O,size:[Q],datatype:I===g._datatype&&F===f._datatype?m:void 0})}(h,b)}var d=e("_multiplyMatrixVector",{"DenseMatrix, any":function(h,b){var g,f=h._data,m=h._size,p=h._datatype||h.getDataType(),C=b._data,I=b._datatype||b.getDataType(),x=m[0],y=m[1],F=a,D=n;p&&I&&p===I&&typeof p=="string"&&p!=="mixed"&&(g=p,F=e.find(a,[g,g]),D=e.find(n,[g,g]));for(var Q=[],M=0;M<x;M++){for(var S=f[M],O=D(S[0],C[0]),P=1;P<y;P++)O=F(O,D(S[P],C[P]));Q[M]=O}return h.createDenseMatrix({data:Q,size:[x],datatype:p===h._datatype&&I===b._datatype?g:void 0})},"SparseMatrix, any":function(h,b){var g=h._values,f=h._index,m=h._ptr,p=h._datatype||h._data===void 0?h._datatype:h.getDataType();if(!g)throw new Error("Cannot multiply Pattern only Matrix times Dense Matrix");var C,I=b._data,x=b._datatype||b.getDataType(),y=h._size[0],F=b._size[0],D=[],Q=[],M=[],S=a,O=n,P=i,K=0;p&&x&&p===x&&typeof p=="string"&&p!=="mixed"&&(C=p,S=e.find(a,[C,C]),O=e.find(n,[C,C]),P=e.find(i,[C,C]),K=e.convert(0,C));var J=[],q=[];M[0]=0;for(var se=0;se<F;se++){var ue=I[se];if(!P(ue,K))for(var re=m[se],be=m[se+1],de=re;de<be;de++){var $=f[de];q[$]?J[$]=S(J[$],O(ue,g[de])):(q[$]=!0,Q.push($),J[$]=O(ue,g[de]))}}for(var pe=Q.length,Y=0;Y<pe;Y++){var ee=Q[Y];D[Y]=J[ee]}return M[1]=Q.length,h.createSparseMatrix({values:D,index:Q,ptr:M,size:[y,1],datatype:p===h._datatype&&x===b._datatype?C:void 0})}}),l=e("_multiplyMatrixMatrix",{"DenseMatrix, DenseMatrix":function(h,b){var g,f=h._data,m=h._size,p=h._datatype||h.getDataType(),C=b._data,I=b._size,x=b._datatype||b.getDataType(),y=m[0],F=m[1],D=I[1],Q=a,M=n;p&&x&&p===x&&typeof p=="string"&&p!=="mixed"&&p!=="mixed"&&(g=p,Q=e.find(a,[g,g]),M=e.find(n,[g,g]));for(var S=[],O=0;O<y;O++){var P=f[O];S[O]=[];for(var K=0;K<D;K++){for(var J=M(P[0],C[0][K]),q=1;q<F;q++)J=Q(J,M(P[q],C[q][K]));S[O][K]=J}}return h.createDenseMatrix({data:S,size:[y,D],datatype:p===h._datatype&&x===b._datatype?g:void 0})},"DenseMatrix, SparseMatrix":function(h,b){var g=h._data,f=h._size,m=h._datatype||h.getDataType(),p=b._values,C=b._index,I=b._ptr,x=b._size,y=b._datatype||b._data===void 0?b._datatype:b.getDataType();if(!p)throw new Error("Cannot multiply Dense Matrix times Pattern only Matrix");var F,D=f[0],Q=x[1],M=a,S=n,O=i,P=0;m&&y&&m===y&&typeof m=="string"&&m!=="mixed"&&(F=m,M=e.find(a,[F,F]),S=e.find(n,[F,F]),O=e.find(i,[F,F]),P=e.convert(0,F));for(var K=[],J=[],q=[],se=b.createSparseMatrix({values:K,index:J,ptr:q,size:[D,Q],datatype:m===h._datatype&&y===b._datatype?F:void 0}),ue=0;ue<Q;ue++){q[ue]=J.length;var re=I[ue],be=I[ue+1];if(be>re)for(var de=0,$=0;$<D;$++){for(var pe=$+1,Y=void 0,ee=re;ee<be;ee++){var Ae=C[ee];de!==pe?(Y=S(g[$][Ae],p[ee]),de=pe):Y=M(Y,S(g[$][Ae],p[ee]))}de!==pe||O(Y,P)||(J.push($),K.push(Y))}}return q[Q]=J.length,se},"SparseMatrix, DenseMatrix":function(h,b){var g=h._values,f=h._index,m=h._ptr,p=h._datatype||h._data===void 0?h._datatype:h.getDataType();if(!g)throw new Error("Cannot multiply Pattern only Matrix times Dense Matrix");var C,I=b._data,x=b._datatype||b.getDataType(),y=h._size[0],F=b._size[0],D=b._size[1],Q=a,M=n,S=i,O=0;p&&x&&p===x&&typeof p=="string"&&p!=="mixed"&&(C=p,Q=e.find(a,[C,C]),M=e.find(n,[C,C]),S=e.find(i,[C,C]),O=e.convert(0,C));for(var P=[],K=[],J=[],q=h.createSparseMatrix({values:P,index:K,ptr:J,size:[y,D],datatype:p===h._datatype&&x===b._datatype?C:void 0}),se=[],ue=[],re=0;re<D;re++){J[re]=K.length;for(var be=re+1,de=0;de<F;de++){var $=I[de][re];if(!S($,O))for(var pe=m[de],Y=m[de+1],ee=pe;ee<Y;ee++){var Ae=f[ee];ue[Ae]!==be?(ue[Ae]=be,K.push(Ae),se[Ae]=M($,g[ee])):se[Ae]=Q(se[Ae],M($,g[ee]))}}for(var Ee=J[re],ye=K.length,Ne=Ee;Ne<ye;Ne++){var qe=K[Ne];P[Ne]=se[qe]}}return J[D]=K.length,q},"SparseMatrix, SparseMatrix":function(h,b){var g,f=h._values,m=h._index,p=h._ptr,C=h._datatype||h._data===void 0?h._datatype:h.getDataType(),I=b._values,x=b._index,y=b._ptr,F=b._datatype||b._data===void 0?b._datatype:b.getDataType(),D=h._size[0],Q=b._size[1],M=f&&I,S=a,O=n;C&&F&&C===F&&typeof C=="string"&&C!=="mixed"&&(g=C,S=e.find(a,[g,g]),O=e.find(n,[g,g]));for(var P,K,J,q,se,ue,re,be,de=M?[]:void 0,$=[],pe=[],Y=h.createSparseMatrix({values:de,index:$,ptr:pe,size:[D,Q],datatype:C===h._datatype&&F===b._datatype?g:void 0}),ee=M?[]:void 0,Ae=[],Ee=0;Ee<Q;Ee++){pe[Ee]=$.length;var ye=Ee+1;for(se=y[Ee],ue=y[Ee+1],q=se;q<ue;q++)if(be=x[q],M)for(K=p[be],J=p[be+1],P=K;P<J;P++)Ae[re=m[P]]!==ye?(Ae[re]=ye,$.push(re),ee[re]=O(I[q],f[P])):ee[re]=S(ee[re],O(I[q],f[P]));else for(K=p[be],J=p[be+1],P=K;P<J;P++)Ae[re=m[P]]!==ye&&(Ae[re]=ye,$.push(re));if(M)for(var Ne=pe[Ee],qe=$.length,Je=Ne;Je<qe;Je++){var ta=$[Je];de[Je]=ee[ta]}}return pe[Q]=$.length,Y}});return e(Fi,n,{"Array, Array":e.referTo("Matrix, Matrix",h=>(b,g)=>{u(Le(b),Le(g));var f=h(t(b),t(g));return Be(f)?f.valueOf():f}),"Matrix, Matrix":function(h,b){var g=h.size(),f=b.size();return u(g,f),g.length===1?f.length===1?function(m,p,C){if(C===0)throw new Error("Cannot multiply two empty vectors");return o(m,p)}(h,b,g[0]):c(h,b):f.length===1?d(h,b):l(h,b)},"Matrix, Array":e.referTo("Matrix,Matrix",h=>(b,g)=>h(b,t(g))),"Array, Matrix":e.referToSelf(h=>(b,g)=>h(t(b,g.storage()),g)),"SparseMatrix, any":function(h,b){return s(h,b,n,!1)},"DenseMatrix, any":function(h,b){return A(h,b,n,!1)},"any, SparseMatrix":function(h,b){return s(b,h,n,!0)},"any, DenseMatrix":function(h,b){return A(b,h,n,!0)},"Array, any":function(h,b){return A(t(h),b,n,!1).valueOf()},"any, Array":function(h,b){return A(t(b),h,n,!0).valueOf()},"any, any":n,"any, any, ...any":e.referToSelf(h=>(b,g,f)=>{for(var m=h(b,g),p=0;p<f.length;p++)m=h(m,f[p]);return m})})}),Qi="conj",HA=ne(Qi,["typed"],r=>{var{typed:e}=r;return e(Qi,{"number | BigNumber | Fraction":t=>t,Complex:t=>t.conjugate(),"Array | Matrix":e.referToSelf(t=>a=>vt(a,t))})}),vi="identity",OA=ne(vi,["typed","config","matrix","BigNumber","DenseMatrix","SparseMatrix"],r=>{var{typed:e,config:t,matrix:a,BigNumber:n,DenseMatrix:i,SparseMatrix:o}=r;return e(vi,{"":function(){return t.matrix==="Matrix"?a([]):[]},string:function(u){return a(u)},"number | BigNumber":function(u){return A(u,u,t.matrix==="Matrix"?"dense":void 0)},"number | BigNumber, string":function(u,c){return A(u,u,c)},"number | BigNumber, number | BigNumber":function(u,c){return A(u,c,t.matrix==="Matrix"?"dense":void 0)},"number | BigNumber, number | BigNumber, string":function(u,c,d){return A(u,c,d)},Array:function(u){return s(u)},"Array, string":function(u,c){return s(u,c)},Matrix:function(u){return s(u.valueOf(),u.storage())},"Matrix, string":function(u,c){return s(u.valueOf(),c)}});function s(u,c){switch(u.length){case 0:return c?a(c):[];case 1:return A(u[0],u[0],c);case 2:return A(u[0],u[1],c);default:throw new Error("Vector containing two values expected")}}function A(u,c,d){var l=xe(u)||xe(c)?n:null;if(xe(u)&&(u=u.toNumber()),xe(c)&&(c=c.toNumber()),!me(u)||u<1)throw new Error("Parameters in function identity must be positive integers");if(!me(c)||c<1)throw new Error("Parameters in function identity must be positive integers");var h=l?new n(1):1,b=l?new l(0):0,g=[u,c];if(d){if(d==="sparse")return o.diagonal(g,h,0,b);if(d==="dense")return i.diagonal(g,h,0,b);throw new TypeError('Unknown matrix type "'.concat(d,'"'))}for(var f=gr([],g,b),m=u<c?u:c,p=0;p<m;p++)f[p][p]=h;return f}});function zA(){throw new Error('No "bignumber" implementation available')}function PA(){throw new Error('No "fraction" implementation available')}var ki,ji="size",qA=ne(ji,["typed","config","?matrix"],r=>{var{typed:e,config:t,matrix:a}=r;return e(ji,{Matrix:function(n){return n.create(n.size(),"number")},Array:Le,string:function(n){return t.matrix==="Array"?[n.length]:a([n.length],"dense","number")},"number | Complex | BigNumber | Unit | boolean | null":function(n){return t.matrix==="Array"?[]:a?a([],"dense","number"):function(){throw new Error('No "matrix" implementation available')}()}})}),JA=ne("numeric",["number","?bignumber","?fraction"],r=>{var{number:e,bignumber:t,fraction:a}=r,n={string:!0,number:!0,BigNumber:!0,Fraction:!0},i={number:o=>e(o),BigNumber:t?o=>t(o):zA,bigint:o=>BigInt(o),Fraction:a?o=>a(o):PA};return function(o){var s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"number";if((arguments.length>2?arguments[2]:void 0)!==void 0)throw new SyntaxError("numeric() takes one or two arguments");var A=pt(o);if(!(A in n))throw new TypeError("Cannot convert "+o+' of type "'+A+'"; valid input types are '+Object.keys(n).join(", "));if(!(s in i))throw new TypeError("Cannot convert "+o+' to type "'+s+'"; valid output types are '+Object.keys(i).join(", "));return s===A?o:i[s](o)}}),Mi="divideScalar",KA=ne(Mi,["typed","numeric"],r=>{var{typed:e,numeric:t}=r;return e(Mi,{"number, number":function(a,n){return a/n},"Complex, Complex":function(a,n){return a.div(n)},"BigNumber, BigNumber":function(a,n){return a.div(n)},"bigint, bigint":function(a,n){return a/n},"Fraction, Fraction":function(a,n){return a.div(n)},"Unit, number | Complex | Fraction | BigNumber | Unit":(a,n)=>a.divide(n),"number | Fraction | Complex | BigNumber, Unit":(a,n)=>n.divideInto(a)})}),VA=ne("pow",["typed","config","identity","multiply","matrix","inv","fraction","number","Complex"],r=>{var{typed:e,config:t,identity:a,multiply:n,matrix:i,inv:o,number:s,fraction:A,Complex:u}=r;return e("pow",{"number, number":c,"Complex, Complex":function(h,b){return h.pow(b)},"BigNumber, BigNumber":function(h,b){return b.isInteger()||h>=0||t.predictable?h.pow(b):new u(h.toNumber(),0).pow(b.toNumber(),0)},"bigint, bigint":(h,b)=>h**b,"Fraction, Fraction":function(h,b){var g=h.pow(b);if(g!=null)return g;if(t.predictable)throw new Error("Result of pow is non-rational and cannot be expressed as a fraction");return c(h.valueOf(),b.valueOf())},"Array, number":d,"Array, BigNumber":function(h,b){return d(h,b.toNumber())},"Matrix, number":l,"Matrix, BigNumber":function(h,b){return l(h,b.toNumber())},"Unit, number | BigNumber":function(h,b){return h.pow(b)}});function c(h,b){if(t.predictable&&!me(b)&&h<0)try{var g=A(b),f=s(g);if((b===f||Math.abs((b-f)/b)<1e-14)&&g.d%2n===1n)return(g.n%2n===0n?1:-1)*Math.pow(-h,b)}catch{}return t.predictable&&(h<-1&&b===1/0||h>-1&&h<0&&b===-1/0)?NaN:me(b)||h>=0||t.predictable?Ci(h,b):h*h<1&&b===1/0||h*h>1&&b===-1/0?0:new u(h,0).pow(b,0)}function d(h,b){if(!me(b))throw new TypeError("For A^b, b must be an integer (value is "+b+")");var g=Le(h);if(g.length!==2)throw new Error("For A^b, A must be 2 dimensional (A has "+g.length+" dimensions)");if(g[0]!==g[1])throw new Error("For A^b, A must be square (size is "+g[0]+"x"+g[1]+")");if(b<0)try{return d(o(h),-b)}catch(p){throw p.message==="Cannot calculate inverse, determinant is zero"?new TypeError("For A^b, when A is not invertible, b must be a positive integer (value is "+b+")"):p}for(var f=a(g[0]).valueOf(),m=h;b>=1;)1&~b||(f=n(m,f)),b>>=1,m=n(m,m);return f}function l(h,b){return i(d(h.valueOf(),b))}}),WA=ne("dot",["typed","addScalar","multiplyScalar","conj","size"],r=>{var{typed:e,addScalar:t,multiplyScalar:a,conj:n,size:i}=r;return e("dot",{"Array | DenseMatrix, Array | DenseMatrix":function(A,u){var c=o(A,u),d=Be(A)?A._data:A,l=Be(A)?A._datatype||A.getDataType():void 0,h=Be(u)?u._data:u,b=Be(u)?u._datatype||u.getDataType():void 0,g=s(A).length===2,f=s(u).length===2,m=t,p=a;if(l&&b&&l===b&&typeof l=="string"&&l!=="mixed"){var C=l;m=e.find(t,[C,C]),p=e.find(a,[C,C])}if(!g&&!f){for(var I=p(n(d[0]),h[0]),x=1;x<c;x++)I=m(I,p(n(d[x]),h[x]));return I}if(!g&&f){for(var y=p(n(d[0]),h[0][0]),F=1;F<c;F++)y=m(y,p(n(d[F]),h[F][0]));return y}if(g&&!f){for(var D=p(n(d[0][0]),h[0]),Q=1;Q<c;Q++)D=m(D,p(n(d[Q][0]),h[Q]));return D}if(g&&f){for(var M=p(n(d[0][0]),h[0][0]),S=1;S<c;S++)M=m(M,p(n(d[S][0]),h[S][0]));return M}},"SparseMatrix, SparseMatrix":function(A,u){o(A,u);for(var c=A._index,d=A._values,l=u._index,h=u._values,b=0,g=t,f=a,m=0,p=0;m<c.length&&p<l.length;){var C=c[m],I=l[p];C<I?m++:C>I?p++:C===I&&(b=g(b,f(d[m],h[p])),m++,p++)}return b}});function o(A,u){var c,d,l=s(A),h=s(u);if(l.length===1)c=l[0];else{if(l.length!==2||l[1]!==1)throw new RangeError("Expected a column vector, instead got a matrix of size ("+l.join(", ")+")");c=l[0]}if(h.length===1)d=h[0];else{if(h.length!==2||h[1]!==1)throw new RangeError("Expected a column vector, instead got a matrix of size ("+h.join(", ")+")");d=h[0]}if(c!==d)throw new RangeError("Vectors must have equal length ("+c+" != "+d+")");if(c===0)throw new RangeError("Cannot calculate the dot product of empty vectors");return c}function s(A){return Be(A)?A.size():i(A)}}),YA=ne("det",["typed","matrix","subtractScalar","multiply","divideScalar","isZero","unaryMinus"],r=>{var{typed:e,matrix:t,subtractScalar:a,multiply:n,divideScalar:i,isZero:o,unaryMinus:s}=r;return e("det",{any:function(A){return De(A)},"Array | Matrix":function(A){var u;switch((u=Be(A)?A.size():Array.isArray(A)?(A=t(A)).size():[]).length){case 0:return De(A);case 1:if(u[0]===1)return De(A.valueOf()[0]);if(u[0]===0)return 1;throw new RangeError("Matrix must be square (size: "+Fe(u)+")");case 2:var c=u[0],d=u[1];if(c===d)return function(l,h){if(h===1)return De(l[0][0]);if(h===2)return a(n(l[0][0],l[1][1]),n(l[1][0],l[0][1]));for(var b=!1,g=new Array(h).fill(0).map((Q,M)=>M),f=0;f<h;f++){var m=g[f];if(o(l[m][f])){var p=void 0;for(p=f+1;p<h;p++)if(!o(l[g[p]][f])){m=g[p],g[p]=g[f],g[f]=m,b=!b;break}if(p===h)return l[m][f]}for(var C=l[m][f],I=f===0?1:l[g[f-1]][f-1],x=f+1;x<h;x++)for(var y=g[x],F=f+1;F<h;F++)l[y][F]=i(a(n(l[y][F],C),n(l[y][f],l[m][F])),I)}var D=l[g[h-1]][h-1];return b?s(D):D}(A.clone().valueOf(),c);if(d===0)return 1;throw new RangeError("Matrix must be square (size: "+Fe(u)+")");default:throw new RangeError("Matrix must be two dimensional (size: "+Fe(u)+")")}}})}),XA=ne("inv",["typed","matrix","divideScalar","addScalar","multiply","unaryMinus","det","identity","abs"],r=>{var{typed:e,matrix:t,divideScalar:a,addScalar:n,multiply:i,unaryMinus:o,det:s,identity:A,abs:u}=r;return e("inv",{"Array | Matrix":function(d){var l=Be(d)?d.size():Le(d);switch(l.length){case 1:if(l[0]===1)return Be(d)?t([a(1,d.valueOf()[0])]):[a(1,d[0])];throw new RangeError("Matrix must be square (size: "+Fe(l)+")");case 2:var h=l[0],b=l[1];if(h===b)return Be(d)?t(c(d.valueOf(),h,b),d.storage()):c(d,h,b);throw new RangeError("Matrix must be square (size: "+Fe(l)+")");default:throw new RangeError("Matrix must be two dimensional (size: "+Fe(l)+")")}},any:function(d){return a(1,d)}});function c(d,l,h){var b,g,f,m,p;if(l===1){if((m=d[0][0])===0)throw Error("Cannot calculate inverse, determinant is zero");return[[a(1,m)]]}if(l===2){var C=s(d);if(C===0)throw Error("Cannot calculate inverse, determinant is zero");return[[a(d[1][1],C),a(o(d[0][1]),C)],[a(o(d[1][0]),C),a(d[0][0],C)]]}var I=d.concat();for(b=0;b<l;b++)I[b]=I[b].concat();for(var x=A(l).valueOf(),y=0;y<h;y++){var F=u(I[y][y]),D=y;for(b=y+1;b<l;)u(I[b][y])>F&&(F=u(I[b][y]),D=b),b++;if(F===0)throw Error("Cannot calculate inverse, determinant is zero");(b=D)!==y&&(p=I[y],I[y]=I[b],I[b]=p,p=x[y],x[y]=x[b],x[b]=p);var Q=I[y],M=x[y];for(b=0;b<l;b++){var S=I[b],O=x[b];if(b!==y){if(S[y]!==0){for(f=a(o(S[y]),Q[y]),g=y;g<h;g++)S[g]=n(S[g],i(f,Q[g]));for(g=0;g<h;g++)O[g]=n(O[g],i(f,M[g]))}}else{for(f=Q[y],g=y;g<h;g++)S[g]=a(S[g],f);for(g=0;g<h;g++)O[g]=a(O[g],f)}}}return x}}),Si="gamma",ZA=ne(Si,["typed","config","multiplyScalar","pow","BigNumber","Complex"],r=>{var{typed:e,config:t,multiplyScalar:a,pow:n,BigNumber:i,Complex:o}=r;return e(Si,{number:Fa,Complex:function A(u){if(u.im===0)return Fa(u.re);if(u.re<.5){var c=new o(1-u.re,-u.im),d=new o(Math.PI*u.re,Math.PI*u.im);return new o(Math.PI).div(d.sin()).div(A(c))}u=new o(u.re-1,u.im);for(var l=new o(Pt[0],0),h=1;h<Pt.length;++h){var b=new o(Pt[h],0);l=l.add(b.div(u.add(h)))}var g=new o(u.re+Ii+.5,u.im),f=Math.sqrt(2*Math.PI),m=g.pow(u.add(.5)),p=g.neg().exp();return l.mul(f).mul(m).mul(p)},BigNumber:function(A){if(A.isInteger())return A.isNegative()||A.isZero()?new i(1/0):s(A.minus(1));if(!A.isFinite())return new i(A.isNegative()?NaN:1/0);throw new Error("Integer BigNumber expected")}});function s(A){if(A<8)return new i([1,1,2,6,24,120,720,5040][A]);var u=t.precision+(0|Math.log(A.toNumber())),c=i.clone({precision:u});if(A%2==1)return A.times(s(new i(A-1)));for(var d=A,l=new c(A),h=A.toNumber();d>2;)h+=d-=2,l=l.times(h);return new i(l.toPrecision(i.precision))}}),va=gA({config:xt}),Cr=pA({}),Ri=EA({}),Ir=CA({}),Br=yA({Matrix:Ir}),Ie=ys({BigNumber:va,Complex:Cr,DenseMatrix:Br,Fraction:Ri}),$A=RA({typed:Ie}),Dr=TA({typed:Ie}),ec=HA({typed:Ie}),yr=FA({config:xt,typed:Ie}),tc=wA({equalScalar:yr,typed:Ie}),wr=GA({typed:Ie}),Ti=vA({typed:Ie}),Ni=QA({Matrix:Ir,equalScalar:yr,typed:Ie}),ac=NA({typed:Ie}),rc=kA({BigNumber:va,typed:Ie}),qt=MA({DenseMatrix:Br,Matrix:Ir,SparseMatrix:Ni,typed:Ie}),Ui=jA({Fraction:Ri,typed:Ie}),Li=OA({BigNumber:va,DenseMatrix:Br,SparseMatrix:Ni,config:xt,matrix:qt,typed:Ie}),nc=JA({bignumber:rc,fraction:Ui,number:Ti}),ic=qA({matrix:qt,config:xt,typed:Ie}),Gi=SA({typed:Ie}),_i=KA({numeric:nc,typed:Ie}),xr=_A({addScalar:Dr,dot:WA({addScalar:Dr,conj:ec,multiplyScalar:wr,size:ic,typed:Ie}),equalScalar:yr,matrix:qt,multiplyScalar:wr,typed:Ie}),oc=ZA({BigNumber:va,Complex:Cr,config:xt,multiplyScalar:wr,pow:VA({Complex:Cr,config:xt,fraction:Ui,identity:Li,inv:XA({abs:$A,addScalar:Dr,det:YA({divideScalar:_i,isZero:tc,matrix:qt,multiply:xr,subtractScalar:ac,typed:Ie,unaryMinus:Gi}),divideScalar:_i,identity:Li,matrix:qt,multiply:xr,typed:Ie,unaryMinus:Gi}),matrix:qt,multiply:xr,number:Ti,typed:Ie}),typed:Ie});class sc{constructor(e){St(this,"_toElementFn");if(e){const{toElementFn:t}=e;if(typeof t=="function")this._toElementFn=t;else if(t)throw new TypeError("toElementFn must be a function type")}}get toElementFn(){return this._toElementFn}*[Symbol.iterator](...e){yield*this._getIterator(...e)}*values(){for(const e of this)yield e}every(e,t){let a=0;for(const n of this)if(!e.call(t,n,a++,this))return!1;return!0}some(e,t){let a=0;for(const n of this)if(e.call(t,n,a++,this))return!0;return!1}forEach(e,t){let a=0;for(const n of this)e.call(t,n,a++,this)}find(e,t){let a=0;for(const n of this)if(e.call(t,n,a++,this))return n}has(e){for(const t of this)if(t===e)return!0;return!1}reduce(e,t){let a=t??0,n=0;for(const i of this)a=e(a,i,n++,this);return a}toArray(){return[...this]}toVisual(){return[...this]}print(){console.log(this.toVisual())}}/**
|
|
24
|
+
(`+Fe(this._index[p],c)+", "+Fe(g,c)+") ==> "+(this._values?Fe(this._values[p],c):"X");return b},n.prototype.toString=function(){return Fe(this.toArray())},n.prototype.toJSON=function(){return{mathjs:"SparseMatrix",values:this._values,index:this._index,ptr:this._ptr,size:this._size,datatype:this._datatype}},n.prototype.diagonal=function(c){if(c){if(xe(c)&&(c=c.toNumber()),!le(c)||!me(c))throw new TypeError("The parameter k must be an integer number")}else c=0;var d=c>0?c:0,l=c<0?-c:0,h=this._size[0],b=this._size[1],g=Math.min(h-l,b-d),f=[],m=[],p=[];p[0]=0;for(var C=d;C<b&&f.length<g;C++)for(var I=this._ptr[C],x=this._ptr[C+1],y=I;y<x;y++){var F=this._index[y];if(F===C-d+l){f.push(this._values[y]),m[f.length-1]=F-l;break}}return p.push(f.length),new n({values:f,index:m,ptr:p,size:[g,1]})},n.fromJSON=function(c){return new n(c)},n.diagonal=function(c,d,l,h,b){if(!Qe(c))throw new TypeError("Array expected, size parameter");if(c.length!==2)throw new Error("Only two dimensions matrix are supported");if(c=c.map(function(K){if(xe(K)&&(K=K.toNumber()),!le(K)||!me(K)||K<1)throw new Error("Size values must be positive integers");return K}),l){if(xe(l)&&(l=l.toNumber()),!le(l)||!me(l))throw new TypeError("The parameter k must be an integer number")}else l=0;var g=t,f=0;rt(b)&&(g=e.find(t,[b,b])||t,f=e.convert(0,b));var m,p=l>0?l:0,C=l<0?-l:0,I=c[0],x=c[1],y=Math.min(I-C,x-p);if(Qe(d)){if(d.length!==y)throw new Error("Invalid value array length");m=function(K){return d[K]}}else if(Be(d)){var F=d.size();if(F.length!==1||F[0]!==y)throw new Error("Invalid matrix length");m=function(K){return d.get([K])}}else m=function(){return d};for(var D=[],v=[],M=[],S=0;S<x;S++){M.push(D.length);var O=S-p;if(O>=0&&O<y){var P=m(O);g(P,f)||(v.push(O+C),D.push(P))}}return M.push(D.length),new n({values:D,index:v,ptr:M,size:[I,x]})},n.prototype.swapRows=function(c,d){if(!(le(c)&&me(c)&&le(d)&&me(d)))throw new Error("Row index must be positive integers");if(this._size.length!==2)throw new Error("Only two dimensional matrix is supported");return Ce(c,this._size[0]),Ce(d,this._size[0]),n._swapRows(c,d,this._size[1],this._values,this._index,this._ptr),this},n._forEachRow=function(c,d,l,h,b){for(var g=h[c],f=h[c+1],m=g;m<f;m++)b(l[m],d[m])},n._swapRows=function(c,d,l,h,b,g){for(var f=0;f<l;f++){var m=g[f],p=g[f+1],C=o(c,m,p,b),I=o(d,m,p,b);if(C<p&&I<p&&b[C]===c&&b[I]===d){if(h){var x=h[C];h[C]=h[I],h[I]=x}}else if(C<p&&b[C]===c&&(I>=p||b[I]!==d)){var y=h?h[C]:void 0;b.splice(I,0,d),h&&h.splice(I,0,y),b.splice(I<=C?C+1:C,1),h&&h.splice(I<=C?C+1:C,1)}else if(I<p&&b[I]===d&&(C>=p||b[C]!==c)){var F=h?h[I]:void 0;b.splice(C,0,c),h&&h.splice(C,0,F),b.splice(C<=I?I+1:I,1),h&&h.splice(C<=I?I+1:I,1)}}},n},{isClass:!0}),QA=ne("number",["typed"],r=>{var{typed:e}=r,t=e("number",{"":function(){return 0},number:function(a){return a},string:function(a){if(a==="NaN")return NaN;var n,i,o=(i=(n=a).match(/(0[box])([0-9a-fA-F]*)\.([0-9a-fA-F]*)/))?{input:n,radix:{"0b":2,"0o":8,"0x":16}[i[1]],integerPart:i[2],fractionalPart:i[3]}:null;if(o)return function(c){for(var d=parseInt(c.integerPart,c.radix),l=0,h=0;h<c.fractionalPart.length;h++)l+=parseInt(c.fractionalPart[h],c.radix)/Math.pow(c.radix,h+1);var b=d+l;if(isNaN(b))throw new SyntaxError('String "'+c.input+'" is not a valid number');return b}(o);var s=0,A=a.match(/(0[box][0-9a-fA-F]*)i([0-9]*)/);A&&(s=Number(A[2]),a=A[1]);var u=Number(a);if(isNaN(u))throw new SyntaxError('String "'+a+'" is not a valid number');if(A){if(u>2**s-1)throw new SyntaxError('String "'.concat(a,'" is out of range'));u>=2**(s-1)&&(u-=2**s)}return u},BigNumber:function(a){return a.toNumber()},bigint:function(a){return Number(a)},Fraction:function(a){return a.valueOf()},Unit:e.referToSelf(a=>n=>{var i=n.clone();return i.value=a(n.value),i}),null:function(a){return 0},"Unit, string | Unit":function(a,n){return a.toNumber(n)},"Array | Matrix":e.referToSelf(a=>n=>Qt(n,a))});return t.fromJSON=function(a){return parseFloat(a.value)},t}),kA=ne("bignumber",["typed","BigNumber"],r=>{var{typed:e,BigNumber:t}=r;return e("bignumber",{"":function(){return new t(0)},number:function(a){return new t(a+"")},string:function(a){var n=a.match(/(0[box][0-9a-fA-F]*)i([0-9]*)/);if(n){var i=n[2],o=t(n[1]),s=new t(2).pow(Number(i));if(o.gt(s.sub(1)))throw new SyntaxError('String "'.concat(a,'" is out of range'));var A=new t(2).pow(Number(i)-1);return o.gte(A)?o.sub(s):o}return new t(a)},BigNumber:function(a){return a},bigint:function(a){return new t(a.toString())},Unit:e.referToSelf(a=>n=>{var i=n.clone();return i.value=a(n.value),i}),Fraction:function(a){return new t(String(a.n)).div(String(a.d)).times(String(a.s))},null:function(a){return new t(0)},"Array | Matrix":e.referToSelf(a=>n=>Qt(n,a))})}),jA=ne("fraction",["typed","Fraction"],r=>{var{typed:e,Fraction:t}=r;return e("fraction",{number:function(a){if(!isFinite(a)||isNaN(a))throw new Error(a+" cannot be represented as a fraction");return new t(a)},string:function(a){return new t(a)},"number, number":function(a,n){return new t(a,n)},"bigint, bigint":function(a,n){return new t(a,n)},null:function(a){return new t(0)},BigNumber:function(a){return new t(a.toString())},bigint:function(a){return new t(a.toString())},Fraction:function(a){return a},Unit:e.referToSelf(a=>n=>{var i=n.clone();return i.value=a(n.value),i}),Object:function(a){return new t(a)},"Array | Matrix":e.referToSelf(a=>n=>Qt(n,a))})}),Di="matrix",MA=ne(Di,["typed","Matrix","DenseMatrix","SparseMatrix"],r=>{var{typed:e,Matrix:t,DenseMatrix:a,SparseMatrix:n}=r;return e(Di,{"":function(){return i([])},string:function(o){return i([],o)},"string, string":function(o,s){return i([],o,s)},Array:function(o){return i(o)},Matrix:function(o){return i(o,o.storage())},"Array | Matrix, string":i,"Array | Matrix, string, string":i});function i(o,s,A){if(s==="dense"||s==="default"||s===void 0)return new a(o,A);if(s==="sparse")return new n(o,A);throw new TypeError("Unknown matrix type "+JSON.stringify(s)+".")}}),yi="unaryMinus",SA=ne(yi,["typed"],r=>{var{typed:e}=r;return e(yi,{number:Ei,"Complex | BigNumber | Fraction":t=>t.neg(),bigint:t=>-t,Unit:e.referToSelf(t=>a=>{var n=a.clone();return n.value=e.find(t,n.valueType())(a.value),n}),"Array | Matrix":e.referToSelf(t=>a=>Qt(a,t,!0))})}),RA=ne("abs",["typed"],r=>{var{typed:e}=r;return e("abs",{number:gi,"Complex | BigNumber | Fraction | Unit":t=>t.abs(),bigint:t=>t<0n?-t:t,"Array | Matrix":e.referToSelf(t=>a=>Qt(a,t,!0))})}),wi="addScalar",TA=ne(wi,["typed"],r=>{var{typed:e}=r;return e(wi,{"number, number":fi,"Complex, Complex":function(t,a){return t.add(a)},"BigNumber, BigNumber":function(t,a){return t.plus(a)},"bigint, bigint":function(t,a){return t+a},"Fraction, Fraction":function(t,a){return t.add(a)},"Unit, Unit":e.referToSelf(t=>(a,n)=>{if(a.value===null||a.value===void 0)throw new Error("Parameter x contains a unit with undefined value");if(n.value===null||n.value===void 0)throw new Error("Parameter y contains a unit with undefined value");if(!a.equalBase(n))throw new Error("Units do not match");var i=a.clone();return i.value=e.find(t,[i.valueType(),n.valueType()])(i.value,n.value),i.fixPrefix=!1,i})})}),xi="subtractScalar",NA=ne(xi,["typed"],r=>{var{typed:e}=r;return e(xi,{"number, number":pi,"Complex, Complex":function(t,a){return t.sub(a)},"BigNumber, BigNumber":function(t,a){return t.minus(a)},"bigint, bigint":function(t,a){return t-a},"Fraction, Fraction":function(t,a){return t.sub(a)},"Unit, Unit":e.referToSelf(t=>(a,n)=>{if(a.value===null||a.value===void 0)throw new Error("Parameter x contains a unit with undefined value");if(n.value===null||n.value===void 0)throw new Error("Parameter y contains a unit with undefined value");if(!a.equalBase(n))throw new Error("Units do not match");var i=a.clone();return i.value=e.find(t,[i.valueType(),n.valueType()])(i.value,n.value),i.fixPrefix=!1,i})})}),UA=ne("matAlgo11xS0s",["typed","equalScalar"],r=>{var{typed:e,equalScalar:t}=r;return function(a,n,i,o){var s=a._values,A=a._index,u=a._ptr,c=a._size,d=a._datatype;if(!s)throw new Error("Cannot perform operation on Pattern Sparse Matrix and Scalar value");var l,h=c[0],b=c[1],g=t,f=0,m=i;typeof d=="string"&&(l=d,g=e.find(t,[l,l]),f=e.convert(0,l),n=e.convert(n,l),m=e.find(i,[l,l]));for(var p=[],C=[],I=[],x=0;x<b;x++){I[x]=C.length;for(var y=u[x],F=u[x+1],D=y;D<F;D++){var v=A[D],M=o?m(n,s[D]):m(s[D],n);g(M,f)||(C.push(v),p.push(M))}}return I[b]=C.length,a.createSparseMatrix({values:p,index:C,ptr:I,size:[h,b],datatype:l})}}),LA=ne("matAlgo14xDs",["typed"],r=>{var{typed:e}=r;return function(a,n,i,o){var s,A=a._data,u=a._size,c=a._datatype,d=i;typeof c=="string"&&(s=c,n=e.convert(n,s),d=e.find(i,[s,s]));var l=u.length>0?t(d,0,u,u[0],A,n,o):[];return a.createDenseMatrix({data:l,size:De(u),datatype:s})};function t(a,n,i,o,s,A,u){var c=[];if(n===i.length-1)for(var d=0;d<o;d++)c[d]=u?a(A,s[d]):a(s[d],A);else for(var l=0;l<o;l++)c[l]=t(a,n+1,i,i[n+1],s[l],A,u);return c}}),GA=ne("multiplyScalar",["typed"],r=>{var{typed:e}=r;return e("multiplyScalar",{"number, number":mi,"Complex, Complex":function(t,a){return t.mul(a)},"BigNumber, BigNumber":function(t,a){return t.times(a)},"bigint, bigint":function(t,a){return t*a},"Fraction, Fraction":function(t,a){return t.mul(a)},"number | Fraction | BigNumber | Complex, Unit":(t,a)=>a.multiply(t),"Unit, number | Fraction | BigNumber | Complex | Unit":(t,a)=>t.multiply(a)})}),Fi="multiply",_A=ne(Fi,["typed","matrix","addScalar","multiplyScalar","equalScalar","dot"],r=>{var{typed:e,matrix:t,addScalar:a,multiplyScalar:n,equalScalar:i,dot:o}=r,s=UA({typed:e,equalScalar:i}),A=LA({typed:e});function u(h,b){switch(h.length){case 1:switch(b.length){case 1:if(h[0]!==b[0])throw new RangeError("Dimension mismatch in multiplication. Vectors must have the same length");break;case 2:if(h[0]!==b[0])throw new RangeError("Dimension mismatch in multiplication. Vector length ("+h[0]+") must match Matrix rows ("+b[0]+")");break;default:throw new Error("Can only multiply a 1 or 2 dimensional matrix (Matrix B has "+b.length+" dimensions)")}break;case 2:switch(b.length){case 1:if(h[1]!==b[0])throw new RangeError("Dimension mismatch in multiplication. Matrix columns ("+h[1]+") must match Vector length ("+b[0]+")");break;case 2:if(h[1]!==b[0])throw new RangeError("Dimension mismatch in multiplication. Matrix A columns ("+h[1]+") must match Matrix B rows ("+b[0]+")");break;default:throw new Error("Can only multiply a 1 or 2 dimensional matrix (Matrix B has "+b.length+" dimensions)")}break;default:throw new Error("Can only multiply a 1 or 2 dimensional matrix (Matrix A has "+h.length+" dimensions)")}}function c(h,b){if(b.storage()!=="dense")throw new Error("Support for SparseMatrix not implemented");return function(g,f){var m,p=g._data,C=g._size,I=g._datatype||g.getDataType(),x=f._data,y=f._size,F=f._datatype||f.getDataType(),D=C[0],v=y[1],M=a,S=n;I&&F&&I===F&&typeof I=="string"&&I!=="mixed"&&(m=I,M=e.find(a,[m,m]),S=e.find(n,[m,m]));for(var O=[],P=0;P<v;P++){for(var K=S(p[0],x[0][P]),J=1;J<D;J++)K=M(K,S(p[J],x[J][P]));O[P]=K}return g.createDenseMatrix({data:O,size:[v],datatype:I===g._datatype&&F===f._datatype?m:void 0})}(h,b)}var d=e("_multiplyMatrixVector",{"DenseMatrix, any":function(h,b){var g,f=h._data,m=h._size,p=h._datatype||h.getDataType(),C=b._data,I=b._datatype||b.getDataType(),x=m[0],y=m[1],F=a,D=n;p&&I&&p===I&&typeof p=="string"&&p!=="mixed"&&(g=p,F=e.find(a,[g,g]),D=e.find(n,[g,g]));for(var v=[],M=0;M<x;M++){for(var S=f[M],O=D(S[0],C[0]),P=1;P<y;P++)O=F(O,D(S[P],C[P]));v[M]=O}return h.createDenseMatrix({data:v,size:[x],datatype:p===h._datatype&&I===b._datatype?g:void 0})},"SparseMatrix, any":function(h,b){var g=h._values,f=h._index,m=h._ptr,p=h._datatype||h._data===void 0?h._datatype:h.getDataType();if(!g)throw new Error("Cannot multiply Pattern only Matrix times Dense Matrix");var C,I=b._data,x=b._datatype||b.getDataType(),y=h._size[0],F=b._size[0],D=[],v=[],M=[],S=a,O=n,P=i,K=0;p&&x&&p===x&&typeof p=="string"&&p!=="mixed"&&(C=p,S=e.find(a,[C,C]),O=e.find(n,[C,C]),P=e.find(i,[C,C]),K=e.convert(0,C));var J=[],q=[];M[0]=0;for(var se=0;se<F;se++){var ue=I[se];if(!P(ue,K))for(var re=m[se],be=m[se+1],de=re;de<be;de++){var $=f[de];q[$]?J[$]=S(J[$],O(ue,g[de])):(q[$]=!0,v.push($),J[$]=O(ue,g[de]))}}for(var pe=v.length,Y=0;Y<pe;Y++){var ee=v[Y];D[Y]=J[ee]}return M[1]=v.length,h.createSparseMatrix({values:D,index:v,ptr:M,size:[y,1],datatype:p===h._datatype&&x===b._datatype?C:void 0})}}),l=e("_multiplyMatrixMatrix",{"DenseMatrix, DenseMatrix":function(h,b){var g,f=h._data,m=h._size,p=h._datatype||h.getDataType(),C=b._data,I=b._size,x=b._datatype||b.getDataType(),y=m[0],F=m[1],D=I[1],v=a,M=n;p&&x&&p===x&&typeof p=="string"&&p!=="mixed"&&p!=="mixed"&&(g=p,v=e.find(a,[g,g]),M=e.find(n,[g,g]));for(var S=[],O=0;O<y;O++){var P=f[O];S[O]=[];for(var K=0;K<D;K++){for(var J=M(P[0],C[0][K]),q=1;q<F;q++)J=v(J,M(P[q],C[q][K]));S[O][K]=J}}return h.createDenseMatrix({data:S,size:[y,D],datatype:p===h._datatype&&x===b._datatype?g:void 0})},"DenseMatrix, SparseMatrix":function(h,b){var g=h._data,f=h._size,m=h._datatype||h.getDataType(),p=b._values,C=b._index,I=b._ptr,x=b._size,y=b._datatype||b._data===void 0?b._datatype:b.getDataType();if(!p)throw new Error("Cannot multiply Dense Matrix times Pattern only Matrix");var F,D=f[0],v=x[1],M=a,S=n,O=i,P=0;m&&y&&m===y&&typeof m=="string"&&m!=="mixed"&&(F=m,M=e.find(a,[F,F]),S=e.find(n,[F,F]),O=e.find(i,[F,F]),P=e.convert(0,F));for(var K=[],J=[],q=[],se=b.createSparseMatrix({values:K,index:J,ptr:q,size:[D,v],datatype:m===h._datatype&&y===b._datatype?F:void 0}),ue=0;ue<v;ue++){q[ue]=J.length;var re=I[ue],be=I[ue+1];if(be>re)for(var de=0,$=0;$<D;$++){for(var pe=$+1,Y=void 0,ee=re;ee<be;ee++){var Ae=C[ee];de!==pe?(Y=S(g[$][Ae],p[ee]),de=pe):Y=M(Y,S(g[$][Ae],p[ee]))}de!==pe||O(Y,P)||(J.push($),K.push(Y))}}return q[v]=J.length,se},"SparseMatrix, DenseMatrix":function(h,b){var g=h._values,f=h._index,m=h._ptr,p=h._datatype||h._data===void 0?h._datatype:h.getDataType();if(!g)throw new Error("Cannot multiply Pattern only Matrix times Dense Matrix");var C,I=b._data,x=b._datatype||b.getDataType(),y=h._size[0],F=b._size[0],D=b._size[1],v=a,M=n,S=i,O=0;p&&x&&p===x&&typeof p=="string"&&p!=="mixed"&&(C=p,v=e.find(a,[C,C]),M=e.find(n,[C,C]),S=e.find(i,[C,C]),O=e.convert(0,C));for(var P=[],K=[],J=[],q=h.createSparseMatrix({values:P,index:K,ptr:J,size:[y,D],datatype:p===h._datatype&&x===b._datatype?C:void 0}),se=[],ue=[],re=0;re<D;re++){J[re]=K.length;for(var be=re+1,de=0;de<F;de++){var $=I[de][re];if(!S($,O))for(var pe=m[de],Y=m[de+1],ee=pe;ee<Y;ee++){var Ae=f[ee];ue[Ae]!==be?(ue[Ae]=be,K.push(Ae),se[Ae]=M($,g[ee])):se[Ae]=v(se[Ae],M($,g[ee]))}}for(var Ee=J[re],ye=K.length,Ne=Ee;Ne<ye;Ne++){var qe=K[Ne];P[Ne]=se[qe]}}return J[D]=K.length,q},"SparseMatrix, SparseMatrix":function(h,b){var g,f=h._values,m=h._index,p=h._ptr,C=h._datatype||h._data===void 0?h._datatype:h.getDataType(),I=b._values,x=b._index,y=b._ptr,F=b._datatype||b._data===void 0?b._datatype:b.getDataType(),D=h._size[0],v=b._size[1],M=f&&I,S=a,O=n;C&&F&&C===F&&typeof C=="string"&&C!=="mixed"&&(g=C,S=e.find(a,[g,g]),O=e.find(n,[g,g]));for(var P,K,J,q,se,ue,re,be,de=M?[]:void 0,$=[],pe=[],Y=h.createSparseMatrix({values:de,index:$,ptr:pe,size:[D,v],datatype:C===h._datatype&&F===b._datatype?g:void 0}),ee=M?[]:void 0,Ae=[],Ee=0;Ee<v;Ee++){pe[Ee]=$.length;var ye=Ee+1;for(se=y[Ee],ue=y[Ee+1],q=se;q<ue;q++)if(be=x[q],M)for(K=p[be],J=p[be+1],P=K;P<J;P++)Ae[re=m[P]]!==ye?(Ae[re]=ye,$.push(re),ee[re]=O(I[q],f[P])):ee[re]=S(ee[re],O(I[q],f[P]));else for(K=p[be],J=p[be+1],P=K;P<J;P++)Ae[re=m[P]]!==ye&&(Ae[re]=ye,$.push(re));if(M)for(var Ne=pe[Ee],qe=$.length,Je=Ne;Je<qe;Je++){var ta=$[Je];de[Je]=ee[ta]}}return pe[v]=$.length,Y}});return e(Fi,n,{"Array, Array":e.referTo("Matrix, Matrix",h=>(b,g)=>{u(Le(b),Le(g));var f=h(t(b),t(g));return Be(f)?f.valueOf():f}),"Matrix, Matrix":function(h,b){var g=h.size(),f=b.size();return u(g,f),g.length===1?f.length===1?function(m,p,C){if(C===0)throw new Error("Cannot multiply two empty vectors");return o(m,p)}(h,b,g[0]):c(h,b):f.length===1?d(h,b):l(h,b)},"Matrix, Array":e.referTo("Matrix,Matrix",h=>(b,g)=>h(b,t(g))),"Array, Matrix":e.referToSelf(h=>(b,g)=>h(t(b,g.storage()),g)),"SparseMatrix, any":function(h,b){return s(h,b,n,!1)},"DenseMatrix, any":function(h,b){return A(h,b,n,!1)},"any, SparseMatrix":function(h,b){return s(b,h,n,!0)},"any, DenseMatrix":function(h,b){return A(b,h,n,!0)},"Array, any":function(h,b){return A(t(h),b,n,!1).valueOf()},"any, Array":function(h,b){return A(t(b),h,n,!0).valueOf()},"any, any":n,"any, any, ...any":e.referToSelf(h=>(b,g,f)=>{for(var m=h(b,g),p=0;p<f.length;p++)m=h(m,f[p]);return m})})}),vi="conj",HA=ne(vi,["typed"],r=>{var{typed:e}=r;return e(vi,{"number | BigNumber | Fraction":t=>t,Complex:t=>t.conjugate(),"Array | Matrix":e.referToSelf(t=>a=>Qt(a,t))})}),Qi="identity",OA=ne(Qi,["typed","config","matrix","BigNumber","DenseMatrix","SparseMatrix"],r=>{var{typed:e,config:t,matrix:a,BigNumber:n,DenseMatrix:i,SparseMatrix:o}=r;return e(Qi,{"":function(){return t.matrix==="Matrix"?a([]):[]},string:function(u){return a(u)},"number | BigNumber":function(u){return A(u,u,t.matrix==="Matrix"?"dense":void 0)},"number | BigNumber, string":function(u,c){return A(u,u,c)},"number | BigNumber, number | BigNumber":function(u,c){return A(u,c,t.matrix==="Matrix"?"dense":void 0)},"number | BigNumber, number | BigNumber, string":function(u,c,d){return A(u,c,d)},Array:function(u){return s(u)},"Array, string":function(u,c){return s(u,c)},Matrix:function(u){return s(u.valueOf(),u.storage())},"Matrix, string":function(u,c){return s(u.valueOf(),c)}});function s(u,c){switch(u.length){case 0:return c?a(c):[];case 1:return A(u[0],u[0],c);case 2:return A(u[0],u[1],c);default:throw new Error("Vector containing two values expected")}}function A(u,c,d){var l=xe(u)||xe(c)?n:null;if(xe(u)&&(u=u.toNumber()),xe(c)&&(c=c.toNumber()),!me(u)||u<1)throw new Error("Parameters in function identity must be positive integers");if(!me(c)||c<1)throw new Error("Parameters in function identity must be positive integers");var h=l?new n(1):1,b=l?new l(0):0,g=[u,c];if(d){if(d==="sparse")return o.diagonal(g,h,0,b);if(d==="dense")return i.diagonal(g,h,0,b);throw new TypeError('Unknown matrix type "'.concat(d,'"'))}for(var f=fr([],g,b),m=u<c?u:c,p=0;p<m;p++)f[p][p]=h;return f}});function zA(){throw new Error('No "bignumber" implementation available')}function PA(){throw new Error('No "fraction" implementation available')}var ki,ji="size",qA=ne(ji,["typed","config","?matrix"],r=>{var{typed:e,config:t,matrix:a}=r;return e(ji,{Matrix:function(n){return n.create(n.size(),"number")},Array:Le,string:function(n){return t.matrix==="Array"?[n.length]:a([n.length],"dense","number")},"number | Complex | BigNumber | Unit | boolean | null":function(n){return t.matrix==="Array"?[]:a?a([],"dense","number"):function(){throw new Error('No "matrix" implementation available')}()}})}),JA=ne("numeric",["number","?bignumber","?fraction"],r=>{var{number:e,bignumber:t,fraction:a}=r,n={string:!0,number:!0,BigNumber:!0,Fraction:!0},i={number:o=>e(o),BigNumber:t?o=>t(o):zA,bigint:o=>BigInt(o),Fraction:a?o=>a(o):PA};return function(o){var s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"number";if((arguments.length>2?arguments[2]:void 0)!==void 0)throw new SyntaxError("numeric() takes one or two arguments");var A=pt(o);if(!(A in n))throw new TypeError("Cannot convert "+o+' of type "'+A+'"; valid input types are '+Object.keys(n).join(", "));if(!(s in i))throw new TypeError("Cannot convert "+o+' to type "'+s+'"; valid output types are '+Object.keys(i).join(", "));return s===A?o:i[s](o)}}),Mi="divideScalar",KA=ne(Mi,["typed","numeric"],r=>{var{typed:e,numeric:t}=r;return e(Mi,{"number, number":function(a,n){return a/n},"Complex, Complex":function(a,n){return a.div(n)},"BigNumber, BigNumber":function(a,n){return a.div(n)},"bigint, bigint":function(a,n){return a/n},"Fraction, Fraction":function(a,n){return a.div(n)},"Unit, number | Complex | Fraction | BigNumber | Unit":(a,n)=>a.divide(n),"number | Fraction | Complex | BigNumber, Unit":(a,n)=>n.divideInto(a)})}),VA=ne("pow",["typed","config","identity","multiply","matrix","inv","fraction","number","Complex"],r=>{var{typed:e,config:t,identity:a,multiply:n,matrix:i,inv:o,number:s,fraction:A,Complex:u}=r;return e("pow",{"number, number":c,"Complex, Complex":function(h,b){return h.pow(b)},"BigNumber, BigNumber":function(h,b){return b.isInteger()||h>=0||t.predictable?h.pow(b):new u(h.toNumber(),0).pow(b.toNumber(),0)},"bigint, bigint":(h,b)=>h**b,"Fraction, Fraction":function(h,b){var g=h.pow(b);if(g!=null)return g;if(t.predictable)throw new Error("Result of pow is non-rational and cannot be expressed as a fraction");return c(h.valueOf(),b.valueOf())},"Array, number":d,"Array, BigNumber":function(h,b){return d(h,b.toNumber())},"Matrix, number":l,"Matrix, BigNumber":function(h,b){return l(h,b.toNumber())},"Unit, number | BigNumber":function(h,b){return h.pow(b)}});function c(h,b){if(t.predictable&&!me(b)&&h<0)try{var g=A(b),f=s(g);if((b===f||Math.abs((b-f)/b)<1e-14)&&g.d%2n===1n)return(g.n%2n===0n?1:-1)*Math.pow(-h,b)}catch{}return t.predictable&&(h<-1&&b===1/0||h>-1&&h<0&&b===-1/0)?NaN:me(b)||h>=0||t.predictable?Ci(h,b):h*h<1&&b===1/0||h*h>1&&b===-1/0?0:new u(h,0).pow(b,0)}function d(h,b){if(!me(b))throw new TypeError("For A^b, b must be an integer (value is "+b+")");var g=Le(h);if(g.length!==2)throw new Error("For A^b, A must be 2 dimensional (A has "+g.length+" dimensions)");if(g[0]!==g[1])throw new Error("For A^b, A must be square (size is "+g[0]+"x"+g[1]+")");if(b<0)try{return d(o(h),-b)}catch(p){throw p.message==="Cannot calculate inverse, determinant is zero"?new TypeError("For A^b, when A is not invertible, b must be a positive integer (value is "+b+")"):p}for(var f=a(g[0]).valueOf(),m=h;b>=1;)1&~b||(f=n(m,f)),b>>=1,m=n(m,m);return f}function l(h,b){return i(d(h.valueOf(),b))}}),WA=ne("dot",["typed","addScalar","multiplyScalar","conj","size"],r=>{var{typed:e,addScalar:t,multiplyScalar:a,conj:n,size:i}=r;return e("dot",{"Array | DenseMatrix, Array | DenseMatrix":function(A,u){var c=o(A,u),d=Be(A)?A._data:A,l=Be(A)?A._datatype||A.getDataType():void 0,h=Be(u)?u._data:u,b=Be(u)?u._datatype||u.getDataType():void 0,g=s(A).length===2,f=s(u).length===2,m=t,p=a;if(l&&b&&l===b&&typeof l=="string"&&l!=="mixed"){var C=l;m=e.find(t,[C,C]),p=e.find(a,[C,C])}if(!g&&!f){for(var I=p(n(d[0]),h[0]),x=1;x<c;x++)I=m(I,p(n(d[x]),h[x]));return I}if(!g&&f){for(var y=p(n(d[0]),h[0][0]),F=1;F<c;F++)y=m(y,p(n(d[F]),h[F][0]));return y}if(g&&!f){for(var D=p(n(d[0][0]),h[0]),v=1;v<c;v++)D=m(D,p(n(d[v][0]),h[v]));return D}if(g&&f){for(var M=p(n(d[0][0]),h[0][0]),S=1;S<c;S++)M=m(M,p(n(d[S][0]),h[S][0]));return M}},"SparseMatrix, SparseMatrix":function(A,u){o(A,u);for(var c=A._index,d=A._values,l=u._index,h=u._values,b=0,g=t,f=a,m=0,p=0;m<c.length&&p<l.length;){var C=c[m],I=l[p];C<I?m++:C>I?p++:C===I&&(b=g(b,f(d[m],h[p])),m++,p++)}return b}});function o(A,u){var c,d,l=s(A),h=s(u);if(l.length===1)c=l[0];else{if(l.length!==2||l[1]!==1)throw new RangeError("Expected a column vector, instead got a matrix of size ("+l.join(", ")+")");c=l[0]}if(h.length===1)d=h[0];else{if(h.length!==2||h[1]!==1)throw new RangeError("Expected a column vector, instead got a matrix of size ("+h.join(", ")+")");d=h[0]}if(c!==d)throw new RangeError("Vectors must have equal length ("+c+" != "+d+")");if(c===0)throw new RangeError("Cannot calculate the dot product of empty vectors");return c}function s(A){return Be(A)?A.size():i(A)}}),YA=ne("det",["typed","matrix","subtractScalar","multiply","divideScalar","isZero","unaryMinus"],r=>{var{typed:e,matrix:t,subtractScalar:a,multiply:n,divideScalar:i,isZero:o,unaryMinus:s}=r;return e("det",{any:function(A){return De(A)},"Array | Matrix":function(A){var u;switch((u=Be(A)?A.size():Array.isArray(A)?(A=t(A)).size():[]).length){case 0:return De(A);case 1:if(u[0]===1)return De(A.valueOf()[0]);if(u[0]===0)return 1;throw new RangeError("Matrix must be square (size: "+Fe(u)+")");case 2:var c=u[0],d=u[1];if(c===d)return function(l,h){if(h===1)return De(l[0][0]);if(h===2)return a(n(l[0][0],l[1][1]),n(l[1][0],l[0][1]));for(var b=!1,g=new Array(h).fill(0).map((v,M)=>M),f=0;f<h;f++){var m=g[f];if(o(l[m][f])){var p=void 0;for(p=f+1;p<h;p++)if(!o(l[g[p]][f])){m=g[p],g[p]=g[f],g[f]=m,b=!b;break}if(p===h)return l[m][f]}for(var C=l[m][f],I=f===0?1:l[g[f-1]][f-1],x=f+1;x<h;x++)for(var y=g[x],F=f+1;F<h;F++)l[y][F]=i(a(n(l[y][F],C),n(l[y][f],l[m][F])),I)}var D=l[g[h-1]][h-1];return b?s(D):D}(A.clone().valueOf(),c);if(d===0)return 1;throw new RangeError("Matrix must be square (size: "+Fe(u)+")");default:throw new RangeError("Matrix must be two dimensional (size: "+Fe(u)+")")}}})}),XA=ne("inv",["typed","matrix","divideScalar","addScalar","multiply","unaryMinus","det","identity","abs"],r=>{var{typed:e,matrix:t,divideScalar:a,addScalar:n,multiply:i,unaryMinus:o,det:s,identity:A,abs:u}=r;return e("inv",{"Array | Matrix":function(d){var l=Be(d)?d.size():Le(d);switch(l.length){case 1:if(l[0]===1)return Be(d)?t([a(1,d.valueOf()[0])]):[a(1,d[0])];throw new RangeError("Matrix must be square (size: "+Fe(l)+")");case 2:var h=l[0],b=l[1];if(h===b)return Be(d)?t(c(d.valueOf(),h,b),d.storage()):c(d,h,b);throw new RangeError("Matrix must be square (size: "+Fe(l)+")");default:throw new RangeError("Matrix must be two dimensional (size: "+Fe(l)+")")}},any:function(d){return a(1,d)}});function c(d,l,h){var b,g,f,m,p;if(l===1){if((m=d[0][0])===0)throw Error("Cannot calculate inverse, determinant is zero");return[[a(1,m)]]}if(l===2){var C=s(d);if(C===0)throw Error("Cannot calculate inverse, determinant is zero");return[[a(d[1][1],C),a(o(d[0][1]),C)],[a(o(d[1][0]),C),a(d[0][0],C)]]}var I=d.concat();for(b=0;b<l;b++)I[b]=I[b].concat();for(var x=A(l).valueOf(),y=0;y<h;y++){var F=u(I[y][y]),D=y;for(b=y+1;b<l;)u(I[b][y])>F&&(F=u(I[b][y]),D=b),b++;if(F===0)throw Error("Cannot calculate inverse, determinant is zero");(b=D)!==y&&(p=I[y],I[y]=I[b],I[b]=p,p=x[y],x[y]=x[b],x[b]=p);var v=I[y],M=x[y];for(b=0;b<l;b++){var S=I[b],O=x[b];if(b!==y){if(S[y]!==0){for(f=a(o(S[y]),v[y]),g=y;g<h;g++)S[g]=n(S[g],i(f,v[g]));for(g=0;g<h;g++)O[g]=n(O[g],i(f,M[g]))}}else{for(f=v[y],g=y;g<h;g++)S[g]=a(S[g],f);for(g=0;g<h;g++)O[g]=a(O[g],f)}}}return x}}),Si="gamma",ZA=ne(Si,["typed","config","multiplyScalar","pow","BigNumber","Complex"],r=>{var{typed:e,config:t,multiplyScalar:a,pow:n,BigNumber:i,Complex:o}=r;return e(Si,{number:Fa,Complex:function A(u){if(u.im===0)return Fa(u.re);if(u.re<.5){var c=new o(1-u.re,-u.im),d=new o(Math.PI*u.re,Math.PI*u.im);return new o(Math.PI).div(d.sin()).div(A(c))}u=new o(u.re-1,u.im);for(var l=new o(Pt[0],0),h=1;h<Pt.length;++h){var b=new o(Pt[h],0);l=l.add(b.div(u.add(h)))}var g=new o(u.re+Ii+.5,u.im),f=Math.sqrt(2*Math.PI),m=g.pow(u.add(.5)),p=g.neg().exp();return l.mul(f).mul(m).mul(p)},BigNumber:function(A){if(A.isInteger())return A.isNegative()||A.isZero()?new i(1/0):s(A.minus(1));if(!A.isFinite())return new i(A.isNegative()?NaN:1/0);throw new Error("Integer BigNumber expected")}});function s(A){if(A<8)return new i([1,1,2,6,24,120,720,5040][A]);var u=t.precision+(0|Math.log(A.toNumber())),c=i.clone({precision:u});if(A%2==1)return A.times(s(new i(A-1)));for(var d=A,l=new c(A),h=A.toNumber();d>2;)h+=d-=2,l=l.times(h);return new i(l.toPrecision(i.precision))}}),Qa=gA({config:xt}),Ir=pA({}),Ri=EA({}),Br=CA({}),Dr=yA({Matrix:Br}),Ie=ys({BigNumber:Qa,Complex:Ir,DenseMatrix:Dr,Fraction:Ri}),$A=RA({typed:Ie}),yr=TA({typed:Ie}),ec=HA({typed:Ie}),wr=FA({config:xt,typed:Ie}),tc=wA({equalScalar:wr,typed:Ie}),xr=GA({typed:Ie}),Ti=QA({typed:Ie}),Ni=vA({Matrix:Br,equalScalar:wr,typed:Ie}),ac=NA({typed:Ie}),rc=kA({BigNumber:Qa,typed:Ie}),qt=MA({DenseMatrix:Dr,Matrix:Br,SparseMatrix:Ni,typed:Ie}),Ui=jA({Fraction:Ri,typed:Ie}),Li=OA({BigNumber:Qa,DenseMatrix:Dr,SparseMatrix:Ni,config:xt,matrix:qt,typed:Ie}),nc=JA({bignumber:rc,fraction:Ui,number:Ti}),ic=qA({matrix:qt,config:xt,typed:Ie}),Gi=SA({typed:Ie}),_i=KA({numeric:nc,typed:Ie}),Fr=_A({addScalar:yr,dot:WA({addScalar:yr,conj:ec,multiplyScalar:xr,size:ic,typed:Ie}),equalScalar:wr,matrix:qt,multiplyScalar:xr,typed:Ie}),oc=ZA({BigNumber:Qa,Complex:Ir,config:xt,multiplyScalar:xr,pow:VA({Complex:Ir,config:xt,fraction:Ui,identity:Li,inv:XA({abs:$A,addScalar:yr,det:YA({divideScalar:_i,isZero:tc,matrix:qt,multiply:Fr,subtractScalar:ac,typed:Ie,unaryMinus:Gi}),divideScalar:_i,identity:Li,matrix:qt,multiply:Fr,typed:Ie,unaryMinus:Gi}),matrix:qt,multiply:Fr,number:Ti,typed:Ie}),typed:Ie});class sc{constructor(e){St(this,"_toElementFn");if(e){const{toElementFn:t}=e;if(typeof t=="function")this._toElementFn=t;else if(t)throw new TypeError("toElementFn must be a function type")}}get toElementFn(){return this._toElementFn}*[Symbol.iterator](...e){yield*this._getIterator(...e)}*values(){for(const e of this)yield e}every(e,t){let a=0;for(const n of this)if(!e.call(t,n,a++,this))return!1;return!0}some(e,t){let a=0;for(const n of this)if(e.call(t,n,a++,this))return!0;return!1}forEach(e,t){let a=0;for(const n of this)e.call(t,n,a++,this)}find(e,t){let a=0;for(const n of this)if(e.call(t,n,a++,this))return n}has(e){for(const t of this)if(t===e)return!0;return!1}reduce(e,t){let a=t??0,n=0;for(const i of this)a=e(a,i,n++,this);return a}toArray(){return[...this]}toVisual(){return[...this]}print(){console.log(this.toVisual())}}/**
|
|
25
25
|
* data-structure-typed
|
|
26
26
|
* @author Kirk Qi
|
|
27
27
|
* @copyright Copyright (c) 2022 Kirk Qi <qilinaus@gmail.com>
|
|
28
28
|
* @license MIT License
|
|
29
|
-
*/class kt extends sc{constructor(t=[],a){super(a);St(this,"_elements",[]);St(this,"_DEFAULT_COMPARATOR",(t,a)=>{if(typeof t=="object"||typeof a=="object")throw TypeError("When comparing object types, a custom comparator must be defined in the constructor's options parameter.");return t>a?1:t<a?-1:0});St(this,"_comparator",this._DEFAULT_COMPARATOR);if(a){const{comparator:n}=a;n&&(this._comparator=n)}this.addMany(t)}get elements(){return this._elements}get size(){return this.elements.length}get leaf(){return this.elements[this.size-1]??void 0}static heapify(t,a){return new kt(t,a)}add(t){return this._elements.push(t),this._bubbleUp(this.elements.length-1)}addMany(t){const a=[];for(const n of t)this._toElementFn?a.push(this.add(this._toElementFn(n))):a.push(this.add(n));return a}poll(){if(this.elements.length===0)return;const t=this.elements[0],a=this.elements.pop();return this.elements.length&&(this.elements[0]=a,this._sinkDown(0,this.elements.length>>1)),t}peek(){return this.elements[0]}isEmpty(){return this.size===0}clear(){this._elements=[]}refill(t){return this._elements=t,this.fix()}has(t){return this.elements.includes(t)}delete(t){const a=this.elements.indexOf(t);return!(a<0)&&(a===0?this.poll():a===this.elements.length-1?this.elements.pop():(this.elements.splice(a,1,this.elements.pop()),this._bubbleUp(a),this._sinkDown(a,this.elements.length>>1)),!0)}dfs(t="PRE"){const a=[],n=i=>{const o=2*i+1,s=o+1;i<this.size&&(t==="IN"?(n(o),a.push(this.elements[i]),n(s)):t==="PRE"?(a.push(this.elements[i]),n(o),n(s)):t==="POST"&&(n(o),n(s),a.push(this.elements[i])))};return n(0),a}clone(){return new kt(this,{comparator:this.comparator,toElementFn:this.toElementFn})}sort(){const t=[],a=new kt(this,{comparator:this.comparator});for(;a.size!==0;){const n=a.poll();n!==void 0&&t.push(n)}return t}fix(){const t=[];for(let a=Math.floor(this.size/2);a>=0;a--)t.push(this._sinkDown(a,this.elements.length>>1));return t}filter(t,a){const n=new kt([],{toElementFn:this.toElementFn,comparator:this.comparator});let i=0;for(const o of this)t.call(a,o,i,this)&&n.add(o),i++;return n}map(t,a,n,i){const o=new kt([],{comparator:a,toElementFn:n});let s=0;for(const A of this)o.add(t.call(i,A,s,this)),s++;return o}get comparator(){return this._comparator}*_getIterator(){for(const t of this.elements)yield t}_bubbleUp(t){const a=this.elements[t];for(;t>0;){const n=t-1>>1,i=this.elements[n];if(this.comparator(i,a)<=0)break;this.elements[t]=i,t=n}return this.elements[t]=a,!0}_sinkDown(t,a){const n=this.elements[t];for(;t<a;){let i=t<<1|1;const o=i+1;let s=this.elements[i];if(o<this.elements.length&&this.comparator(s,this.elements[o])>0&&(i=o,s=this.elements[o]),this.comparator(s,n)>=0)break;this.elements[t]=s,t=i}return this.elements[t]=n,!0}}(function(r){r[r.VISIT=0]="VISIT",r[r.PROCESS=1]="PROCESS"})(ki||(ki={}));class $t extends kt{constructor(e=[],t){super(e,t)}clone(){return new $t(this,{comparator:this.comparator,toElementFn:this.toElementFn})}filter(e,t){const a=new $t([],{toElementFn:this.toElementFn,comparator:this.comparator});let n=0;for(const i of this)e.call(t,i,n,this)&&a.add(i),n++;return a}map(e,t,a,n){const i=new $t([],{comparator:t,toElementFn:a});let o=0;for(const s of this)i.add(e.call(n,s,o,this)),o++;return i}}class ea extends $t{constructor(e=[],t){super(e,t)}clone(){return new ea(this,{comparator:this.comparator,toElementFn:this.toElementFn})}filter(e,t){const a=new ea([],{toElementFn:this.toElementFn,comparator:this.comparator});let n=0;for(const i of this)e.call(t,i,n,this)&&a.add(i),n++;return a}map(e,t,a,n){const i=new ea([],{comparator:t,toElementFn:a});let o=0;for(const s of this)i.add(e.call(n,s,o,this)),o++;return i}}function Ac(r){return new Worker(""+(typeof document>"u"&&typeof location>"u"?require("url").pathToFileURL(__dirname+"/assets/PointsManager.worker-
|
|
29
|
+
*/class kt extends sc{constructor(t=[],a){super(a);St(this,"_elements",[]);St(this,"_DEFAULT_COMPARATOR",(t,a)=>{if(typeof t=="object"||typeof a=="object")throw TypeError("When comparing object types, a custom comparator must be defined in the constructor's options parameter.");return t>a?1:t<a?-1:0});St(this,"_comparator",this._DEFAULT_COMPARATOR);if(a){const{comparator:n}=a;n&&(this._comparator=n)}this.addMany(t)}get elements(){return this._elements}get size(){return this.elements.length}get leaf(){return this.elements[this.size-1]??void 0}static heapify(t,a){return new kt(t,a)}add(t){return this._elements.push(t),this._bubbleUp(this.elements.length-1)}addMany(t){const a=[];for(const n of t)this._toElementFn?a.push(this.add(this._toElementFn(n))):a.push(this.add(n));return a}poll(){if(this.elements.length===0)return;const t=this.elements[0],a=this.elements.pop();return this.elements.length&&(this.elements[0]=a,this._sinkDown(0,this.elements.length>>1)),t}peek(){return this.elements[0]}isEmpty(){return this.size===0}clear(){this._elements=[]}refill(t){return this._elements=t,this.fix()}has(t){return this.elements.includes(t)}delete(t){const a=this.elements.indexOf(t);return!(a<0)&&(a===0?this.poll():a===this.elements.length-1?this.elements.pop():(this.elements.splice(a,1,this.elements.pop()),this._bubbleUp(a),this._sinkDown(a,this.elements.length>>1)),!0)}dfs(t="PRE"){const a=[],n=i=>{const o=2*i+1,s=o+1;i<this.size&&(t==="IN"?(n(o),a.push(this.elements[i]),n(s)):t==="PRE"?(a.push(this.elements[i]),n(o),n(s)):t==="POST"&&(n(o),n(s),a.push(this.elements[i])))};return n(0),a}clone(){return new kt(this,{comparator:this.comparator,toElementFn:this.toElementFn})}sort(){const t=[],a=new kt(this,{comparator:this.comparator});for(;a.size!==0;){const n=a.poll();n!==void 0&&t.push(n)}return t}fix(){const t=[];for(let a=Math.floor(this.size/2);a>=0;a--)t.push(this._sinkDown(a,this.elements.length>>1));return t}filter(t,a){const n=new kt([],{toElementFn:this.toElementFn,comparator:this.comparator});let i=0;for(const o of this)t.call(a,o,i,this)&&n.add(o),i++;return n}map(t,a,n,i){const o=new kt([],{comparator:a,toElementFn:n});let s=0;for(const A of this)o.add(t.call(i,A,s,this)),s++;return o}get comparator(){return this._comparator}*_getIterator(){for(const t of this.elements)yield t}_bubbleUp(t){const a=this.elements[t];for(;t>0;){const n=t-1>>1,i=this.elements[n];if(this.comparator(i,a)<=0)break;this.elements[t]=i,t=n}return this.elements[t]=a,!0}_sinkDown(t,a){const n=this.elements[t];for(;t<a;){let i=t<<1|1;const o=i+1;let s=this.elements[i];if(o<this.elements.length&&this.comparator(s,this.elements[o])>0&&(i=o,s=this.elements[o]),this.comparator(s,n)>=0)break;this.elements[t]=s,t=i}return this.elements[t]=n,!0}}(function(r){r[r.VISIT=0]="VISIT",r[r.PROCESS=1]="PROCESS"})(ki||(ki={}));class $t extends kt{constructor(e=[],t){super(e,t)}clone(){return new $t(this,{comparator:this.comparator,toElementFn:this.toElementFn})}filter(e,t){const a=new $t([],{toElementFn:this.toElementFn,comparator:this.comparator});let n=0;for(const i of this)e.call(t,i,n,this)&&a.add(i),n++;return a}map(e,t,a,n){const i=new $t([],{comparator:t,toElementFn:a});let o=0;for(const s of this)i.add(e.call(n,s,o,this)),o++;return i}}class ea extends $t{constructor(e=[],t){super(e,t)}clone(){return new ea(this,{comparator:this.comparator,toElementFn:this.toElementFn})}filter(e,t){const a=new ea([],{toElementFn:this.toElementFn,comparator:this.comparator});let n=0;for(const i of this)e.call(t,i,n,this)&&a.add(i),n++;return a}map(e,t,a,n){const i=new ea([],{comparator:t,toElementFn:a});let o=0;for(const s of this)i.add(e.call(n,s,o,this)),o++;return i}}function Ac(r){return new Worker(""+(typeof document>"u"&&typeof location>"u"?require("url").pathToFileURL(__dirname+"/assets/PointsManager.worker-dH1fNyu8.js").href:new URL("assets/PointsManager.worker-dH1fNyu8.js",typeof document>"u"?location.href:document.currentScript&&document.currentScript.tagName.toUpperCase()==="SCRIPT"&&document.currentScript.src||document.baseURI).href),{type:"module",name:r==null?void 0:r.name})}new E.Box3,new E.Vector3,new E.Vector3,new E.Vector3,new E.Vector3;const ka=new E.Vector3,cc=new E.Vector3,Hi=new E.Matrix3;Hi.set(1,0,0,0,0,1,0,-1,0);const uc=new E.Matrix4().set(1,0,0,0,0,0,-1,0,0,1,0,0,0,0,0,1);function vr(r,e){return(E.DataUtils.toHalfFloat(r)|E.DataUtils.toHalfFloat(e)<<16)>>>0}class dc extends E.Mesh{constructor(e,t,a){const i=Math.min(Math.ceil(1)*1024,Math.pow(1024,2));let o=1*Math.pow(1024,2);o=Math.floor(o/i)*i;const s=new E.WebGL3DRenderTarget(1024,1024,1,{magFilter:E.NearestFilter,minFilter:E.NearestFilter,type:E.UnsignedIntType,format:E.RGBAIntegerFormat,anisotropy:0,depthBuffer:!1,resolveDepthBuffer:!1});s.texture.type=E.UnsignedIntType,s.texture.format=E.RGBAIntegerFormat,s.texture.internalFormat="RGBA32UI",e.initRenderTarget(s);const A=new E.WebGL3DRenderTarget(1024,1024,1,{magFilter:E.NearestFilter,minFilter:E.NearestFilter,anisotropy:0,type:E.UnsignedIntType,format:E.RGBAIntegerFormat,depthBuffer:!1,resolveDepthBuffer:!1});A.texture.type=E.UnsignedIntType,A.texture.format=E.RGBAIntegerFormat,A.texture.internalFormat="RGBA32UI",e.initRenderTarget(A);const u=new E.ShaderMaterial({glslVersion:E.GLSL3,uniforms:{textureSize:{value:1024},numSlices:{value:1},covarianceTexture:{value:A.texture},positionColorTexture:{value:s.texture},zUpToYUpMatrix3x3:{value:Hi},sizeMultiplier:{value:1},cropRadius:{value:Number.MAX_VALUE},cameraNear:{value:.01},cameraFar:{value:10},computeLinearDepth:{value:!0},viewportPixelSize:{value:new E.Vector2},k:{value:2},beta_k:{value:2},minSplatPixelSize:{value:0},minOpacity:{value:.01},culling:{value:!0}},vertexShader:Oi(),fragmentShader:a||zi(),transparent:!0,side:E.FrontSide,depthTest:!1,depthWrite:!1}),c=new E.InstancedBufferGeometry,d=new Float32Array([-.5,.5,0,.5,.5,0,-.5,-.5,0,.5,-.5,0]);c.setIndex([0,2,1,2,3,1]),c.setAttribute("position",new E.BufferAttribute(d,3));const l=new Uint32Array(o),h=new E.InstancedBufferAttribute(l,1,!1);h.needsUpdate=!0,h.setUsage(E.DynamicDrawUsage),c.setAttribute("order",h),c.instanceCount=0,super(c,u),this.matrixAutoUpdate=!1,this.numBatches=0,this.numVisibleBatches=0,this.orderAttribute=h,this.textureSize=1024,this.numTextures=1,this.batchSize=i,this.maxSplats=o,this.numSplatsRendered=0,this.positionColorRenderTarget=s,this.covarianceRenderTarget=A,this.renderer=e,this.sortID=0,this.freeAddresses=new ea;for(let g=0;g<this.maxSplats;g+=i)this.freeAddresses.add(g);this.worker=new Ac({}),this.sortListeners=[],this.worker.onmessage=g=>{console.log(g.data.sortPerf);const f=new Uint32Array(g.data.order);if(this.numSplatsRendered=f.length,f.length>this.orderAttribute.count){const m=new E.InstancedBufferGeometry,p=new Float32Array([-.5,.5,0,.5,.5,0,-.5,-.5,0,.5,-.5,0]),C=[0,2,1,2,3,1];m.setIndex(C),m.setAttribute("position",new E.BufferAttribute(p,3));const I=new Uint32Array(this.maxSplats),x=new E.InstancedBufferAttribute(I,1,!1);x.needsUpdate=!0,x.setUsage(E.DynamicDrawUsage),m.setAttribute("order",x),m.instanceCount=0,this.geometry.dispose(),this.geometry=m,this.orderAttribute=x}this.orderAttribute.clearUpdateRanges(),this.orderAttribute.set(f),this.orderAttribute.addUpdateRange(0,f.length),this.orderAttribute.needsUpdate=!0,this.geometry.instanceCount=g.data.count,this.geometry.needsUpdate=!0;for(let m=this.sortListeners.length-1;m>=0;m--)this.sortListeners[m](g.data.id)&&this.sortListeners.splice(m,1)},this.cameraPosition=new E.Vector3(0,0,0),this.viewProjModel,this.rotateOnAxis(new E.Vector3(1,0,0),.5*Math.PI),this.frustumCulled=!1,this.copyMaterial2D=new E.ShaderMaterial({glslVersion:E.GLSL3,uniforms:{sourceTexture:{}},vertexShader:Pi(),fragmentShader:`
|
|
30
30
|
precision highp float;
|
|
31
31
|
layout(location = 0) out uvec4 fragColor;
|
|
32
32
|
uniform highp usampler2D sourceTexture;
|
|
@@ -45,7 +45,7 @@ in vec2 vUv;
|
|
|
45
45
|
|
|
46
46
|
void main() {
|
|
47
47
|
fragColor = texture( sourceTexture, vec3(vUv, w) );
|
|
48
|
-
}`,transparent:!1,side:E.FrontSide,depthTest:!1,depthWrite:!1}),this.copyCamera=new E.OrthographicCamera(-.5,.5,.5,-.5,.1,10),this.copyCamera.position.z=1,this.copyScene=new E.Scene;const b=new E.PlaneGeometry(1,1);this.copyQuad=new E.Mesh(b,this.copyMaterial2D),this.copyScene.add(this.copyQuad),this.copyScene.matrixAutoUpdate=!1,this.copyQuad.matrixAutoUpdate=!1}setQuality(e){const t=2+2*(e=Math.max(0,Math.min(1,1-e)));this.material.uniforms.k.value=t,this.material.uniforms.beta_k.value=Math.pow(4*oc(2/t)/t,t/2),this.material.uniforms.minSplatPixelSize.value=5*e,this.material.uniforms.minOpacity.value=.01
|
|
48
|
+
}`,transparent:!1,side:E.FrontSide,depthTest:!1,depthWrite:!1}),this.copyCamera=new E.OrthographicCamera(-.5,.5,.5,-.5,.1,10),this.copyCamera.position.z=1,this.copyScene=new E.Scene;const b=new E.PlaneGeometry(1,1);this.copyQuad=new E.Mesh(b,this.copyMaterial2D),this.copyScene.add(this.copyQuad),this.copyScene.matrixAutoUpdate=!1,this.copyQuad.matrixAutoUpdate=!1}setQuality(e){const t=2+2*(e=Math.max(0,Math.min(1,1-e)));this.material.uniforms.k.value=t,this.material.uniforms.beta_k.value=Math.pow(4*oc(2/t)/t,t/2),this.material.uniforms.minSplatPixelSize.value=5*e,this.material.uniforms.minOpacity.value=.01}setSplatsCPUCulling(e){this.splatsCPUCuling=e,this.material.uniforms.culling.value=!!e}updateShaderParams(e){e.projectionMatrix.elements,this.renderer.getSize(this.material.uniforms.viewportPixelSize.value),this.material.uniforms.viewportPixelSize.value.multiplyScalar(this.renderer.getPixelRatio())}dispose(){this.material.dispose(),this.copyMaterial2D.dispose(),this.copyMaterial3D.dispose(),this.covarianceRenderTarget.dispose(),this.positionColorRenderTarget.dispose(),this.worker.terminate(),this.worker=null,this.orderAttribute.array=void 0,this.geometry.dispose()}copyTex2D(e,t,a,n){this.copyMaterial2D.uniforms.sourceTexture.value=e;const i=this.renderer.autoClear,o=this.renderer.getRenderTarget();this.renderer.autoClear=!1;const s=a[2]-a[0],A=a[3]-a[1];t.viewport.set(a[0],a[1],s,A),this.renderer.setRenderTarget(t,n),this.renderer.render(this.copyScene,this.copyCamera),this.renderer.setRenderTarget(o),this.renderer.autoClear=i}copyTex3D(e,t,a){this.copyMaterial3D.uniforms.sourceTexture.value=e;const n=this.renderer.autoClear,i=this.renderer.getRenderTarget();this.renderer.autoClear=!1,this.copyQuad.material=this.copyMaterial3D;for(let o=0;o<a;o++)this.renderer.setRenderTarget(t,o),this.copyMaterial3D.uniforms.w.value=(o+.5)/a,this.renderer.render(this.copyScene,this.copyCamera);this.copyQuad.material=this.copyMaterial2D,this.renderer.setRenderTarget(i),this.renderer.autoClear=n}setSplatsSizeMultiplier(e){this.material.uniforms.sizeMultiplier.value=e}setSplatsCropRadius(e){this.material.uniforms.cropRadius.value=e}sort(e,t){this.worker&&(e?this.cameraPosition&&e.equals(this.cameraPosition)||(this.cameraPosition.copy(e),t?(this.viewProjModel||(this.viewProjModel=new E.Matrix4),this.viewProjModel.copy(t),this.viewProjModel.multiply(uc)):this.viewProjModel=void 0,this.worker.postMessage({method:"sort",xyz:[this.cameraPosition.x,this.cameraPosition.z,-this.cameraPosition.y],vpm:this.viewProjModel&&this.splatsCPUCuling?this.viewProjModel.toArray():void 0,id:this.sortID++})):this.worker.postMessage({method:"sort",xyz:[this.cameraPosition.x,this.cameraPosition.z,-this.cameraPosition.y],vpm:this.viewProjModel&&this.splatsCPUCuling?this.viewProjModel.toArray():void 0,id:this.sortID++}))}raycast(e,t){}addSplatsTile(e,t,a,n){if(!this.worker)return;const i=this,o=e.data?e.data.array:e.array,s=e.data&&e.data.isInterleavedBuffer?e.data.stride:3,A=e.data&&e.data.isInterleavedBuffer?e.offset:0,u=Math.ceil(o.length/(this.batchSize*s)),c=[],d=[];let l=()=>{};const h=new Float32Array(o.length/s*3),b=new Uint32Array(h.buffer,h.byteOffset,h.length);for(let f=0;f<o.length/3;f++)h[3*f]=o[f*s+A],h[3*f+1]=o[f*s+A+1],h[3*f+2]=o[f*s+A+2];l=(f,m,p)=>{const C=p*p;for(let I=0;I<h.length;I+=3){ka.set(h[I],-h[I+2],h[I+1]);const x=cc.copy(ka).sub(f.origin).dot(f.direction);x>0&&f.distanceSqToPoint(ka)<C&&m.push({distance:x,point:ka.clone(),type:"splat"})}},u>this.freeAddresses.size&&this.growTextures();for(let f=0;f<u;f++){const m=this.freeAddresses.poll();isNaN(m)&&console.log("insuficient texture size to store splats info"),c.push(m),d.push(3*m);const p=f*this.batchSize;this.addSplatsBatch(p,m,b,t,a,n)}i.worker.postMessage({method:"addBatches",insertionIndexes:d,positions:o.buffer,offset:A,stride:s,batchSize:i.batchSize},[o.buffer]);let g=!1;return{hide:()=>{g==1&&i.worker&&(i.numVisibleBatches--,g=!1,i.worker.postMessage({method:"hideBatches",insertionIndexes:d,xyz:[i.cameraPosition.x,i.cameraPosition.z,-i.cameraPosition.y],vpm:this.viewProjModel&&this.splatsCPUCuling?this.viewProjModel.toArray():void 0,id:i.sortID++}))},show:f=>{if(g==0&&i.worker){i.numVisibleBatches--,g=!0;const m=i.sortID,p=C=>C>=m&&(f(),!0);i.sortListeners.push(p),i.worker.postMessage({method:"showBatches",insertionIndexes:d,xyz:[i.cameraPosition.x,i.cameraPosition.z,-i.cameraPosition.y],vpm:this.viewProjModel&&this.splatsCPUCuling?this.viewProjModel.toArray():void 0,id:i.sortID++})}},remove:()=>{i.worker&&(l=void 0,i.worker.postMessage({method:"removeBatches",insertionIndexes:d,xyz:[i.cameraPosition.x,i.cameraPosition.z,-i.cameraPosition.y],vpm:this.viewProjModel&&this.splatsCPUCuling?this.viewProjModel.toArray():void 0,id:i.sortID++}),c.forEach(f=>i.freeAddresses.add(f)))},sort:this.sort,raycast:l,isSplatsBatch:!0}}addSplatsBatch(e,t,a,n,i,o){const s=new Uint32Array(4*this.batchSize),A=new Uint32Array(4*this.batchSize);for(let b=t;b<t+this.batchSize;b++){const g=b-t,f=4*g,m=e+g,p=3*(e+g);if(m>=a.count)break;s[f]=a[p],s[f+1]=a[p+1],s[f+2]=a[p+2];const C=0|Math.floor(255*n.getX(m)+.5),I=0|Math.floor(255*n.getY(m)+.5),x=0|Math.floor(255*n.getZ(m)+.5),y=0|Math.floor(255*n.getW(m)+.5);s[f+3]=C|I<<8|x<<16|y<<24,A[f]=vr(i.getX(m),i.getY(m)),A[f+1]=vr(i.getZ(m),o.getX(m)),A[f+2]=vr(o.getY(m),o.getZ(m))}const u=Math.floor(t/Math.pow(this.textureSize,2)),c=Math.ceil(this.batchSize/this.textureSize),d=[0,t/this.textureSize-u*this.textureSize,this.textureSize];d.push(d[1]+c);const l=new E.DataTexture(s,this.textureSize,c,E.RGBAIntegerFormat,E.UnsignedIntType);l.internalFormat="RGBA32UI",l.generateMipmaps=!1,l.magFilter=E.NearestFilter,l.minFilter=E.NearestFilter,l.anisotropy=0,l.needsUpdate=!0,this.renderer.initTexture(l),this.copyTex2D(l,this.positionColorRenderTarget,d,u),l.dispose();const h=new E.DataTexture(A,this.textureSize,c,E.RGBAIntegerFormat,E.UnsignedIntType);h.internalFormat="RGBA32UI",h.generateMipmaps=!1,h.magFilter=E.NearestFilter,h.minFilter=E.NearestFilter,h.anisotropy=0,h.needsUpdate=!0,this.renderer.initTexture(h),this.copyTex2D(h,this.covarianceRenderTarget,d,u),h.dispose()}growTextures(){for(let n=this.maxSplats;n<this.maxSplats+this.textureSize*this.textureSize;n+=this.batchSize)this.freeAddresses.add(n);this.maxSplats+=this.textureSize*this.textureSize;const e=this.numTextures+1,t=new E.WebGL3DRenderTarget(this.textureSize,this.textureSize,e,{magFilter:E.NearestFilter,minFilter:E.NearestFilter,type:E.UnsignedIntType,format:E.RGBAIntegerFormat,anisotropy:0,depthBuffer:!1,resolveDepthBuffer:!1});t.texture.type=E.UnsignedIntType,t.texture.internalFormat="RGBA32UI",t.texture.format=E.RGBAIntegerFormat,this.renderer.initRenderTarget(t),this.copyTex3D(this.positionColorRenderTarget.texture,t,this.numTextures),this.positionColorRenderTarget.dispose(),this.positionColorRenderTarget=t,this.material.uniforms.positionColorTexture.value=this.positionColorRenderTarget.texture;const a=new E.WebGL3DRenderTarget(this.textureSize,this.textureSize,e,{magFilter:E.NearestFilter,minFilter:E.NearestFilter,anisotropy:0,type:E.UnsignedIntType,format:E.RGBAIntegerFormat,depthBuffer:!1,resolveDepthBuffer:!1});a.texture.type=E.UnsignedIntType,a.texture.internalFormat="RGBA32UI",a.texture.format=E.RGBAIntegerFormat,this.renderer.initRenderTarget(a),this.copyTex3D(this.covarianceRenderTarget.texture,a,this.numTextures),this.covarianceRenderTarget.dispose(),this.covarianceRenderTarget=a,this.material.uniforms.covarianceTexture.value=this.covarianceRenderTarget.texture,this.numTextures=e,this.material.uniforms.numSlices.value=this.numTextures}}function Oi(){return`
|
|
49
49
|
precision highp float;
|
|
50
50
|
precision highp int;
|
|
51
51
|
|
|
@@ -75,6 +75,7 @@ uniform float k;
|
|
|
75
75
|
uniform float beta_k; // pow((4.0 * gamma(2.0/k)) /k, k/2)
|
|
76
76
|
uniform float minSplatPixelSize;
|
|
77
77
|
uniform float minOpacity;
|
|
78
|
+
uniform bool culling;
|
|
78
79
|
|
|
79
80
|
|
|
80
81
|
void getVertexData(out vec3 position, out mat3 covariance) {
|
|
@@ -207,13 +208,17 @@ void main() {
|
|
|
207
208
|
stds = pow(-8.0 * lnRatio/beta_k, 1.0/k);//sqrt(2.0 * log(maxV / thresh));
|
|
208
209
|
|
|
209
210
|
|
|
210
|
-
splatPositionWorld = (modelMatrix * vec4(splatPositionModel, 1.0)).xyz
|
|
211
|
+
splatPositionWorld = (modelMatrix * vec4(splatPositionModel, 1.0)).xyz;
|
|
211
212
|
vec4 splatPositionProjected = projectionMatrix * viewMatrix * vec4(splatPositionWorld, 1.0);
|
|
212
|
-
|
|
213
|
-
if
|
|
214
|
-
|
|
215
|
-
|
|
213
|
+
|
|
214
|
+
if(culling){
|
|
215
|
+
float clip = 1.2 * splatPositionProjected.w;
|
|
216
|
+
if (splatPositionProjected.z < -splatPositionProjected.w || splatPositionProjected.x < -clip || splatPositionProjected.x > clip || splatPositionProjected.y < -clip || splatPositionProjected.y > clip) {
|
|
217
|
+
gl_Position = vec4(0.0, 0.0, 2.0, 1.0);
|
|
218
|
+
return;
|
|
219
|
+
}
|
|
216
220
|
}
|
|
221
|
+
|
|
217
222
|
|
|
218
223
|
vec3 offsetWorld = vec3(position)*sizeMultiplier*0.5*stds;
|
|
219
224
|
|
|
@@ -226,7 +231,7 @@ void main() {
|
|
|
226
231
|
vec3 splatPosNDC = splatPositionProjected.xyz / splatPositionProjected.w;
|
|
227
232
|
vec2 pixelOffset = abs((glPosNDC - splatPosNDC).xy)*viewportPixelSize;
|
|
228
233
|
|
|
229
|
-
if(pixelOffset.x < minSplatPixelSize && pixelOffset.y < minSplatPixelSize){
|
|
234
|
+
if((pixelOffset.x < minSplatPixelSize && pixelOffset.y < minSplatPixelSize)/* || (pixelOffset.x < 2.0 || pixelOffset.y < 2.0) */){
|
|
230
235
|
return;
|
|
231
236
|
}
|
|
232
237
|
|
|
@@ -285,5 +290,5 @@ out vec2 vUv;
|
|
|
285
290
|
void main() {
|
|
286
291
|
vUv = uv;
|
|
287
292
|
gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
|
|
288
|
-
}`}var oe;const bt=new G.Sphere(new G.Vector3(0,0,0),1),jt=new at([0,0,0,1,0,0,0,1,0,0,0,1]);new G.Box3;const Dt=new G.Vector3(0,0,0),Jt=new G.Vector3(0,0,0),dc=new G.Vector3(0,1,0),ja=new G.Ray,Ma=new G.Matrix4;new G.Matrix4,new G.Frustum;const Qr=new G.Vector3,Sa=[],qi=new G.Quaternion,ot={};function Ji(){var r=[];for(let e in ot)ot.hasOwnProperty(e)&&ot[e]>0&&r.push(e);return r}class vr extends G.Object3D{constructor(e){super();const t=this;if(t.splatsMesh=e.splatsMesh,t.splatsQuality=e.splatsQuality!=null?e.splatsQuality:1,this.contentURL=[],e.domWidth&&e.domHeight?this.rendererSize=new G.Vector2(e.domWidth,e.domHeight):this.rendererSize=new G.Vector2(1e3,1e3),this.loadingStrategy=e.loadingStrategy?e.loadingStrategy.toUpperCase():"INCREMENTAL",this.distanceBias=Math.max(1e-4,e.distanceBias?e.distanceBias:1),this.proxy=e.proxy,this.drawBoundingVolume=!!e.drawBoundingVolume&&e.drawBoundingVolume,this.displayErrors=e.displayErrors,this.displayCopyright=e.displayCopyright,e.queryParams&&(this.queryParams={...e.queryParams}),this.uuid=qr(),e.tileLoader)this.tileLoader=e.tileLoader;else{const i={};i.meshCallback=e.meshCallback?e.meshCallback:(s,A)=>{s.material.wireframe=!1,s.material.side=G.DoubleSide},i.pointsCallback=e.pointsCallback?e.pointsCallback:(s,A)=>{s.material.size=Math.pow(A,.33),s.material.sizeAttenuation=!0},i.proxy=this.proxy,i.renderer=e.renderer,i.dracoLoader=e.dracoLoader,i.ktx2Loader=e.ktx2Loader,t.tileLoader=new Bn(i);const o=this.update;this.update=s=>{o.call(t,s),t.tileLoader.update()}}if(this.displayCopyright=!!e.displayCopyright,this.geometricErrorMultiplier=e.geometricErrorMultiplier?e.geometricErrorMultiplier:1,this.splatsCropRadius=Number.MAX_VALUE,this.splatsSizeMultiplier=1,this.renderer=e.renderer,this.meshCallback=e.meshCallback,this.loadOutsideView=e.loadOutsideView,this.cameraOnLoad=e.cameraOnLoad,this.parentTile=e.parentTile,this.occlusionCullingService=e.occlusionCullingService,this.static=e.static,this.occlusionCullingService&&(this.color=new G.Color,this.color.setHex(16777215*Math.random()),this.colorID=G.MathUtils.clamp(255*t.color.r,0,255)<<16^G.MathUtils.clamp(255*t.color.g,0,255)<<8^G.MathUtils.clamp(255*t.color.b,0,255)),this.static&&(this.matrixAutoUpdate=!1,this.matrixWorldAutoUpdate=!1),this.childrenTiles=[],this.meshContent=[],this.tileContent,this.refine,this.rootPath,this.geometricError,this.boundingVolume,this.json,this.materialVisibility=!1,this.level=e.level?e.level:0,this.hasMeshContent=0,this.hasUnloadedJSONContent=0,this.centerModel=e.centerModel,this.abortController=new AbortController,this.onLoadCallback=e.onLoadCallback,e.json)t._setup(e);else if(e.url){var a=e.url;if(t.queryParams){var n="";for(let i in t.queryParams)t.queryParams.hasOwnProperty(i)&&(n+="&"+i+"="+t.queryParams[i]);a.includes("?")?a+=n:a+="?"+n.substring(1)}(t.proxy?()=>fetch(t.proxy,{method:"POST",body:a,signal:t.abortController.signal}):()=>fetch(a,{signal:t.abortController.signal}))().then(i=>{if(!i.ok)throw new Error(`couldn't load "${e.url}". Request failed with status ${i.status} : ${i.statusText}`);i.json().then(o=>$a(o,a)).then(o=>{t._setup({rootPath:ft.dirname(e.url),json:o})})}).catch(i=>{t.displayErrors&&Ki(i)})}}setSplatsSizeMultiplier(e){this.splatsSizeMultiplier=e,this.splatsMesh&&this.splatsMesh.setSplatsSizeMultiplier(this.splatsSizeMultiplier)}setSplatsCropRadius(e){this.splatsCropRadius=e,this.splatsMesh&&this.splatsMesh.setSplatsCropRadius(this.splatsCropRadius)}updateMatrices(){this.updateMatrix(),this.splatsMesh&&this.splatsMesh.updateMatrix(),this.static&&(this.traverse(e=>{e.isObject3D&&(e.matrixWorldAutoUpdate=!0)}),this.splatsMesh&&(this.splatsMesh.matrixWorldAutoUpdate=!0)),this.updateMatrixWorld(!0),this.static&&(this.traverse(e=>{e.isObject3D&&(e.matrixWorldAutoUpdate=!1)}),this.splatsMesh&&(this.splatsMesh.matrixWorldAutoUpdate=!1))}setCanvasSize(e,t){this.rendererSize.set(e,t)}async _setup(e){const t=this;if(e.json.extensionsRequired&&(e.json.extensionsRequired.includes("JDULTRA_gaussian_splats")||e.json.extensionsRequired.includes("JDULTRA_gaussian_splats_V2"))&&(t.splatsMesh=new uc(t.tileLoader.renderer),t.splatsMesh.setQuality(t.splatsQuality),t.splatsMesh.setSplatsCropRadius(t.splatsCropRadius),t.splatsMesh.setSplatsSizeMultiplier(t.splatsSizeMultiplier),t.static&&(t.splatsMesh.matrixWorldAutoUpdate=!1),t.add(t.splatsMesh),t.updateMatrices()),e.json.root?(t.json=e.json.root,t.json.refine||(t.json.refine=e.json.refine),t.json.geometricError||(t.json.geometricError=e.json.geometricError),t.json.transform||(t.json.transform=e.json.transform),t.json.boundingVolume||(t.json.boundingVolume=e.json.boundingVolume)):t.json=e.json,t.json.children||(t.json.getChildren?t.json.children=await t.json.getChildren():t.json.children=[]),t.rootPath=e.json.rootPath?e.json.rootPath:e.rootPath,t.json.refine?t.refine=t.json.refine:t.refine=e.parentRefine,t.json.geometricError?t.geometricError=t.json.geometricError:t.geometricError=e.parentGeometricError,t.json.transform){let n=new G.Matrix4;n.elements=t.json.transform,t.applyMatrix4(n)}if(t.json.boundingVolume)if(t.json.boundingVolume.box)t.boundingVolume=new at(t.json.boundingVolume.box);else if(t.json.boundingVolume.region){const n=t.json.boundingVolume.region;t._transformWGS84ToCartesian(n[0],n[1],n[4],Dt),t._transformWGS84ToCartesian(n[2],n[3],n[5],Jt),Dt.lerp(Jt,.5),t.boundingVolume=new G.Sphere(new G.Vector3(Dt.x,Dt.y,Dt.z),Dt.distanceTo(Jt))}else if(t.json.boundingVolume.sphere){const n=t.json.boundingVolume.sphere;t.boundingVolume=new G.Sphere(new G.Vector3(n[0],n[1],n[2]),n[3])}else t.boundingVolume=e.parentBoundingVolume;else t.boundingVolume=e.parentBoundingVolume;function a(n){n.uri&&n.uri.includes("json")||n.url&&n.url.includes("json")?t.hasUnloadedJSONContent++:t.hasMeshContent++}if(t.json.content?(a(t.json.content),t.hasMeshContent==0&&(t.level=Math.max(0,t.parentTile?t.parentTile.level+.01:0)),t._load()):t.json.contents&&(t.json.contents.forEach(n=>a(n)),t.hasMeshContent==0&&(t.level=Math.max(0,t.parentTile?t.parentTile.level+.01:0))),t.centerModel&&(Jt.copy(t.boundingVolume.center),this.json.boundingVolume.region&&(this._transformWGS84ToCartesian(.5*(this.json.boundingVolume.region[0]+this.json.boundingVolume.region[2]),.5*(this.json.boundingVolume.region[1]+this.json.boundingVolume.region[3]),.5*(this.json.boundingVolume.region[4]+this.json.boundingVolume.region[5]),Dt),qi.setFromUnitVectors(Dt.normalize(),dc.normalize()),t.applyQuaternion(qi)),Jt.applyMatrix4(t.matrix),t.position.sub(Jt),t.updateMatrices()),t.onLoadCallback&&t.onLoadCallback(t),t.isSetup=!0,t.level>0&&t.drawBoundingVolume)if(t.bbox&&console.log("double setup"),this.boundingVolume.aabb){let n=this.boundingVolume.aabb.clone();n.applyMatrix4(this.matrixWorld),t.bbox=new G.Box3Helper(n,new G.Color(Math.random(),Math.random(),Math.random())),t.add(t.bbox),t.bbox.material.visible=!1}else t.boundingVolume instanceof at&&(t.bbox=t.boundingVolume.helper(),t.add(t.bbox),t.bbox.material.visible=!1)}_assembleURL(e,t){e.endsWith("/")||(e+="/");const a=new URL(e);let n=a.pathname.split("/").filter(o=>o!==""),i=t.split("/").filter(o=>o!=="");for(let o=1;o<=n.length&&!(o>=i.length);o++)if(n.slice(n.length-o,n.length).join("/")===i.slice(0,o).join("/")){for(let s=0;s<o;s++)n.pop();break}for(;i.length>0&&i[0]==="..";)n.pop(),i.shift();return`${a.protocol}//${a.host}/${[...n,...i].join("/")}`}_extractQueryParams(e,t){const a=new URL(e);for(let[n,i]of a.searchParams)t[n]=i;return a.search="",a.toString()}async _load(e=!0,t=!0){var a=this;if(!a.deleted){if(a.json.content)await n(a.json.content,null,e,t);else if(a.json.contents){let i=a.json.contents.map((o,s)=>n(o,s,e,t));Promise.all(i)}}async function n(i,o,s,A){let u;i.uri?u=i.uri:i.url&&(u=i.url);const c=/^(?:http|https|ftp|tcp|udp):\/\/\S+/;if(c.test(a.rootPath)?c.test(u)||(u=a._assembleURL(a.rootPath,u)):ft.isAbsolute(a.rootPath)&&(u=a.rootPath+ft.sep+u),u=a._extractQueryParams(u,a.queryParams),a.queryParams){var d="";for(let l in a.queryParams)a.queryParams.hasOwnProperty(l)&&(d+="&"+l+"="+a.queryParams[l]);u.includes("?")?u+=d:u+="?"+d.substring(1)}if(u)if(a.contentURL.push(u),A&&(u.includes(".b3dm")||u.includes(".glb")||u.includes(".gltf")))try{a.tileLoader.get(a.abortController,a.uuid,u,l=>{a.deleted||(l.asset&&l.asset.copyright&&(l.asset.copyright.split(";").forEach(h=>{ot[h]?ot[h]++:ot[h]=1}),a.displayCopyright&&kr()),a.meshContent.push(l),a.splatsMesh||(l.traverse(h=>{if((h.isMesh||h.isPoints)&&h.layers.disable(0),h.isMesh&&a.occlusionCullingService){const b=h.geometry.attributes.position,g=[];for(let f=0;f<b.count;f++)g.push(a.color.r,a.color.g,a.color.b);h.geometry.setAttribute("color",new G.Float32BufferAttribute(g,3))}}),a.add(l),a.updateMatrices()))},a.cameraOnLoad?()=>a.loadingStrategy=="IMMEDIATE"?a._calculateDistanceToCamera(a.cameraOnLoad):a.loadingStrategy=="INCREMENTAL"?a.parentTile?a.parentTile._calculateDistanceToCamera(a.cameraOnLoad)/Math.max(1,a.parentTile.level):a._calculateDistanceToCamera(a.cameraOnLoad)/Math.max(1,a.level):a.loadingStrategy=="PERLEVEL"?a.parentTile?a.level+a.parentTile._calculateDistanceToCamera(a.cameraOnLoad):a.level+a._calculateDistanceToCamera(a.cameraOnLoad):0:()=>0,()=>a._getSiblings(),a.level,a.loadingStrategy,!a.json.boundingVolume.region,!!a.json.boundingVolume.region,a.geometricError,a.splatsMesh)}catch(l){a.displayErrors&&Ki(l)}else s&&u.includes(".json")&&(a.jsonRequested=u,a.tileLoader.get(a.abortController,a.uuid,u,async l=>{a.jsonReceived=!0,a.deleted||(l.rootPath=ft.dirname(u),a.json.children.push(l),o==null?delete a.json.content:a.json.contents.splice(o,1),a.hasUnloadedJSONContent--)}))}}dispose(){const e=this;e.meshContent.forEach(t=>{t&&t.asset&&t.asset.copyright&&(t.asset.copyright.split(";").forEach(a=>{ot[a]&&ot[a]--}),e.displayCopyright&&kr())}),e.childrenTiles.forEach(t=>t.dispose()),e.deleted=!0,e.splatsMesh&&(e.meshContent.forEach(t=>t.hide()),e.parentTile||(e.splatsMesh.dispose(),e.splatsMesh=void 0)),e.contentURL&&(e.contentURL.forEach(t=>{e.tileLoader.invalidate(t,e.uuid)}),e.contentURL=[]),e.abortController&&!e.jsonRequested&&e.abortController.abort("tile not needed"),this.parent=null,e.meshContent=[],e.bbox&&e.bbox.dispose(),this.dispatchEvent({type:"removed"})}_disposeMeshContent(){const e=this;if(!e.deleted){e.deleted=!0,e.abortController&&(e.abortController.abort("tile not needed"),e.abortController=new AbortController);for(let t=e.meshContent.length-1;t>=0;t--){const a=e.meshContent[t];a&&a.asset&&a.asset.copyright&&(a.asset.copyright.split(";").forEach(n=>{ot[n]&&ot[n]--}),e.displayCopyright&&kr()),e.remove(a)}e.splatsMesh&&e.meshContent.forEach(t=>t.hide()),e.meshContent=[],e.contentURL.forEach(t=>{e.tileLoader.invalidate(t,e.uuid)}),e.contentURL=[]}}_disposeChildren(){var e=this;e.childrenTiles.forEach(t=>{t.dispose(),e.remove(t)}),e.childrenTiles=[]}raycast(e,t){if(this.splatsMesh){ja.copy(e.ray),Ma.copy(this.matrixWorld).invert(),ja.applyMatrix4(Ma);let a=!1;if(this.boundingVolume instanceof at)a=this.boundingVolume.intersectsRay(ja);else{if(!(this.boundingVolume instanceof G.Sphere))return!1;a=ray.intersectsSphere(this.boundingVolume)}return a&&this.materialVisibility&&this.splatsReady&&(Sa.length=0,this.meshContent.forEach(n=>{n.isSplatsBatch&&(n.raycast(ja,Sa,e.params.Points.threshold),Sa.forEach(i=>{i.point.applyMatrix4(this.matrixWorld)}),t.push(...Sa))})),a}return super.raycast(e,t)}update(e){this.splatsMesh&&this.splatsMesh.updateShaderParams(e,this.renderer);const t=new G.Frustum;t.setFromProjectionMatrix(new G.Matrix4().multiplyMatrices(e.projectionMatrix,e.matrixWorldInverse));let a=[0],n=[0],i=[0],o=[0];return this.refine=="REPLACE"?this.loadingStrategy==="IMMEDIATE"?(this._updateImmediate(e,t),this._statsImmediate(i,a,o,n)):(this._update(e,t),this._stats(i,a,o,n)):(this._update(e,t),this._stats(i,a,o,n)),a>0&&(o[0]/=a[0]),this.splatsMesh&&(Qr.copy(e.position),Ma.copy(this.matrixWorld).invert(),Qr.applyMatrix4(Ma),this.splatsMesh.sort(Qr)),{numTilesLoaded:a[0],numTilesRendered:n[0],maxLOD:i[0],percentageLoaded:o[0]}}_updateImmediate(e,t){this._computeMetricRecursive(e,t),this._updateNodeVisibilityImmediate(),this._expandTreeImmediate(e),this.shouldBeVisible=this.metric>0||!!this.loadOutsideView,this._shouldBeVisibleUpdateImmediate(),this._trimTreeImmediate(),this._loadMeshImmediate()}_statsImmediate(e,t,a,n){e[0]=Math.max(e[0],this.level),(this.shouldBeVisible||this.materialVisibility)&&(t[0]++,this.materialVisibility&&a[0]++),this.materialVisibility&&n[0]++,this.childrenTiles.forEach(i=>{i._statsImmediate(e,t,a,n)})}_stats(e,t,a,n){e[0]=Math.max(e[0],this.level),this.hasMeshContent&&(t[0]++,this.meshContent.length==this.hasMeshContent&&a[0]++,this.materialVisibility&&n[0]++),this.childrenTiles.forEach(i=>{i._stats(e,t,a,n)})}_trimTreeImmediate(){if(this.metric!=null)if(this.hasMeshContent&&this.shouldBeVisible&&this.materialVisibility){if(self.splatsMesh&&!self.splatsReady)return;this._disposeChildren()}else this.childrenTiles.forEach(e=>{e._trimTreeImmediate()})}_updateNodeVisibilityImmediate(e=!1){const t=this;if(t.hasMeshContent)if(t.shouldBeVisible)t.meshContent.length==t.hasMeshContent?t.materialVisibility?t.childrenTiles.forEach(a=>{a._updateNodeVisibilityImmediate(!0)}):(t._changeContentVisibility(!0),t.childrenTiles.forEach(a=>{a._updateNodeVisibilityImmediate(e)})):t.childrenTiles.forEach(a=>{a._updateNodeVisibilityImmediate(e)});else{if(!t.loadOutsideView&&t.metric<0)return t._changeContentVisibility(!1),t.meshContent.length>0&&t._disposeMeshContent(),void t.childrenTiles.forEach(a=>{a._updateNodeVisibilityImmediate(!0)});if(!t.materialVisibility||t.splatsMesh&&!t.splatsReady)t.childrenTiles.forEach(a=>{a._updateNodeVisibilityImmediate(e)});else if(e)t._changeContentVisibility(!1),t.meshContent.length>0&&t._disposeMeshContent(),t.childrenTiles.forEach(a=>{a._updateNodeVisibilityImmediate(e)});else{let a=!0;t.childrenTiles.every(n=>!!n._isReadyImmediate()||(a=!1,!1)),a&&t.childrenTiles.length>0?(t._changeContentVisibility(!1),t.meshContent.length>0&&t._disposeMeshContent(),t.childrenTiles.forEach(n=>{n._updateNodeVisibilityImmediate(e)})):t.childrenTiles.forEach(n=>{n._updateNodeVisibilityImmediate(!t.splatsMesh||!!t.splatsReady)})}}else t.childrenTiles.forEach(a=>{a._updateNodeVisibilityImmediate(e)})}_shouldBeVisibleUpdateImmediate(){const e=this;e.hasMeshContent?e.metric==null?e.shouldBeVisible=!1:e.metric<0?(e.shouldBeVisible=!!e.loadOutsideView,e.childrenTiles.forEach(t=>{t._setShouldNotBeVisibleRecursive()})):e.metric<e.geometricErrorMultiplier*e.geometricError?e.hasUnloadedJSONContent||(e.json&&e.json.children&&e.json.children.length>0?(e.shouldBeVisible=!1,e.childrenTiles.forEach(t=>{t.shouldBeVisible=!0,t._shouldBeVisibleUpdateImmediate()})):e.shouldBeVisible=!0):e.childrenTiles.forEach(t=>{t._setShouldNotBeVisibleRecursive()}):(e.childrenTiles.forEach(t=>{t.shouldBeVisible=!0,t._shouldBeVisibleUpdateImmediate()}),e.shouldBeVisible=!1)}_setShouldNotBeVisibleRecursive(){this.shouldBeVisible=!1,this.childrenTiles.forEach(e=>{e._setShouldNotBeVisibleRecursive()})}_loadMeshImmediate(){const e=this;e.hasMeshContent&&e.shouldBeVisible?e.meshContent.length<e.hasMeshContent&&e.contentURL.length==0&&(e.deleted=!1,e._load(!1,!0)):e.childrenTiles.forEach(t=>{t._loadMeshImmediate()})}_computeMetricRecursive(e,t){const a=this;a.metric=-1,a.isSetup&&(a.boundingVolume&&a.geometricError&&(a.metric=a._calculateUpdateMetric(e,t)),a.childrenTiles.forEach(n=>n._computeMetricRecursive(e,t)))}_expandTreeImmediate(e){const t=this;t.hasUnloadedJSONContent||(t.hasMeshContent?t.occlusionCullingService&&t.hasMeshContent&&!t.occlusionCullingService.hasID(t.colorID)||t.metric>=0&&t.metric<t.geometricErrorMultiplier*t.geometricError&&t.json&&t.json.children&&t.childrenTiles.length<t.json.children.length&&t._loadJsonChildren(e):t.json&&t.json.children&&t.childrenTiles.length<t.json.children.length&&t._loadJsonChildren(e)),t.childrenTiles.forEach(a=>a._expandTreeImmediate(e))}_update(e,t){const a=this;if(!a.isSetup)return;const n=a.materialVisibility;a.boundingVolume&&a.geometricError&&(a.metric=a._calculateUpdateMetric(e,t)),a.childrenTiles.forEach(i=>i._update(e,t)),function(i){if(i<0)return a.inFrustum=!1,void a._changeContentVisibility(!!a.loadOutsideView);if(a.inFrustum=!0,!!a.hasMeshContent&&!(a.meshContent.length<a.hasMeshContent)){if(a.childrenTiles.length==0)return void a._changeContentVisibility(!0);if(i>=a.geometricErrorMultiplier*a.geometricError)a._changeContentVisibility(!0);else if(i<a.geometricErrorMultiplier*a.geometricError&&a.refine=="REPLACE"){let o=!0;a.childrenTiles.every(s=>!!s._isReady()||(o=!1,!1)),o?a._changeContentVisibility(!1):a._changeContentVisibility(!0)}}}(a.metric),function(i){i<0&&a.hasMeshContent||a.occlusionCullingService&&a.hasMeshContent&&!a.occlusionCullingService.hasID(a.colorID)||(!a.hasMeshContent||i<=a.geometricErrorMultiplier*a.geometricError&&(a.meshContent.length>0||a.splatsMesh))&&a.json&&a.json.children&&a.childrenTiles.length!=a.json.children.length&&a._loadJsonChildren(e)}(a.metric),function(i,o){if(a.hasMeshContent){if(!a.inFrustum)return void a._disposeChildren();if(a.occlusionCullingService&&!o&&a.hasMeshContent&&a.meshContent.length>0&&a.materialVisibility&&a._areAllChildrenLoadedAndHidden())return a.splatsMesh&&this.materialVisibility&&!a.splatsReady?void 0:void a._disposeChildren();if(i>=a.geometricErrorMultiplier*a.geometricError){if(a.splatsMesh&&a.materialVisibility&&!a.splatsReady)return;a._disposeChildren()}}}(a.metric,n)}_loadJsonChildren(e){const t=this;for(let a=t.json.children.length-1;a>=0;a--)t.json.children[a].root||t.json.children[a].children||t.json.children[a].getChildren||t.json.children[a].content||t.json.children[a].contents||t.json.children.splice(a,1);t.json.children.forEach(a=>{let n=new vr({parentTile:t,queryParams:t.queryParams,parentGeometricError:t.geometricError,parentBoundingVolume:t.boundingVolume,parentRefine:t.refine,json:a,rootPath:t.rootPath,geometricErrorMultiplier:t.geometricErrorMultiplier,loadOutsideView:t.loadOutsideView,level:Math.floor(t.level)+1,tileLoader:t.tileLoader,cameraOnLoad:e,occlusionCullingService:t.occlusionCullingService,renderer:t.renderer,static:t.static,centerModel:!1,displayErrors:t.displayErrors,displayCopyright:t.displayCopyright,distanceBias:t.distanceBias,loadingStrategy:t.loadingStrategy,drawBoundingVolume:t.drawBoundingVolume,splatsMesh:t.splatsMesh});t.childrenTiles.push(n),t.add(n)}),t.updateMatrices(!0)}_areAllChildrenLoadedAndHidden(){let e=!0;const t=this;return this.childrenTiles.every(a=>{if(a.hasMeshContent){if(a.childrenTiles.length>0)return e=!1,!1;if(!a.metric<0)return!0;if(a.materialVisibility&&(!t.splatsMesh||t.splatsReady)||t.occlusionCullingService.hasID(a.colorID))return e=!1,!1}else if(!a._areAllChildrenLoadedAndHidden())return e=!1,!1;return!0}),e}_isReady(){if(this.metric==null)return!1;if(this.metric<0)return!0;if(this.hasUnloadedJSONContent)return!1;if(!this.hasMeshContent&&this.json.children.length==0&&!this.hasUnloadedJSONContent)return!0;if(!this.hasMeshContent||this.meshContent.length==0||!this.materialVisibility){if(this.children.length>0){var e=!0;return this.childrenTiles.every(t=>!!t._isReady()||(e=!1,!1)),e}return!1}return!this.hasMeshContent||!(this.meshContent.length<this.hasMeshContent)&&!!this.materialVisibility}_isReadyImmediate(){if(this.materialVisibility||!this.loadOutsideView&&this.metric<0)return!0;if(this.childrenTiles.length>0){var e=!0;return this.childrenTiles.every(t=>!!t._isReadyImmediate()||(e=!1,!1)),e}return!1}_changeContentVisibility(e){const t=this;if(t.bbox&&(t.bbox.material.visible=e),t.splatsMesh)e!=t.materialVisibility&&(t.meshContent.forEach(a=>{e&&a.isSplatsBatch?a.show(()=>{t.materialVisibility&&(t.splatsReady=!0)}):(a.hide(),t.splatsReady=!1)}),t.materialVisibility=e);else{if(t.hasMeshContent&&t.meshContent.length>0&&(e?t.meshContent.forEach(a=>{a.traverse(n=>{(n.isMesh||n.isPoints)&&n.layers.enable(0)})}):t.meshContent.forEach(a=>{a.traverse(n=>{(n.isMesh||n.isPoints)&&n.layers.disable(0)})})),t.materialVisibility==e)return;t.materialVisibility=e}}_calculateUpdateMetric(e,t){let a=0;if(this.boundingVolume instanceof at){if(jt.copy(this.boundingVolume),jt.applyMatrix4(this.matrixWorld),!jt.inFrustum(t))return-1;a=Math.max(0,jt.distanceToPoint(e.position)-e.near)}else{if(!(this.boundingVolume instanceof G.Sphere))return console.error("unsupported shape"),-1;if(bt.copy(this.boundingVolume),bt.applyMatrix4(this.matrixWorld),!t.intersectsSphere(bt))return-1;a=Math.max(0,e.position.distanceTo(bt.center)-bt.radius-e.near)}if(a=Math.pow(a,this.distanceBias),a==0)return 0;const n=this.matrixWorld.getMaxScaleOnAxis();this.renderer&&this.renderer.getDrawingBufferSize(this.rendererSize);let i=this.rendererSize.y,o=e.fov;return e.aspect<1&&(o*=e.aspect,i=this.rendererSize.x),16*(2*Math.tan(.5*o*.017453292519943295)*a)/(i*n)}_getSiblings(){const e=this,t=[];if(!e.parentTile)return t;let a=e.parentTile;for(;!a.hasMeshContent&&a.parentTile;)a=a.parentTile;return a.childrenTiles.forEach(n=>{if(n&&n!=e){for(;!n.hasMeshContent&&n.childrenTiles[0];)n=n.childrenTiles[0];t.push(n)}}),t}_calculateDistanceToCamera(e){return this.boundingVolume instanceof at?(jt.copy(this.boundingVolume),jt.applyMatrix4(this.matrixWorld),Math.max(0,jt.distanceToPoint(e.position))):this.boundingVolume instanceof G.Sphere?(bt.copy(this.boundingVolume),bt.applyMatrix4(this.matrixWorld),Math.max(0,e.position.distanceTo(bt.center)-bt.radius)):(console.error("unsupported shape"),-1)}setGeometricErrorMultiplier(e){this.geometricErrorMultiplier=e,this.childrenTiles.forEach(t=>t.setGeometricErrorMultiplier(e))}setDistanceBias(e){this.distanceBias=e,this.childrenTiles.forEach(t=>t.setDistanceBias(e))}_transformWGS84ToCartesian(e,t,a,n){const i=6378137/Math.sqrt(1-.006694384442042*Math.pow(Math.sin(t),2)),o=Math.cos(t),s=Math.cos(e),A=Math.sin(t),u=i+a,c=u*o*s,d=u*o*Math.sin(e),l=(.993305615557957*i+a)*A;n.set(c,d,l)}hideCopyright(){(function(){oe||((oe=document.createElement("div")).style.position="fixed",oe.style.bottom="20px",oe.style.left="20px",oe.style.color="white",oe.style.textShadow="2px 2px 0 #000, -1px -1px 0 #000, 1px -1px 0 #000, -1px 1px 0 #000, 1px 1px 0 #000",oe.style.padding="10px",oe.style.backgroundColor="rgba(0, 0, 0, 0.1)",document.body.appendChild(oe)),oe.style.opacity=0})()}showCopyright(){(function(){oe||((oe=document.createElement("div")).style.position="fixed",oe.style.bottom="20px",oe.style.left="20px",oe.style.color="white",oe.style.textShadow="2px 2px 0 #000, -1px -1px 0 #000, 1px -1px 0 #000, -1px 1px 0 #000, 1px 1px 0 #000",oe.style.padding="10px",oe.style.backgroundColor="rgba(0, 0, 0, 0.1)",document.body.appendChild(oe)),oe.style.opacity=1})()}}function Ki(r){var e=document.createElement("div");e.textContent=r,e.style.position="fixed",e.style.top="10px",e.style.left="50%",e.style.transform="translateX(-50%)",e.style.padding="10px",e.style.backgroundColor="#ff8800",e.style.color="#ffffff",e.style.zIndex="9999",document.body.appendChild(e),setTimeout(function(){e.remove()},8e3)}function kr(){oe||((oe=document.createElement("div")).style.position="fixed",oe.style.bottom="20px",oe.style.left="20px",oe.style.color="white",oe.style.textShadow="2px 2px 0 #000, -1px -1px 0 #000, 1px -1px 0 #000, -1px 1px 0 #000, 1px 1px 0 #000",oe.style.padding="10px",oe.style.backgroundColor="rgba(0, 0, 0, 0.1)",document.body.appendChild(oe));const r=Ji();let e="";r.forEach(t=>{e+=t+", "}),e=e.slice(0,-2),oe.textContent=e}const ze=new G.Sphere(new G.Vector3(0,0,0),1),yt=new G.Vector3(0,0,0),jr=new G.Vector3(0,0,0),hc=new G.Vector3(0,1,0),Mr=new G.Vector2,Vi=new G.Quaternion,Wi=new G.Matrix4;class Sr extends G.Object3D{constructor(e){super();const t=this;if(e.queryParams&&(this.queryParams={...e.queryParams}),this.uuid=qr(),e.tileLoader?this.tileLoader=e.tileLoader:console.error("an instanced tileset must be provided an InstancedTilesetLoader"),this.master=e.master,this.loadOutsideView=e.loadOutsideView,this.cameraOnLoad=e.cameraOnLoad,this.parentTile=e.parentTile,this.distanceBias=Math.max(1e-4,e.distanceBias?e.distanceBias:1),this.childrenTiles=[],this.jsonChildren=[],this.meshContent=new Set,this.static=e.static,this.static&&(this.matrixAutoUpdate=!1,this.matrixWorldAutoUpdate=!1),this.tileContent,this.refinement,this.rootPath,this.geometricError,this.boundingVolume,this.json,this.materialVisibility=!1,this.inFrustum=!0,this.level=e.level?e.level:0,this.hasMeshContent=0,this.hasUnloadedJSONContent=0,this.centerModel=e.centerModel,this.deleted=!1,this.abortController=new AbortController,e.json)this.rootPath=e.json.rootPath?e.json.rootPath:e.rootPath,e.json.children&&(this.jsonChildren=e.json.children),t.setup(e);else if(e.url){this.loadJson=(i,o)=>{const s=ft.dirname(o);t.setup({rootPath:s,json:i,onLoadCallback:e.onLoadCallback})};var a=e.url;if(t.queryParams){var n="";for(let i in t.queryParams)t.queryParams.hasOwnProperty(i)&&(n+="&"+i+"="+t.queryParams[i]);a.includes("?")?a+=n:a+="?"+n.substring(1)}t.tileLoader.get(t.abortController,a,t.uuid,t)}}async setup(e){const t=this;e.json.root?(t.json=e.json.root,!t.json.children&&t.json.getChildren&&(t.json.children=await t.json.getChildren()),t.jsonChildren=t.json.children,t.json.refinement||(t.json.refinement=e.json.refinement),t.json.geometricError||(t.json.geometricError=e.json.geometricError),t.json.transform||(t.json.transform=e.json.transform),t.json.boundingVolume||(t.json.boundingVolume=e.json.boundingVolume)):(t.json=e.json,!t.json.children&&t.json.getChildren&&(t.json.children=await t.json.getChildren(),t.jsonChildren=t.json.children)),t.rootPath=e.json.rootPath?e.json.rootPath:e.rootPath,t.json.refinement?t.refinement=t.json.refinement:t.refinement=e.parentRefinement,t.json.geometricError?t.geometricError=t.json.geometricError:t.geometricError=e.parentGeometricError;let a=new G.Matrix4;if(t.json.transform&&!t.centerModel&&(a.elements=t.json.transform),t.applyMatrix4(a),t.parentTile&&t.parentTile.matrix&&(t.matrix.premultiply(t.parentTile.matrix),t.matrix.decompose(t.position,t.quaternion,t.scale)),t.matrixWorldNeedsUpdate=!0,t.updateWorldMatrix(!0,!0),t.json.boundingVolume)if(t.json.boundingVolume.box)t.boundingVolume=new at(t.json.boundingVolume.box);else if(t.json.boundingVolume.region){const i=t.json.boundingVolume.region;t.transformWGS84ToCartesian(i[0],i[1],i[4],yt),t.transformWGS84ToCartesian(i[2],i[3],i[5],jr),yt.lerp(jr,.5),t.boundingVolume=new G.Sphere(new G.Vector3(yt.x,yt.y,yt.z),yt.distanceTo(jr))}else if(t.json.boundingVolume.sphere){const i=t.json.boundingVolume.sphere;t.boundingVolume=new G.Sphere(new G.Vector3(i[0],i[1],i[2]),i[3])}else t.boundingVolume=e.parentBoundingVolume;else t.boundingVolume=e.parentBoundingVolume;function n(i){i.uri&&i.uri.includes("json")||i.url&&i.url.includes("json")?t.hasUnloadedJSONContent++:t.hasMeshContent++}if(t.json.content?(n(t.json.content),t.load()):t.json.contents&&(t.json.contents.forEach(i=>n(i)),t.load()),t.centerModel){const i=new G.Sphere;t.boundingVolume instanceof at?i.copy(t.boundingVolume.sphere):t.boundingVolume instanceof G.Sphere&&i.copy(t.boundingVolume),this.json.boundingVolume.region&&(t.transformWGS84ToCartesian(.5*(t.json.boundingVolume.region[0]+t.json.boundingVolume.region[2]),.5*(t.json.boundingVolume.region[1]+t.json.boundingVolume.region[3]),.5*(t.json.boundingVolume.region[4]+t.json.boundingVolume.region[5]),yt),Vi.setFromUnitVectors(yt.normalize(),hc.normalize()),t.master.applyQuaternion(Vi),t.master.updateWorldMatrix(!1,!1)),Wi.makeTranslation(-i.center.x*t.scale.x,-i.center.y*t.scale.y,-i.center.z*t.scale.z),t.master.matrix.multiply(Wi),t.master.matrix.decompose(t.master.position,t.master.quaternion,t.master.scale)}t.isSetup=!0,e.onLoadCallback&&e.onLoadCallback(t)}isAbsolutePathOrURL(e){const t=/^(?:http|https|ftp|tcp|udp):\/\/\S+/.test(e),a=e.startsWith("/")&&!e.startsWith("//");return t||a}assembleURL(e,t){e.endsWith("/")||(e+="/");const a=new URL(e);let n=a.pathname.split("/").filter(o=>o!==""),i=t.split("/").filter(o=>o!=="");for(let o=1;o<=n.length&&!(o>=i.length);o++)if(n.slice(n.length-o,n.length).join("/")===i.slice(0,o).join("/")){for(let s=0;s<o;s++)n.pop();break}for(;i.length>0&&i[0]==="..";)n.pop(),i.shift();return`${a.protocol}//${a.host}/${[...n,...i].join("/")}`}extractQueryParams(e,t){const a=new URL(e);for(let[n,i]of a.searchParams)t[n]=i;return a.search="",a.toString()}load(){var e=this;function t(a){let n;a.uri?n=a.uri:a.url&&(n=a.url);const i=/^(?:http|https|ftp|tcp|udp):\/\/\S+/;if(i.test(e.rootPath)?i.test(n)||(n=e.assembleURL(e.rootPath,n)):ft.isAbsolute(e.rootPath)&&(n=e.rootPath+ft.sep+n),n=e.extractQueryParams(n,e.queryParams),e.queryParams){var o="";for(let s in e.queryParams)e.queryParams.hasOwnProperty(s)&&(o+="&"+s+"="+e.queryParams[s]);n.includes("?")?n+=o:n+="?"+o.substring(1)}n&&(n.includes(".b3dm")||n.includes(".glb")||n.includes(".gltf")?(e.contentURL=n,e.tileLoader.get(e.abortController,n,e.uuid,e,e.cameraOnLoad?()=>e.calculateDistanceToCamera(e.cameraOnLoad):()=>0,()=>e.getSiblings(),e.level,!e.json.boundingVolume.region,!!e.json.boundingVolume.region,e.geometricError)):n.includes(".json")&&e.tileLoader.get(e.abortController,n,e.uuid,e))}e.deleted||(e.json.content?t(e.json.content):e.json.contents&&e.json.contents.forEach(a=>t(a)))}loadMesh(e){this.deleted||this.meshContent.add(e)}loadJson(e,t){this.deleted||(this.json.children&&(this.jsonChildren=this.json.children),e.rootPath=ft.dirname(t),this.jsonChildren.push(e),this.hasUnloadedJSONContent--)}dispose(){const e=this;e.childrenTiles.forEach(t=>t.dispose()),e.deleted=!0,e.abortController&&e.abortController.abort(),this.parent=null,this.parentTile=null,this.dispatchEvent({type:"removed"})}disposeChildren(){this.childrenTiles.forEach(e=>e.dispose()),this.childrenTiles=[]}_update(e,t){const a=this;function n(i){if(a.hasMeshContent&&!(a.meshContent.size<a.hasMeshContent)){if(i<0)return a.inFrustum=!1,void a.changeContentVisibility(!!a.loadOutsideView);if(a.inFrustum=!0,a.childrenTiles.length!=0){if(i>=a.master.geometricErrorMultiplier*a.geometricError)a.changeContentVisibility(!0);else if(i<a.master.geometricErrorMultiplier*a.geometricError){let o=!0;a.childrenTiles.every(s=>!!s.isReady()||(o=!1,!1)),o&&a.changeContentVisibility(!1)}}else a.changeContentVisibility(!0)}}a.isSetup&&(a.materialVisibility,a.boundingVolume&&a.geometricError&&(a.metric=a.calculateUpdateMetric(e,t)),a.childrenTiles.forEach(i=>i._update(e,t)),n(a.metric),function(i){i<0&&a.hasMeshContent||(!a.hasMeshContent&&a.rootPath||i<a.master.geometricErrorMultiplier*a.geometricError&&a.meshContent.size>0)&&a.json&&a.jsonChildren&&a.childrenTiles.length!=a.jsonChildren.length&&a.jsonChildren.forEach(o=>{if(!(o.root||o.children||o.getChildren||o.content||o.contents))return;let s=new Sr({parentTile:a,queryParams:a.queryParams,parentGeometricError:a.geometricError,parentBoundingVolume:a.boundingVolume,parentRefinement:a.refinement,json:o,rootPath:a.rootPath,loadOutsideView:a.loadOutsideView,level:a.level+1,tileLoader:a.tileLoader,cameraOnLoad:e,master:a.master,centerModel:!1});a.childrenTiles.push(s)})}(a.metric),function(i){if(a.hasMeshContent){if(!a.inFrustum)return a.disposeChildren(),void n(i);i>=a.master.geometricErrorMultiplier*a.geometricError&&(a.disposeChildren(),n(i))}}(a.metric))}areAllChildrenLoadedAndHidden(){let e=!0;return this.childrenTiles.every(t=>{if(t.hasMeshContent){if(t.childrenTiles.length>0)return e=!1,!1;if(!t.inFrustum)return!0;if(!t.materialVisibility||t.meshesToDisplay!=t.meshesDisplayed)return e=!1,!1}else if(!t.areAllChildrenLoadedAndHidden())return e=!1,!1;return!0}),e}isReady(){if(!this.inFrustum)return!0;if(this.hasUnloadedJSONContent)return!1;if(!this.hasMeshContent||this.meshContent.size==0||!this.materialVisibility){if(this.childrenTiles.length>0){var e=!0;return this.childrenTiles.every(t=>!!t.isReady()||(e=!1,!1)),e}return!1}return!this.hasMeshContent||!(this.meshContent.size<this.hasMeshContent)&&!!this.materialVisibility}changeContentVisibility(e){this.materialVisibility=e}calculateUpdateMetric(e,t){if(this.boundingVolume instanceof at){if(ze.copy(this.boundingVolume.sphere),ze.applyMatrix4(this.matrixWorld),!t.intersectsSphere(ze))return-1}else{if(!(this.boundingVolume instanceof G.Sphere))return console.error("unsupported shape"),-1;if(ze.copy(this.boundingVolume),ze.applyMatrix4(this.matrixWorld),!t.intersectsSphere(ze))return-1}let a=Math.max(0,e.position.distanceTo(ze.center)-ze.radius);if(a=Math.pow(a,this.distanceBias),a==0)return 0;const n=this.matrixWorld.getMaxScaleOnAxis();this.master._renderSize(Mr);let i=Mr.y,o=e.fov;e.aspect<1&&(o*=e.aspect,i=Mr.x);let s=2*Math.tan(.5*o*.017453292519943295)*a;return 16*window.devicePixelRatio*s/(i*n)}getSiblings(){const e=this,t=[];if(!e.parentTile)return t;let a=e.parentTile;for(;!a.hasMeshContent&&a.parentTile;)a=a.parentTile;return a.childrenTiles.forEach(n=>{if(n&&n!=e){for(;!n.hasMeshContent&&n.childrenTiles[0];)n=n.childrenTiles[0];t.push(n)}}),t}calculateDistanceToCamera(e){return this.boundingVolume instanceof at?(ze.copy(this.boundingVolume.sphere),ze.applyMatrix4(this.matrixWorld)):this.boundingVolume instanceof G.Sphere?(ze.copy(this.boundingVolume),ze.applyMatrix4(this.matrixWorld)):console.error("unsupported shape"),Math.max(0,e.position.distanceTo(ze.center)-ze.radius)}getWorldMatrix(){return this.matrixWorld}transformWGS84ToCartesian(e,t,a,n){const i=6378137/Math.sqrt(1-.006694384442042*Math.pow(Math.sin(t),2)),o=Math.cos(t),s=Math.cos(e),A=Math.sin(t),u=i+a,c=u*o*s,d=u*o*Math.sin(e),l=(.993305615557957*i+a)*A;n.set(c,d,l)}}class bc extends G.Object3D{constructor(e){super(),e.master=this,e.domWidth&&e.domHeight?this.rendererSize=new G.Vector2(e.domWidth,e.domHeight):this.rendererSize=new G.Vector2(1e3,1e3),this.renderer=e.renderer,this.distanceBias=Math.max(1e-4,e.distanceBias?e.distanceBias:1),this.geometricErrorMultiplier=e.geometricErrorMultiplier?e.geometricErrorMultiplier:1,this.tileset=new Sr(e),e.static&&(this.matrixAutoUpdate=!1),this.tileLoader=e.tileLoader}_renderSize(e){this.renderer?this.renderer.getDrawingBufferSize(e):e.copy(this.rendererSize)}setCanvasSize(e,t){this.rendererSize.set(e,t)}update(e,t){if(t)this.tileset._update(e,t);else{const a=new G.Frustum;a.setFromProjectionMatrix(new G.Matrix4().multiplyMatrices(e.projectionMatrix,e.matrixWorldInverse)),this.tileset._update(e,a)}}setGeometricErrorMultiplier(e){this.geometricErrorMultiplier=e||1}}class lc{constructor(e){const t=this;t.scene=e,t.instancedTiles=[],t.instancedMesh,t.reuseableMatrix=new G.Matrix4}addInstance(e){const t=this;e.added=!0,e.listOMesh=t.instancedTiles,t.instancedTiles.push(e),t.instancedMesh&&e.loadMesh(t.instancedMesh)}addToScene(){const e=this;e.instancedMesh.setMatrixAt(0,new G.Matrix4),e.instancedMesh.instanceMatrix.needsUpdate=!0,e.instancedMesh.count=1,e.scene.add(e.instancedMesh),e.instancedMesh.onAfterRender=()=>{delete e.instancedMesh.onAfterRender,e.instancedMesh.displayedOnce=!0}}setObject(e){const t=this;t.instancedMesh=e,t.instancedMesh.matrixAutoUpdate=!1,t.instancedMesh.matrixWorldAutoUpdate=!1,t.scene.children.includes(e)||this.addToScene();for(let a=0;a<t.instancedTiles.length;a++)t.instancedTiles[a].loadMesh(t.instancedMesh)}update(){const e=this;for(let t=e.instancedTiles.length-1;t>=0;t--)e.instancedTiles[t].deleted&&e.instancedTiles.splice(t,1);if(e.instancedMesh){e.instancedMesh.count=0,e.instancedMesh.instancedTiles=[];for(let t=0;t<e.instancedTiles.length;t++)e.instancedTiles[t].meshContent.add(e.instancedMesh),e.instancedTiles[t].materialVisibility&&(e.instancedMesh.count++,e.reuseableMatrix.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),e.reuseableMatrix.multiply(e.instancedTiles[t].matrixWorld),e.reuseableMatrix.multiply(e.instancedMesh.baseMatrix),e.instancedMesh.setMatrixAt(e.instancedMesh.count-1,e.reuseableMatrix),e.instancedMesh.instancedTiles.push(e.instancedTiles[t]));e.instancedMesh.instanceMatrix.needsUpdate=!0,e.instancedMesh.needsUpdate=!0,e.instancedMesh.computeBoundingSphere()}}getCount(){return this.instancedTiles.length}dispose(){const e=this;return!(e.instancedTiles.length>0)&&!!e.instancedMesh&&(e.scene.remove(e.instancedMesh),e.instancedMesh.traverse(t=>{if(t.dispose&&t.dispose(),t.material)if(t.material.length)for(let a=0;a<t.material.length;++a)t.material[a].dispose();else t.material.dispose();t.geometry&&t.geometry.dispose()}),e.instancedMesh.dispose(),!0)}}class gc{constructor(){const e=this;e.count=0,e.json,e.instancedTiles=[]}addInstance(e){this.instancedTiles.push(e),this.json&&e.loadJson(this.json,this.url)}setObject(e,t){const a=this;a.json=e,a.url=t;for(let n=0;n<a.instancedTiles.length;n++)a.instancedTiles[n].loadJson(a.json,a.url)}getCount(){return this.instancedTiles.length}update(){const e=this;for(let t=e.instancedTiles.length-1;t>=0;t--)e.instancedTiles[t].deleted&&e.instancedTiles.splice(t,1)}dispose(){return!(!this.json||this.instancedTiles.length!=0)}}let Mt=0;async function fc(r){return new Promise(e=>{const t=setInterval(()=>{r.hasDracoLoader&&!r.dracoLoader||r.hasKTX2Loader&&!r.ktx2Loader||(clearInterval(t),e())},10)})}Qe.InstancedOGC3DTile=bc,Qe.InstancedTileLoader=class{constructor(r,e){if(this.zUpToYUpMatrix=new G.Matrix4,this.zUpToYUpMatrix.set(1,0,0,0,0,0,-1,0,0,1,0,0,0,0,0,1),this.maxCachedItems=100,this.maxInstances=1,this.proxy=e.proxy,e&&(this.meshCallback=e.meshCallback,this.pointsCallback=e.pointsCallback,e.maxCachedItems&&(this.maxCachedItems=e.maxCachedItems),e.maxInstances&&(this.maxInstances=e.maxInstances)),this.gltfLoader=new Jr,e&&e.dracoLoader)this.gltfLoader.setDRACOLoader(e.dracoLoader),this.hasDracoLoader=!0;else{const t=new Zr;t.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.4.3/"),this.gltfLoader.setDRACOLoader(t),this.gltfLoader.hasDracoLoader=!0}if(e&&e.ktx2Loader)this.gltfLoader.setKTX2Loader(e.ktx2Loader),this.hasKTX2Loader=!0;else if(e&&e.renderer){const t=new Pe;t.setTranscoderPath("https://storage.googleapis.com/ogc-3d-tiles/basis/").detectSupport(e.renderer),this.gltfLoader.setKTX2Loader(t),this.gltfLoader.hasKTX2Loader=!0}this.gltfLoader.setMeshoptDecoder(In),this.hasMeshOptDecoder=!0,this.b3dmDecoder=new zr(this.gltfLoader),this.cache=new Gr,this.scene=r,this.ready=[],this.downloads=[],this.nextReady=[],this.nextDownloads=[]}update(){const r=this;r._checkSize(),r.cache._data.forEach(e=>{e.update()}),Mt<8&&r._download(),r._loadBatch()}_download(){const r=this;if(r.nextDownloads.length!=0||(r._getNextDownloads(),r.nextDownloads.length!=0))for(;r.nextDownloads.length>0;){const t=r.nextDownloads.shift();if(t){if(t.path.includes(".b3dm")&&(e=r.proxy?()=>fetch(r.proxy,{method:"POST",body:t.path}):()=>fetch(t.path),Mt++,e().then(a=>{if(!a.ok)throw console.error("could not load tile with path : "+t.path),new Error(`couldn't load "${t.path}". Request failed with status ${a.status} : ${a.statusText}`);return a.arrayBuffer()}).then(a=>this.b3dmDecoder.parseB3DMInstanced(a,n=>{r.meshCallback(n,t.geometricError)},r.maxInstances,t.sceneZupToYup,t.meshZupToYup)).then(a=>{a.frustumCulled=!1,t.tile.setObject(a),r.ready.unshift(t)}).catch(a=>console.error(a)).finally(()=>{Mt--})),t.path.includes(".glb")||t.path.includes(".gltf"))e=r.proxy?()=>fetch(r.proxy,{method:"POST",body:t.path}):()=>fetch(t.path),Mt++,e().then(a=>{if(!a.ok)throw new Error("missing content");return a.arrayBuffer()}).then(async a=>{await fc(this.gltfLoader),this.gltfLoader.parse(a,null,n=>{let i;n.scene.asset=n.asset,t.sceneZupToYup&&n.scene.applyMatrix4(this.zUpToYUpMatrix),n.scene.traverse(o=>{o.geometricError=t.geometricError,o.isMesh&&(t.meshZupToYup&&o.applyMatrix4(this.zUpToYUpMatrix),r.meshCallback&&r.meshCallback(o,o.geometricError)),o.isPoints&&console.error("instanced point cloud is not supported")}),n.scene.updateWorldMatrix(!1,!0),n.scene.traverse(o=>{o.isMesh&&(i=new G.InstancedMesh(o.geometry,o.material,r.maxInstances),i.baseMatrix=o.matrixWorld)}),r.ready.unshift(t),i?(i.frustumCulled=!1,t.tile.setObject(i)):n.scene.traverse(o=>{o.dispose&&o.dispose(),o.material&&o.material.dispose()})})},a=>{console.error("could not load tile : "+t.path)}).finally(()=>{Mt--});else if(t.path.includes(".json")){var e;e=r.proxy?()=>fetch(r.proxy,{method:"POST",body:t.path}):()=>fetch(t.path),Mt++,e().then(a=>{if(!a.ok)throw console.error("could not load tile with path : "+t.path),new Error(`couldn't load "${t.path}". Request failed with status ${a.status} : ${a.statusText}`);return a.json()}).then(a=>$a(a,t.path)).then(a=>{t.tile.setObject(a,t.path),r.ready.unshift(t)}).catch(a=>console.error(a)).finally(()=>{Mt--})}}}}_loadBatch(){return this.nextReady.length==0&&(this._getNextReady(),this.nextReady.length==0)?0:this.nextReady.shift()?1:0}_getNextReady(){let r=Number.MAX_VALUE,e=-1;for(let t=this.ready.length-1;t>=0;t--)this.ready[t].distanceFunction||this.nextReady.push(this.ready.splice(t,1)[0]);if(!(this.nextReady.length>0)){for(let t=this.ready.length-1;t>=0;t--){const a=this.ready[t].distanceFunction()*this.ready[t].level;a<r&&(r=a,e=t)}if(e>=0){const t=this.ready.splice(e,1).pop();this.nextReady.push(t);const a=t.getSiblings();for(let n=this.ready.length-1;n>=0;n--)a.includes(this.ready[n].uuid)&&this.nextready.push(this.ready.splice(n,1).pop())}}}get(r,e,t,a,n,i,o,s,A,u){const c=this,d=function(h){for(var b=h.split("/"),g=[],f=0,m=0;m<b.length;m++){var p=b[m];p!=="."&&p!==""&&p!==".."?g[f++]=p:p===".."&&f>0&&f--}if(f===0)return"/";var C="";for(m=0;m<f;m++)C+="/"+g[m];return C}(e);if(!(e.includes(".b3dm")||e.includes(".json")||e.includes(".glb")||e.includes(".gltf")))return void console.error("the 3DTiles cache can only be used to load B3DM, gltf and json data");const l=c.cache.get(d);if(l)l.addInstance(a);else if(e.includes(".b3dm")||e.includes(".glb")||e.includes(".gltf")){const h=new lc(c.scene);h.addInstance(a),c.cache.put(d,h);const b=new AbortController;r.signal.addEventListener("abort",()=>{h.getCount()==0&&b.abort()}),this.downloads.push({abortController:b,tile:h,key:d,path:e,distanceFunction:n,getSiblings:i,level:o,uuid:t,sceneZupToYup:s,meshZupToYup:A,geometricError:u,shouldDoDownload:()=>!0})}else if(e.includes(".json")){const h=new gc;h.addInstance(a),c.cache.put(d,h);const b=new AbortController;r.signal.addEventListener("abort",()=>{h.getCount()==0&&b.abort()}),this.downloads.push({abortController:b,tile:h,key:d,path:e,distanceFunction:n,getSiblings:i,level:o,shouldDoDownload:()=>!0})}}_getNextDownloads(){let r=Number.MAX_VALUE,e=-1;for(let t=this.downloads.length-1;t>=0;t--){const a=this.downloads[t];a.shouldDoDownload()?a.distanceFunction||this.nextDownloads.push(this.downloads.splice(t,1)[0]):this.downloads.splice(t,1)}if(!(this.nextDownloads.length>0)){for(let t=this.downloads.length-1;t>=0;t--){const a=this.downloads[t],n=a.distanceFunction()*a.level;n<r&&(r=n,e=t)}if(e>=0){const t=this.downloads.splice(e,1).pop();this.nextDownloads.push(t);const a=t.getSiblings();for(let n=this.downloads.length-1;n>=0;n--)a.includes(this.downloads[n].uuid)&&this.nextDownloads.push(this.downloads.splice(n,1).pop())}}}_checkSize(){const r=this;let e=0;for(;r.cache.size()>r.maxCachedItems&&e<r.cache.size();){e++;const t=r.cache.head();r.cache.remove(t.key),t.value.dispose()||r.cache.put(t.key,t.value)}}},Qe.OGC3DTile=vr,Qe.OcclusionCullingService=class{constructor(){this.cullMap=[],this.cullMaterial=new G.MeshBasicMaterial({vertexColors:!0}),this.cullMaterial.side=G.FrontSide,this.cullTarget=this._createCullTarget(),this.cullPixels=new Uint8Array(4*this.cullTarget.width*this.cullTarget.height)}setSide(r){this.cullMaterial.side=r}_createCullTarget(){const r=new G.WebGLRenderTarget(Math.floor(.05*window.innerWidth),Math.floor(.05*window.innerHeight));return r.texture.format=G.RGBAFormat,r.texture.colorSpace=G.LinearSRGBColorSpace,r.texture.minFilter=G.NearestFilter,r.texture.magFilter=G.NearestFilter,r.texture.generateMipmaps=!1,r.stencilBuffer=!1,r.depthBuffer=!0,r.depthTexture=new G.DepthTexture,r.depthTexture.format=G.DepthFormat,r.depthTexture.type=G.UnsignedShortType,r}update(r,e,t){let a=e.getRenderTarget(),n=r.overrideMaterial;r.overrideMaterial=this.cullMaterial,e.setRenderTarget(this.cullTarget),e.render(r,t),r.overrideMaterial=n,e.setRenderTarget(a),e.readRenderTargetPixels(this.cullTarget,0,0,this.cullTarget.width,this.cullTarget.height,this.cullPixels),this.cullMap=[];for(let i=0;i<this.cullPixels.length;i+=4){const o=G.MathUtils.clamp(this.cullPixels[i],0,255)<<16^G.MathUtils.clamp(this.cullPixels[i+1],0,255)<<8^G.MathUtils.clamp(this.cullPixels[i+2],0,255);this.cullMap[o]=!0}}hasID(r){return this.cullMap[r]}},Qe.TileLoader=Bn,Qe.getOGC3DTilesCopyrightInfo=Ji,Qe.splatsFragmentShader=zi,Qe.splatsVertexShader=Oi,Object.defineProperty(Qe,Symbol.toStringTag,{value:"Module"})});
|
|
293
|
+
}`}var oe;const bt=new G.Sphere(new G.Vector3(0,0,0),1),jt=new at([0,0,0,1,0,0,0,1,0,0,0,1]);new G.Box3;const Dt=new G.Vector3(0,0,0),Jt=new G.Vector3(0,0,0),hc=new G.Vector3(0,1,0),ja=new G.Ray,Ma=new G.Matrix4;new G.Matrix4,new G.Frustum;const Sa=new G.Vector3,Ra=[],qi=new G.Quaternion,ot={};function Ji(){var r=[];for(let e in ot)ot.hasOwnProperty(e)&&ot[e]>0&&r.push(e);return r}class Qr extends G.Object3D{constructor(e){super();const t=this;if(t.splatsMesh=e.splatsMesh,t.splatsQuality=e.splatsQuality!=null?e.splatsQuality:.75,t.splatsCPUCulling=e.splatsCPUCulling!=null&&e.splatsQuality,this.contentURL=[],e.domWidth&&e.domHeight?this.rendererSize=new G.Vector2(e.domWidth,e.domHeight):this.rendererSize=new G.Vector2(1e3,1e3),this.loadingStrategy=e.loadingStrategy?e.loadingStrategy.toUpperCase():"INCREMENTAL",this.distanceBias=Math.max(1e-4,e.distanceBias?e.distanceBias:1),this.proxy=e.proxy,this.drawBoundingVolume=!!e.drawBoundingVolume&&e.drawBoundingVolume,this.displayErrors=e.displayErrors,this.displayCopyright=e.displayCopyright,e.queryParams&&(this.queryParams={...e.queryParams}),this.uuid=qr(),e.tileLoader)this.tileLoader=e.tileLoader;else{const i={};i.meshCallback=e.meshCallback?e.meshCallback:(s,A)=>{s.material.wireframe=!1,s.material.side=G.DoubleSide},i.pointsCallback=e.pointsCallback?e.pointsCallback:(s,A)=>{s.material.size=Math.pow(A,.33),s.material.sizeAttenuation=!0},i.proxy=this.proxy,i.renderer=e.renderer,i.dracoLoader=e.dracoLoader,i.ktx2Loader=e.ktx2Loader,t.tileLoader=new Bn(i);const o=this.update;this.update=s=>{o.call(t,s),t.tileLoader.update()}}if(this.displayCopyright=!!e.displayCopyright,this.geometricErrorMultiplier=e.geometricErrorMultiplier?e.geometricErrorMultiplier:1,this.splatsCropRadius=Number.MAX_VALUE,this.splatsSizeMultiplier=1,this.renderer=e.renderer,this.meshCallback=e.meshCallback,this.loadOutsideView=e.loadOutsideView,this.cameraOnLoad=e.cameraOnLoad,this.parentTile=e.parentTile,this.occlusionCullingService=e.occlusionCullingService,this.static=e.static,this.occlusionCullingService&&(this.color=new G.Color,this.color.setHex(16777215*Math.random()),this.colorID=G.MathUtils.clamp(255*t.color.r,0,255)<<16^G.MathUtils.clamp(255*t.color.g,0,255)<<8^G.MathUtils.clamp(255*t.color.b,0,255)),this.static&&(this.matrixAutoUpdate=!1,this.matrixWorldAutoUpdate=!1),this.childrenTiles=[],this.meshContent=[],this.tileContent,this.refine,this.rootPath,this.geometricError,this.boundingVolume,this.json,this.materialVisibility=!1,this.level=e.level?e.level:0,this.hasMeshContent=0,this.hasUnloadedJSONContent=0,this.centerModel=e.centerModel,this.abortController=new AbortController,this.onLoadCallback=e.onLoadCallback,e.json)t._setup(e);else if(e.url){var a=e.url;if(t.queryParams){var n="";for(let i in t.queryParams)t.queryParams.hasOwnProperty(i)&&(n+="&"+i+"="+t.queryParams[i]);a.includes("?")?a+=n:a+="?"+n.substring(1)}(t.proxy?()=>fetch(t.proxy,{method:"POST",body:a,signal:t.abortController.signal}):()=>fetch(a,{signal:t.abortController.signal}))().then(i=>{if(!i.ok)throw new Error(`couldn't load "${e.url}". Request failed with status ${i.status} : ${i.statusText}`);i.json().then(o=>er(o,a)).then(o=>{t._setup({rootPath:ft.dirname(e.url),json:o})})}).catch(i=>{t.displayErrors&&Ki(i)})}}setSplatsSizeMultiplier(e){this.splatsSizeMultiplier=e,this.splatsMesh&&this.splatsMesh.setSplatsSizeMultiplier(this.splatsSizeMultiplier)}setSplatsCropRadius(e){this.splatsCropRadius=e,this.splatsMesh&&this.splatsMesh.setSplatsCropRadius(this.splatsCropRadius)}setSplatsCPUCulling(e){this.splatsCPUCulling=e,this.splatsMesh&&this.splatsMesh.setSplatsCPUCulling(e)}setSplatsQuality(e){this.splatsQuality=e,this.splatsMesh&&this.splatsMesh.setQuality(e)}updateMatrices(){this.updateMatrix(),this.splatsMesh&&this.splatsMesh.updateMatrix(),this.static&&(this.traverse(e=>{e.isObject3D&&(e.matrixWorldAutoUpdate=!0)}),this.splatsMesh&&(this.splatsMesh.matrixWorldAutoUpdate=!0)),this.updateMatrixWorld(!0),this.static&&(this.traverse(e=>{e.isObject3D&&(e.matrixWorldAutoUpdate=!1)}),this.splatsMesh&&(this.splatsMesh.matrixWorldAutoUpdate=!1))}setCanvasSize(e,t){this.rendererSize.set(e,t)}async _setup(e){const t=this;if(e.json.extensionsRequired&&(e.json.extensionsRequired.includes("JDULTRA_gaussian_splats")||e.json.extensionsRequired.includes("JDULTRA_gaussian_splats_V2"))&&(t.splatsMesh=new dc(t.tileLoader.renderer),t.splatsMesh.setQuality(t.splatsQuality),t.splatsMesh.setSplatsCPUCulling(t.splatsCPUCulling),t.splatsMesh.setSplatsCropRadius(t.splatsCropRadius),t.splatsMesh.setSplatsSizeMultiplier(t.splatsSizeMultiplier),t.static&&(t.splatsMesh.matrixWorldAutoUpdate=!1),t.add(t.splatsMesh),t.updateMatrices()),e.json.root?(t.json=e.json.root,t.json.refine||(t.json.refine=e.json.refine),t.json.geometricError||(t.json.geometricError=e.json.geometricError),t.json.transform||(t.json.transform=e.json.transform),t.json.boundingVolume||(t.json.boundingVolume=e.json.boundingVolume)):t.json=e.json,t.json.children||(t.json.getChildren?t.json.children=await t.json.getChildren():t.json.children=[]),t.rootPath=e.json.rootPath?e.json.rootPath:e.rootPath,t.json.refine?t.refine=t.json.refine:t.refine=e.parentRefine,t.json.geometricError?t.geometricError=t.json.geometricError:t.geometricError=e.parentGeometricError,t.json.transform){let n=new G.Matrix4;n.elements=t.json.transform,t.applyMatrix4(n)}if(t.json.boundingVolume)if(t.json.boundingVolume.box)t.boundingVolume=new at(t.json.boundingVolume.box);else if(t.json.boundingVolume.region){const n=t.json.boundingVolume.region;t._transformWGS84ToCartesian(n[0],n[1],n[4],Dt),t._transformWGS84ToCartesian(n[2],n[3],n[5],Jt),Dt.lerp(Jt,.5),t.boundingVolume=new G.Sphere(new G.Vector3(Dt.x,Dt.y,Dt.z),Dt.distanceTo(Jt))}else if(t.json.boundingVolume.sphere){const n=t.json.boundingVolume.sphere;t.boundingVolume=new G.Sphere(new G.Vector3(n[0],n[1],n[2]),n[3])}else t.boundingVolume=e.parentBoundingVolume;else t.boundingVolume=e.parentBoundingVolume;function a(n){n.uri&&n.uri.includes("json")||n.url&&n.url.includes("json")?t.hasUnloadedJSONContent++:t.hasMeshContent++}if(t.json.content?(a(t.json.content),t.hasMeshContent==0&&(t.level=Math.max(0,t.parentTile?t.parentTile.level+.01:0)),t._load()):t.json.contents&&(t.json.contents.forEach(n=>a(n)),t.hasMeshContent==0&&(t.level=Math.max(0,t.parentTile?t.parentTile.level+.01:0))),t.centerModel&&(Jt.copy(t.boundingVolume.center),this.json.boundingVolume.region&&(this._transformWGS84ToCartesian(.5*(this.json.boundingVolume.region[0]+this.json.boundingVolume.region[2]),.5*(this.json.boundingVolume.region[1]+this.json.boundingVolume.region[3]),.5*(this.json.boundingVolume.region[4]+this.json.boundingVolume.region[5]),Dt),qi.setFromUnitVectors(Dt.normalize(),hc.normalize()),t.applyQuaternion(qi)),Jt.applyMatrix4(t.matrix),t.position.sub(Jt),t.updateMatrices()),t.onLoadCallback&&t.onLoadCallback(t),t.isSetup=!0,t.level>0&&t.drawBoundingVolume)if(t.bbox&&console.log("double setup"),this.boundingVolume.aabb){let n=this.boundingVolume.aabb.clone();n.applyMatrix4(this.matrixWorld),t.bbox=new G.Box3Helper(n,new G.Color(Math.random(),Math.random(),Math.random())),t.add(t.bbox),t.bbox.material.visible=!1}else t.boundingVolume instanceof at&&(t.bbox=t.boundingVolume.helper(),t.add(t.bbox),t.bbox.material.visible=!1)}_assembleURL(e,t){e.endsWith("/")||(e+="/");const a=new URL(e);let n=a.pathname.split("/").filter(o=>o!==""),i=t.split("/").filter(o=>o!=="");for(let o=1;o<=n.length&&!(o>=i.length);o++)if(n.slice(n.length-o,n.length).join("/")===i.slice(0,o).join("/")){for(let s=0;s<o;s++)n.pop();break}for(;i.length>0&&i[0]==="..";)n.pop(),i.shift();return`${a.protocol}//${a.host}/${[...n,...i].join("/")}`}_extractQueryParams(e,t){const a=new URL(e);for(let[n,i]of a.searchParams)t[n]=i;return a.search="",a.toString()}async _load(e=!0,t=!0){var a=this;if(!a.deleted){if(a.json.content)await n(a.json.content,null,e,t);else if(a.json.contents){let i=a.json.contents.map((o,s)=>n(o,s,e,t));Promise.all(i)}}async function n(i,o,s,A){let u;i.uri?u=i.uri:i.url&&(u=i.url);const c=/^(?:http|https|ftp|tcp|udp):\/\/\S+/;if(c.test(a.rootPath)?c.test(u)||(u=a._assembleURL(a.rootPath,u)):ft.isAbsolute(a.rootPath)&&(u=a.rootPath+ft.sep+u),u=a._extractQueryParams(u,a.queryParams),a.queryParams){var d="";for(let l in a.queryParams)a.queryParams.hasOwnProperty(l)&&(d+="&"+l+"="+a.queryParams[l]);u.includes("?")?u+=d:u+="?"+d.substring(1)}if(u)if(a.contentURL.push(u),A&&(u.includes(".b3dm")||u.includes(".glb")||u.includes(".gltf")))try{a.tileLoader.get(a.abortController,a.uuid,u,l=>{a.deleted||(l.asset&&l.asset.copyright&&(l.asset.copyright.split(";").forEach(h=>{ot[h]?ot[h]++:ot[h]=1}),a.displayCopyright&&kr()),a.meshContent.push(l),a.splatsMesh||(l.traverse(h=>{if((h.isMesh||h.isPoints)&&h.layers.disable(0),h.isMesh&&a.occlusionCullingService){const b=h.geometry.attributes.position,g=[];for(let f=0;f<b.count;f++)g.push(a.color.r,a.color.g,a.color.b);h.geometry.setAttribute("color",new G.Float32BufferAttribute(g,3))}}),a.add(l),a.updateMatrices()))},a.cameraOnLoad?()=>a.loadingStrategy=="IMMEDIATE"?a._calculateDistanceToCamera(a.cameraOnLoad):a.loadingStrategy=="INCREMENTAL"?a.parentTile?a.parentTile._calculateDistanceToCamera(a.cameraOnLoad)/Math.max(1,a.parentTile.level):a._calculateDistanceToCamera(a.cameraOnLoad)/Math.max(1,a.level):a.loadingStrategy=="PERLEVEL"?a.parentTile?a.level+a.parentTile._calculateDistanceToCamera(a.cameraOnLoad):a.level+a._calculateDistanceToCamera(a.cameraOnLoad):0:()=>0,()=>a._getSiblings(),a.level,a.loadingStrategy,!a.json.boundingVolume.region,!!a.json.boundingVolume.region,a.geometricError,a.splatsMesh)}catch(l){a.displayErrors&&Ki(l)}else s&&u.includes(".json")&&(a.jsonRequested=u,a.tileLoader.get(a.abortController,a.uuid,u,async l=>{a.jsonReceived=!0,a.deleted||(l.rootPath=ft.dirname(u),a.json.children.push(l),o==null?delete a.json.content:a.json.contents.splice(o,1),a.hasUnloadedJSONContent--)}))}}dispose(){const e=this;e.meshContent.forEach(t=>{t&&t.asset&&t.asset.copyright&&(t.asset.copyright.split(";").forEach(a=>{ot[a]&&ot[a]--}),e.displayCopyright&&kr())}),e.childrenTiles.forEach(t=>t.dispose()),e.deleted=!0,e.splatsMesh&&(e.meshContent.forEach(t=>t.hide()),e.parentTile||(e.splatsMesh.dispose(),e.splatsMesh=void 0)),e.contentURL&&(e.contentURL.forEach(t=>{e.tileLoader.invalidate(t,e.uuid)}),e.contentURL=[]),e.abortController&&!e.jsonRequested&&e.abortController.abort("tile not needed"),this.parent=null,e.meshContent=[],e.bbox&&e.bbox.dispose(),this.dispatchEvent({type:"removed"})}_disposeMeshContent(){const e=this;if(!e.deleted){e.deleted=!0,e.abortController&&(e.abortController.abort("tile not needed"),e.abortController=new AbortController);for(let t=e.meshContent.length-1;t>=0;t--){const a=e.meshContent[t];a&&a.asset&&a.asset.copyright&&(a.asset.copyright.split(";").forEach(n=>{ot[n]&&ot[n]--}),e.displayCopyright&&kr()),e.remove(a)}e.splatsMesh&&e.meshContent.forEach(t=>t.hide()),e.meshContent=[],e.contentURL.forEach(t=>{e.tileLoader.invalidate(t,e.uuid)}),e.contentURL=[]}}_disposeChildren(){var e=this;e.childrenTiles.forEach(t=>{t.dispose(),e.remove(t)}),e.childrenTiles=[]}raycast(e,t){if(this.splatsMesh){ja.copy(e.ray),Ma.copy(this.matrixWorld).invert(),ja.applyMatrix4(Ma);let a=!1;if(this.boundingVolume instanceof at)a=this.boundingVolume.intersectsRay(ja);else{if(!(this.boundingVolume instanceof G.Sphere))return!1;a=ray.intersectsSphere(this.boundingVolume)}return a&&this.materialVisibility&&this.splatsReady&&(Ra.length=0,this.meshContent.forEach(n=>{n.isSplatsBatch&&(n.raycast(ja,Ra,e.params.Points.threshold),Ra.forEach(i=>{i.point.applyMatrix4(this.matrixWorld)}),t.push(...Ra))})),a}return super.raycast(e,t)}update(e){this.splatsMesh&&this.splatsMesh.updateShaderParams(e,this.renderer);const t=new G.Frustum;t.setFromProjectionMatrix(new G.Matrix4().multiplyMatrices(e.projectionMatrix,e.matrixWorldInverse));let a=[0],n=[0],i=[0],o=[0];if(this.refine=="REPLACE"?this.loadingStrategy==="IMMEDIATE"?(this._updateImmediate(e,t),this._statsImmediate(i,a,o,n)):(this._update(e,t),this._stats(i,a,o,n)):(this._update(e,t),this._stats(i,a,o,n)),a>0&&(o[0]/=a[0]),this.splatsMesh)if(Sa.copy(e.position),Ma.copy(this.matrixWorld).invert(),Sa.applyMatrix4(Ma),this.splatsCPUCulling){const s=new G.Matrix4().multiplyMatrices(e.projectionMatrix,e.matrixWorldInverse).multiply(this.matrixWorld);this.splatsMesh.sort(Sa,s)}else this.splatsMesh.sort(Sa);return{numTilesLoaded:a[0],numTilesRendered:n[0],maxLOD:i[0],percentageLoaded:o[0]}}_updateImmediate(e,t){this._computeMetricRecursive(e,t),this._updateNodeVisibilityImmediate(),this._expandTreeImmediate(e),this.shouldBeVisible=this.metric>0||!!this.loadOutsideView,this._shouldBeVisibleUpdateImmediate(),this._trimTreeImmediate(),this._loadMeshImmediate()}_statsImmediate(e,t,a,n){e[0]=Math.max(e[0],this.level),(this.shouldBeVisible||this.materialVisibility)&&(t[0]++,this.materialVisibility&&a[0]++),this.materialVisibility&&n[0]++,this.childrenTiles.forEach(i=>{i._statsImmediate(e,t,a,n)})}_stats(e,t,a,n){e[0]=Math.max(e[0],this.level),this.hasMeshContent&&(t[0]++,this.meshContent.length==this.hasMeshContent&&a[0]++,this.materialVisibility&&n[0]++),this.childrenTiles.forEach(i=>{i._stats(e,t,a,n)})}_trimTreeImmediate(){if(this.metric!=null)if(this.hasMeshContent&&this.shouldBeVisible&&this.materialVisibility){if(self.splatsMesh&&!self.splatsReady)return;this._disposeChildren()}else this.childrenTiles.forEach(e=>{e._trimTreeImmediate()})}_updateNodeVisibilityImmediate(e=!1){const t=this;if(t.hasMeshContent)if(t.shouldBeVisible)t.meshContent.length==t.hasMeshContent?t.materialVisibility?t.childrenTiles.forEach(a=>{a._updateNodeVisibilityImmediate(!0)}):(t._changeContentVisibility(!0),t.childrenTiles.forEach(a=>{a._updateNodeVisibilityImmediate(e)})):t.childrenTiles.forEach(a=>{a._updateNodeVisibilityImmediate(e)});else{if(!t.loadOutsideView&&t.metric<0)return t._changeContentVisibility(!1),t.meshContent.length>0&&t._disposeMeshContent(),void t.childrenTiles.forEach(a=>{a._updateNodeVisibilityImmediate(!0)});if(!t.materialVisibility||t.splatsMesh&&!t.splatsReady)t.childrenTiles.forEach(a=>{a._updateNodeVisibilityImmediate(e)});else if(e)t._changeContentVisibility(!1),t.meshContent.length>0&&t._disposeMeshContent(),t.childrenTiles.forEach(a=>{a._updateNodeVisibilityImmediate(e)});else{let a=!0;t.childrenTiles.every(n=>!!n._isReadyImmediate()||(a=!1,!1)),a&&t.childrenTiles.length>0?(t._changeContentVisibility(!1),t.meshContent.length>0&&t._disposeMeshContent(),t.childrenTiles.forEach(n=>{n._updateNodeVisibilityImmediate(e)})):t.childrenTiles.forEach(n=>{n._updateNodeVisibilityImmediate(!t.splatsMesh||!!t.splatsReady)})}}else t.childrenTiles.forEach(a=>{a._updateNodeVisibilityImmediate(e)})}_shouldBeVisibleUpdateImmediate(){const e=this;e.hasMeshContent?e.metric==null?e.shouldBeVisible=!1:e.metric<0?(e.shouldBeVisible=!!e.loadOutsideView,e.childrenTiles.forEach(t=>{t._setShouldNotBeVisibleRecursive()})):e.metric<e.geometricErrorMultiplier*e.geometricError?e.hasUnloadedJSONContent||(e.json&&e.json.children&&e.json.children.length>0?(e.shouldBeVisible=!1,e.childrenTiles.forEach(t=>{t.shouldBeVisible=!0,t._shouldBeVisibleUpdateImmediate()})):e.shouldBeVisible=!0):e.childrenTiles.forEach(t=>{t._setShouldNotBeVisibleRecursive()}):(e.childrenTiles.forEach(t=>{t.shouldBeVisible=!0,t._shouldBeVisibleUpdateImmediate()}),e.shouldBeVisible=!1)}_setShouldNotBeVisibleRecursive(){this.shouldBeVisible=!1,this.childrenTiles.forEach(e=>{e._setShouldNotBeVisibleRecursive()})}_loadMeshImmediate(){const e=this;e.hasMeshContent&&e.shouldBeVisible?e.meshContent.length<e.hasMeshContent&&e.contentURL.length==0&&(e.deleted=!1,e._load(!1,!0)):e.childrenTiles.forEach(t=>{t._loadMeshImmediate()})}_computeMetricRecursive(e,t){const a=this;a.metric=-1,a.isSetup&&(a.boundingVolume&&a.geometricError&&(a.metric=a._calculateUpdateMetric(e,t)),a.childrenTiles.forEach(n=>n._computeMetricRecursive(e,t)))}_expandTreeImmediate(e){const t=this;t.hasUnloadedJSONContent||(t.hasMeshContent?t.occlusionCullingService&&t.hasMeshContent&&!t.occlusionCullingService.hasID(t.colorID)||t.metric>=0&&t.metric<t.geometricErrorMultiplier*t.geometricError&&t.json&&t.json.children&&t.childrenTiles.length<t.json.children.length&&t._loadJsonChildren(e):t.json&&t.json.children&&t.childrenTiles.length<t.json.children.length&&t._loadJsonChildren(e)),t.childrenTiles.forEach(a=>a._expandTreeImmediate(e))}_update(e,t){const a=this;if(!a.isSetup)return;const n=a.materialVisibility;a.boundingVolume&&a.geometricError&&(a.metric=a._calculateUpdateMetric(e,t)),a.childrenTiles.forEach(i=>i._update(e,t)),function(i){if(i<0)return a.inFrustum=!1,void a._changeContentVisibility(!!a.loadOutsideView);if(a.inFrustum=!0,!!a.hasMeshContent&&!(a.meshContent.length<a.hasMeshContent)){if(a.childrenTiles.length==0)return void a._changeContentVisibility(!0);if(i>=a.geometricErrorMultiplier*a.geometricError)a._changeContentVisibility(!0);else if(i<a.geometricErrorMultiplier*a.geometricError&&a.refine=="REPLACE"){let o=!0;a.childrenTiles.every(s=>!!s._isReady()||(o=!1,!1)),o?a._changeContentVisibility(!1):a._changeContentVisibility(!0)}}}(a.metric),function(i){i<0&&a.hasMeshContent||a.occlusionCullingService&&a.hasMeshContent&&!a.occlusionCullingService.hasID(a.colorID)||(!a.hasMeshContent||i<=a.geometricErrorMultiplier*a.geometricError&&(a.meshContent.length>0||a.splatsMesh))&&a.json&&a.json.children&&a.childrenTiles.length!=a.json.children.length&&a._loadJsonChildren(e)}(a.metric),function(i,o){if(a.hasMeshContent){if(!a.inFrustum)return void a._disposeChildren();if(a.occlusionCullingService&&!o&&a.hasMeshContent&&a.meshContent.length>0&&a.materialVisibility&&a._areAllChildrenLoadedAndHidden())return a.splatsMesh&&this.materialVisibility&&!a.splatsReady?void 0:void a._disposeChildren();if(i>=a.geometricErrorMultiplier*a.geometricError){if(a.splatsMesh&&a.materialVisibility&&!a.splatsReady)return;a._disposeChildren()}}}(a.metric,n)}_loadJsonChildren(e){const t=this;for(let a=t.json.children.length-1;a>=0;a--)t.json.children[a].root||t.json.children[a].children||t.json.children[a].getChildren||t.json.children[a].content||t.json.children[a].contents||t.json.children.splice(a,1);t.json.children.forEach(a=>{let n=new Qr({parentTile:t,queryParams:t.queryParams,parentGeometricError:t.geometricError,parentBoundingVolume:t.boundingVolume,parentRefine:t.refine,json:a,rootPath:t.rootPath,geometricErrorMultiplier:t.geometricErrorMultiplier,loadOutsideView:t.loadOutsideView,level:Math.floor(t.level)+1,tileLoader:t.tileLoader,cameraOnLoad:e,occlusionCullingService:t.occlusionCullingService,renderer:t.renderer,static:t.static,centerModel:!1,displayErrors:t.displayErrors,displayCopyright:t.displayCopyright,distanceBias:t.distanceBias,loadingStrategy:t.loadingStrategy,drawBoundingVolume:t.drawBoundingVolume,splatsMesh:t.splatsMesh});t.childrenTiles.push(n),t.add(n)}),t.updateMatrices(!0)}_areAllChildrenLoadedAndHidden(){let e=!0;const t=this;return this.childrenTiles.every(a=>{if(a.hasMeshContent){if(a.childrenTiles.length>0)return e=!1,!1;if(!a.metric<0)return!0;if(a.materialVisibility&&(!t.splatsMesh||t.splatsReady)||t.occlusionCullingService.hasID(a.colorID))return e=!1,!1}else if(!a._areAllChildrenLoadedAndHidden())return e=!1,!1;return!0}),e}_isReady(){if(this.metric==null)return!1;if(this.metric<0)return!0;if(this.hasUnloadedJSONContent)return!1;if(!this.hasMeshContent&&this.json.children.length==0&&!this.hasUnloadedJSONContent)return!0;if(!this.hasMeshContent||this.meshContent.length==0||!this.materialVisibility){if(this.children.length>0){var e=!0;return this.childrenTiles.every(t=>!!t._isReady()||(e=!1,!1)),e}return!1}return!this.hasMeshContent||!(this.meshContent.length<this.hasMeshContent)&&!!this.materialVisibility}_isReadyImmediate(){if(this.materialVisibility||!this.loadOutsideView&&this.metric<0)return!0;if(this.childrenTiles.length>0){var e=!0;return this.childrenTiles.every(t=>!!t._isReadyImmediate()||(e=!1,!1)),e}return!1}_changeContentVisibility(e){const t=this;if(t.bbox&&(t.bbox.material.visible=e),t.splatsMesh)e!=t.materialVisibility&&(t.meshContent.forEach(a=>{e&&a.isSplatsBatch?a.show(()=>{t.materialVisibility&&(t.splatsReady=!0)}):(a.hide(),t.splatsReady=!1)}),t.materialVisibility=e);else{if(t.hasMeshContent&&t.meshContent.length>0&&(e?t.meshContent.forEach(a=>{a.traverse(n=>{(n.isMesh||n.isPoints)&&n.layers.enable(0)})}):t.meshContent.forEach(a=>{a.traverse(n=>{(n.isMesh||n.isPoints)&&n.layers.disable(0)})})),t.materialVisibility==e)return;t.materialVisibility=e}}_calculateUpdateMetric(e,t){let a=0;if(this.boundingVolume instanceof at){if(jt.copy(this.boundingVolume),jt.applyMatrix4(this.matrixWorld),!jt.inFrustum(t))return-1;a=Math.max(0,jt.distanceToPoint(e.position)-e.near)}else{if(!(this.boundingVolume instanceof G.Sphere))return console.error("unsupported shape"),-1;if(bt.copy(this.boundingVolume),bt.applyMatrix4(this.matrixWorld),!t.intersectsSphere(bt))return-1;a=Math.max(0,e.position.distanceTo(bt.center)-bt.radius-e.near)}if(a=Math.pow(a,this.distanceBias),a==0)return 0;const n=this.matrixWorld.getMaxScaleOnAxis();this.renderer&&this.renderer.getDrawingBufferSize(this.rendererSize);let i=this.rendererSize.y,o=e.fov;return e.aspect<1&&(o*=e.aspect,i=this.rendererSize.x),16*(2*Math.tan(.5*o*.017453292519943295)*a)/(i*n)}_getSiblings(){const e=this,t=[];if(!e.parentTile)return t;let a=e.parentTile;for(;!a.hasMeshContent&&a.parentTile;)a=a.parentTile;return a.childrenTiles.forEach(n=>{if(n&&n!=e){for(;!n.hasMeshContent&&n.childrenTiles[0];)n=n.childrenTiles[0];t.push(n)}}),t}_calculateDistanceToCamera(e){return this.boundingVolume instanceof at?(jt.copy(this.boundingVolume),jt.applyMatrix4(this.matrixWorld),Math.max(0,jt.distanceToPoint(e.position))):this.boundingVolume instanceof G.Sphere?(bt.copy(this.boundingVolume),bt.applyMatrix4(this.matrixWorld),Math.max(0,e.position.distanceTo(bt.center)-bt.radius)):(console.error("unsupported shape"),-1)}setGeometricErrorMultiplier(e){this.geometricErrorMultiplier=e,this.childrenTiles.forEach(t=>t.setGeometricErrorMultiplier(e))}setDistanceBias(e){this.distanceBias=e,this.childrenTiles.forEach(t=>t.setDistanceBias(e))}_transformWGS84ToCartesian(e,t,a,n){const i=6378137/Math.sqrt(1-.006694384442042*Math.pow(Math.sin(t),2)),o=Math.cos(t),s=Math.cos(e),A=Math.sin(t),u=i+a,c=u*o*s,d=u*o*Math.sin(e),l=(.993305615557957*i+a)*A;n.set(c,d,l)}hideCopyright(){(function(){oe||((oe=document.createElement("div")).style.position="fixed",oe.style.bottom="20px",oe.style.left="20px",oe.style.color="white",oe.style.textShadow="2px 2px 0 #000, -1px -1px 0 #000, 1px -1px 0 #000, -1px 1px 0 #000, 1px 1px 0 #000",oe.style.padding="10px",oe.style.backgroundColor="rgba(0, 0, 0, 0.1)",document.body.appendChild(oe)),oe.style.opacity=0})()}showCopyright(){(function(){oe||((oe=document.createElement("div")).style.position="fixed",oe.style.bottom="20px",oe.style.left="20px",oe.style.color="white",oe.style.textShadow="2px 2px 0 #000, -1px -1px 0 #000, 1px -1px 0 #000, -1px 1px 0 #000, 1px 1px 0 #000",oe.style.padding="10px",oe.style.backgroundColor="rgba(0, 0, 0, 0.1)",document.body.appendChild(oe)),oe.style.opacity=1})()}}function Ki(r){var e=document.createElement("div");e.textContent=r,e.style.position="fixed",e.style.top="10px",e.style.left="50%",e.style.transform="translateX(-50%)",e.style.padding="10px",e.style.backgroundColor="#ff8800",e.style.color="#ffffff",e.style.zIndex="9999",document.body.appendChild(e),setTimeout(function(){e.remove()},8e3)}function kr(){oe||((oe=document.createElement("div")).style.position="fixed",oe.style.bottom="20px",oe.style.left="20px",oe.style.color="white",oe.style.textShadow="2px 2px 0 #000, -1px -1px 0 #000, 1px -1px 0 #000, -1px 1px 0 #000, 1px 1px 0 #000",oe.style.padding="10px",oe.style.backgroundColor="rgba(0, 0, 0, 0.1)",document.body.appendChild(oe));const r=Ji();let e="";r.forEach(t=>{e+=t+", "}),e=e.slice(0,-2),oe.textContent=e}const ze=new G.Sphere(new G.Vector3(0,0,0),1),yt=new G.Vector3(0,0,0),jr=new G.Vector3(0,0,0),bc=new G.Vector3(0,1,0),Mr=new G.Vector2,Vi=new G.Quaternion,Wi=new G.Matrix4;class Sr extends G.Object3D{constructor(e){super();const t=this;if(e.queryParams&&(this.queryParams={...e.queryParams}),this.uuid=qr(),e.tileLoader?this.tileLoader=e.tileLoader:console.error("an instanced tileset must be provided an InstancedTilesetLoader"),this.master=e.master,this.loadOutsideView=e.loadOutsideView,this.cameraOnLoad=e.cameraOnLoad,this.parentTile=e.parentTile,this.distanceBias=Math.max(1e-4,e.distanceBias?e.distanceBias:1),this.childrenTiles=[],this.jsonChildren=[],this.meshContent=new Set,this.static=e.static,this.static&&(this.matrixAutoUpdate=!1,this.matrixWorldAutoUpdate=!1),this.tileContent,this.refinement,this.rootPath,this.geometricError,this.boundingVolume,this.json,this.materialVisibility=!1,this.inFrustum=!0,this.level=e.level?e.level:0,this.hasMeshContent=0,this.hasUnloadedJSONContent=0,this.centerModel=e.centerModel,this.deleted=!1,this.abortController=new AbortController,e.json)this.rootPath=e.json.rootPath?e.json.rootPath:e.rootPath,e.json.children&&(this.jsonChildren=e.json.children),t.setup(e);else if(e.url){this.loadJson=(i,o)=>{const s=ft.dirname(o);t.setup({rootPath:s,json:i,onLoadCallback:e.onLoadCallback})};var a=e.url;if(t.queryParams){var n="";for(let i in t.queryParams)t.queryParams.hasOwnProperty(i)&&(n+="&"+i+"="+t.queryParams[i]);a.includes("?")?a+=n:a+="?"+n.substring(1)}t.tileLoader.get(t.abortController,a,t.uuid,t)}}async setup(e){const t=this;e.json.root?(t.json=e.json.root,!t.json.children&&t.json.getChildren&&(t.json.children=await t.json.getChildren()),t.jsonChildren=t.json.children,t.json.refinement||(t.json.refinement=e.json.refinement),t.json.geometricError||(t.json.geometricError=e.json.geometricError),t.json.transform||(t.json.transform=e.json.transform),t.json.boundingVolume||(t.json.boundingVolume=e.json.boundingVolume)):(t.json=e.json,!t.json.children&&t.json.getChildren&&(t.json.children=await t.json.getChildren(),t.jsonChildren=t.json.children)),t.rootPath=e.json.rootPath?e.json.rootPath:e.rootPath,t.json.refinement?t.refinement=t.json.refinement:t.refinement=e.parentRefinement,t.json.geometricError?t.geometricError=t.json.geometricError:t.geometricError=e.parentGeometricError;let a=new G.Matrix4;if(t.json.transform&&!t.centerModel&&(a.elements=t.json.transform),t.applyMatrix4(a),t.parentTile&&t.parentTile.matrix&&(t.matrix.premultiply(t.parentTile.matrix),t.matrix.decompose(t.position,t.quaternion,t.scale)),t.matrixWorldNeedsUpdate=!0,t.updateWorldMatrix(!0,!0),t.json.boundingVolume)if(t.json.boundingVolume.box)t.boundingVolume=new at(t.json.boundingVolume.box);else if(t.json.boundingVolume.region){const i=t.json.boundingVolume.region;t.transformWGS84ToCartesian(i[0],i[1],i[4],yt),t.transformWGS84ToCartesian(i[2],i[3],i[5],jr),yt.lerp(jr,.5),t.boundingVolume=new G.Sphere(new G.Vector3(yt.x,yt.y,yt.z),yt.distanceTo(jr))}else if(t.json.boundingVolume.sphere){const i=t.json.boundingVolume.sphere;t.boundingVolume=new G.Sphere(new G.Vector3(i[0],i[1],i[2]),i[3])}else t.boundingVolume=e.parentBoundingVolume;else t.boundingVolume=e.parentBoundingVolume;function n(i){i.uri&&i.uri.includes("json")||i.url&&i.url.includes("json")?t.hasUnloadedJSONContent++:t.hasMeshContent++}if(t.json.content?(n(t.json.content),t.load()):t.json.contents&&(t.json.contents.forEach(i=>n(i)),t.load()),t.centerModel){const i=new G.Sphere;t.boundingVolume instanceof at?i.copy(t.boundingVolume.sphere):t.boundingVolume instanceof G.Sphere&&i.copy(t.boundingVolume),this.json.boundingVolume.region&&(t.transformWGS84ToCartesian(.5*(t.json.boundingVolume.region[0]+t.json.boundingVolume.region[2]),.5*(t.json.boundingVolume.region[1]+t.json.boundingVolume.region[3]),.5*(t.json.boundingVolume.region[4]+t.json.boundingVolume.region[5]),yt),Vi.setFromUnitVectors(yt.normalize(),bc.normalize()),t.master.applyQuaternion(Vi),t.master.updateWorldMatrix(!1,!1)),Wi.makeTranslation(-i.center.x*t.scale.x,-i.center.y*t.scale.y,-i.center.z*t.scale.z),t.master.matrix.multiply(Wi),t.master.matrix.decompose(t.master.position,t.master.quaternion,t.master.scale)}t.isSetup=!0,e.onLoadCallback&&e.onLoadCallback(t)}isAbsolutePathOrURL(e){const t=/^(?:http|https|ftp|tcp|udp):\/\/\S+/.test(e),a=e.startsWith("/")&&!e.startsWith("//");return t||a}assembleURL(e,t){e.endsWith("/")||(e+="/");const a=new URL(e);let n=a.pathname.split("/").filter(o=>o!==""),i=t.split("/").filter(o=>o!=="");for(let o=1;o<=n.length&&!(o>=i.length);o++)if(n.slice(n.length-o,n.length).join("/")===i.slice(0,o).join("/")){for(let s=0;s<o;s++)n.pop();break}for(;i.length>0&&i[0]==="..";)n.pop(),i.shift();return`${a.protocol}//${a.host}/${[...n,...i].join("/")}`}extractQueryParams(e,t){const a=new URL(e);for(let[n,i]of a.searchParams)t[n]=i;return a.search="",a.toString()}load(){var e=this;function t(a){let n;a.uri?n=a.uri:a.url&&(n=a.url);const i=/^(?:http|https|ftp|tcp|udp):\/\/\S+/;if(i.test(e.rootPath)?i.test(n)||(n=e.assembleURL(e.rootPath,n)):ft.isAbsolute(e.rootPath)&&(n=e.rootPath+ft.sep+n),n=e.extractQueryParams(n,e.queryParams),e.queryParams){var o="";for(let s in e.queryParams)e.queryParams.hasOwnProperty(s)&&(o+="&"+s+"="+e.queryParams[s]);n.includes("?")?n+=o:n+="?"+o.substring(1)}n&&(n.includes(".b3dm")||n.includes(".glb")||n.includes(".gltf")?(e.contentURL=n,e.tileLoader.get(e.abortController,n,e.uuid,e,e.cameraOnLoad?()=>e.calculateDistanceToCamera(e.cameraOnLoad):()=>0,()=>e.getSiblings(),e.level,!e.json.boundingVolume.region,!!e.json.boundingVolume.region,e.geometricError)):n.includes(".json")&&e.tileLoader.get(e.abortController,n,e.uuid,e))}e.deleted||(e.json.content?t(e.json.content):e.json.contents&&e.json.contents.forEach(a=>t(a)))}loadMesh(e){this.deleted||this.meshContent.add(e)}loadJson(e,t){this.deleted||(this.json.children&&(this.jsonChildren=this.json.children),e.rootPath=ft.dirname(t),this.jsonChildren.push(e),this.hasUnloadedJSONContent--)}dispose(){const e=this;e.childrenTiles.forEach(t=>t.dispose()),e.deleted=!0,e.abortController&&e.abortController.abort(),this.parent=null,this.parentTile=null,this.dispatchEvent({type:"removed"})}disposeChildren(){this.childrenTiles.forEach(e=>e.dispose()),this.childrenTiles=[]}_update(e,t){const a=this;function n(i){if(a.hasMeshContent&&!(a.meshContent.size<a.hasMeshContent)){if(i<0)return a.inFrustum=!1,void a.changeContentVisibility(!!a.loadOutsideView);if(a.inFrustum=!0,a.childrenTiles.length!=0){if(i>=a.master.geometricErrorMultiplier*a.geometricError)a.changeContentVisibility(!0);else if(i<a.master.geometricErrorMultiplier*a.geometricError){let o=!0;a.childrenTiles.every(s=>!!s.isReady()||(o=!1,!1)),o&&a.changeContentVisibility(!1)}}else a.changeContentVisibility(!0)}}a.isSetup&&(a.materialVisibility,a.boundingVolume&&a.geometricError&&(a.metric=a.calculateUpdateMetric(e,t)),a.childrenTiles.forEach(i=>i._update(e,t)),n(a.metric),function(i){i<0&&a.hasMeshContent||(!a.hasMeshContent&&a.rootPath||i<a.master.geometricErrorMultiplier*a.geometricError&&a.meshContent.size>0)&&a.json&&a.jsonChildren&&a.childrenTiles.length!=a.jsonChildren.length&&a.jsonChildren.forEach(o=>{if(!(o.root||o.children||o.getChildren||o.content||o.contents))return;let s=new Sr({parentTile:a,queryParams:a.queryParams,parentGeometricError:a.geometricError,parentBoundingVolume:a.boundingVolume,parentRefinement:a.refinement,json:o,rootPath:a.rootPath,loadOutsideView:a.loadOutsideView,level:a.level+1,tileLoader:a.tileLoader,cameraOnLoad:e,master:a.master,centerModel:!1});a.childrenTiles.push(s)})}(a.metric),function(i){if(a.hasMeshContent){if(!a.inFrustum)return a.disposeChildren(),void n(i);i>=a.master.geometricErrorMultiplier*a.geometricError&&(a.disposeChildren(),n(i))}}(a.metric))}areAllChildrenLoadedAndHidden(){let e=!0;return this.childrenTiles.every(t=>{if(t.hasMeshContent){if(t.childrenTiles.length>0)return e=!1,!1;if(!t.inFrustum)return!0;if(!t.materialVisibility||t.meshesToDisplay!=t.meshesDisplayed)return e=!1,!1}else if(!t.areAllChildrenLoadedAndHidden())return e=!1,!1;return!0}),e}isReady(){if(!this.inFrustum)return!0;if(this.hasUnloadedJSONContent)return!1;if(!this.hasMeshContent||this.meshContent.size==0||!this.materialVisibility){if(this.childrenTiles.length>0){var e=!0;return this.childrenTiles.every(t=>!!t.isReady()||(e=!1,!1)),e}return!1}return!this.hasMeshContent||!(this.meshContent.size<this.hasMeshContent)&&!!this.materialVisibility}changeContentVisibility(e){this.materialVisibility=e}calculateUpdateMetric(e,t){if(this.boundingVolume instanceof at){if(ze.copy(this.boundingVolume.sphere),ze.applyMatrix4(this.matrixWorld),!t.intersectsSphere(ze))return-1}else{if(!(this.boundingVolume instanceof G.Sphere))return console.error("unsupported shape"),-1;if(ze.copy(this.boundingVolume),ze.applyMatrix4(this.matrixWorld),!t.intersectsSphere(ze))return-1}let a=Math.max(0,e.position.distanceTo(ze.center)-ze.radius);if(a=Math.pow(a,this.distanceBias),a==0)return 0;const n=this.matrixWorld.getMaxScaleOnAxis();this.master._renderSize(Mr);let i=Mr.y,o=e.fov;e.aspect<1&&(o*=e.aspect,i=Mr.x);let s=2*Math.tan(.5*o*.017453292519943295)*a;return 16*window.devicePixelRatio*s/(i*n)}getSiblings(){const e=this,t=[];if(!e.parentTile)return t;let a=e.parentTile;for(;!a.hasMeshContent&&a.parentTile;)a=a.parentTile;return a.childrenTiles.forEach(n=>{if(n&&n!=e){for(;!n.hasMeshContent&&n.childrenTiles[0];)n=n.childrenTiles[0];t.push(n)}}),t}calculateDistanceToCamera(e){return this.boundingVolume instanceof at?(ze.copy(this.boundingVolume.sphere),ze.applyMatrix4(this.matrixWorld)):this.boundingVolume instanceof G.Sphere?(ze.copy(this.boundingVolume),ze.applyMatrix4(this.matrixWorld)):console.error("unsupported shape"),Math.max(0,e.position.distanceTo(ze.center)-ze.radius)}getWorldMatrix(){return this.matrixWorld}transformWGS84ToCartesian(e,t,a,n){const i=6378137/Math.sqrt(1-.006694384442042*Math.pow(Math.sin(t),2)),o=Math.cos(t),s=Math.cos(e),A=Math.sin(t),u=i+a,c=u*o*s,d=u*o*Math.sin(e),l=(.993305615557957*i+a)*A;n.set(c,d,l)}}class lc extends G.Object3D{constructor(e){super(),e.master=this,e.domWidth&&e.domHeight?this.rendererSize=new G.Vector2(e.domWidth,e.domHeight):this.rendererSize=new G.Vector2(1e3,1e3),this.renderer=e.renderer,this.distanceBias=Math.max(1e-4,e.distanceBias?e.distanceBias:1),this.geometricErrorMultiplier=e.geometricErrorMultiplier?e.geometricErrorMultiplier:1,this.tileset=new Sr(e),e.static&&(this.matrixAutoUpdate=!1),this.tileLoader=e.tileLoader}_renderSize(e){this.renderer?this.renderer.getDrawingBufferSize(e):e.copy(this.rendererSize)}setCanvasSize(e,t){this.rendererSize.set(e,t)}update(e,t){if(t)this.tileset._update(e,t);else{const a=new G.Frustum;a.setFromProjectionMatrix(new G.Matrix4().multiplyMatrices(e.projectionMatrix,e.matrixWorldInverse)),this.tileset._update(e,a)}}setGeometricErrorMultiplier(e){this.geometricErrorMultiplier=e||1}}class gc{constructor(e){const t=this;t.scene=e,t.instancedTiles=[],t.instancedMesh,t.reuseableMatrix=new G.Matrix4}addInstance(e){const t=this;e.added=!0,e.listOMesh=t.instancedTiles,t.instancedTiles.push(e),t.instancedMesh&&e.loadMesh(t.instancedMesh)}addToScene(){const e=this;e.instancedMesh.setMatrixAt(0,new G.Matrix4),e.instancedMesh.instanceMatrix.needsUpdate=!0,e.instancedMesh.count=1,e.scene.add(e.instancedMesh),e.instancedMesh.onAfterRender=()=>{delete e.instancedMesh.onAfterRender,e.instancedMesh.displayedOnce=!0}}setObject(e){const t=this;t.instancedMesh=e,t.instancedMesh.matrixAutoUpdate=!1,t.instancedMesh.matrixWorldAutoUpdate=!1,t.scene.children.includes(e)||this.addToScene();for(let a=0;a<t.instancedTiles.length;a++)t.instancedTiles[a].loadMesh(t.instancedMesh)}update(){const e=this;for(let t=e.instancedTiles.length-1;t>=0;t--)e.instancedTiles[t].deleted&&e.instancedTiles.splice(t,1);if(e.instancedMesh){e.instancedMesh.count=0,e.instancedMesh.instancedTiles=[];for(let t=0;t<e.instancedTiles.length;t++)e.instancedTiles[t].meshContent.add(e.instancedMesh),e.instancedTiles[t].materialVisibility&&(e.instancedMesh.count++,e.reuseableMatrix.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),e.reuseableMatrix.multiply(e.instancedTiles[t].matrixWorld),e.reuseableMatrix.multiply(e.instancedMesh.baseMatrix),e.instancedMesh.setMatrixAt(e.instancedMesh.count-1,e.reuseableMatrix),e.instancedMesh.instancedTiles.push(e.instancedTiles[t]));e.instancedMesh.instanceMatrix.needsUpdate=!0,e.instancedMesh.needsUpdate=!0,e.instancedMesh.computeBoundingSphere()}}getCount(){return this.instancedTiles.length}dispose(){const e=this;return!(e.instancedTiles.length>0)&&!!e.instancedMesh&&(e.scene.remove(e.instancedMesh),e.instancedMesh.traverse(t=>{if(t.dispose&&t.dispose(),t.material)if(t.material.length)for(let a=0;a<t.material.length;++a)t.material[a].dispose();else t.material.dispose();t.geometry&&t.geometry.dispose()}),e.instancedMesh.dispose(),!0)}}class fc{constructor(){const e=this;e.count=0,e.json,e.instancedTiles=[]}addInstance(e){this.instancedTiles.push(e),this.json&&e.loadJson(this.json,this.url)}setObject(e,t){const a=this;a.json=e,a.url=t;for(let n=0;n<a.instancedTiles.length;n++)a.instancedTiles[n].loadJson(a.json,a.url)}getCount(){return this.instancedTiles.length}update(){const e=this;for(let t=e.instancedTiles.length-1;t>=0;t--)e.instancedTiles[t].deleted&&e.instancedTiles.splice(t,1)}dispose(){return!(!this.json||this.instancedTiles.length!=0)}}let Mt=0;async function pc(r){return new Promise(e=>{const t=setInterval(()=>{r.hasDracoLoader&&!r.dracoLoader||r.hasKTX2Loader&&!r.ktx2Loader||(clearInterval(t),e())},10)})}ve.InstancedOGC3DTile=lc,ve.InstancedTileLoader=class{constructor(r,e){if(this.zUpToYUpMatrix=new G.Matrix4,this.zUpToYUpMatrix.set(1,0,0,0,0,0,-1,0,0,1,0,0,0,0,0,1),this.maxCachedItems=100,this.maxInstances=1,this.proxy=e.proxy,e&&(this.meshCallback=e.meshCallback,this.pointsCallback=e.pointsCallback,e.maxCachedItems&&(this.maxCachedItems=e.maxCachedItems),e.maxInstances&&(this.maxInstances=e.maxInstances)),this.gltfLoader=new Jr,e&&e.dracoLoader)this.gltfLoader.setDRACOLoader(e.dracoLoader),this.hasDracoLoader=!0;else{const t=new Zr;t.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.4.3/"),this.gltfLoader.setDRACOLoader(t),this.gltfLoader.hasDracoLoader=!0}if(e&&e.ktx2Loader)this.gltfLoader.setKTX2Loader(e.ktx2Loader),this.hasKTX2Loader=!0;else if(e&&e.renderer){const t=new Pe;t.setTranscoderPath("https://storage.googleapis.com/ogc-3d-tiles/basis/").detectSupport(e.renderer),this.gltfLoader.setKTX2Loader(t),this.gltfLoader.hasKTX2Loader=!0}this.gltfLoader.setMeshoptDecoder(In),this.hasMeshOptDecoder=!0,this.b3dmDecoder=new zr(this.gltfLoader),this.cache=new Gr,this.scene=r,this.ready=[],this.downloads=[],this.nextReady=[],this.nextDownloads=[]}update(){const r=this;r._checkSize(),r.cache._data.forEach(e=>{e.update()}),Mt<8&&r._download(),r._loadBatch()}_download(){const r=this;if(r.nextDownloads.length!=0||(r._getNextDownloads(),r.nextDownloads.length!=0))for(;r.nextDownloads.length>0;){const t=r.nextDownloads.shift();if(t){if(t.path.includes(".b3dm")&&(e=r.proxy?()=>fetch(r.proxy,{method:"POST",body:t.path}):()=>fetch(t.path),Mt++,e().then(a=>{if(!a.ok)throw console.error("could not load tile with path : "+t.path),new Error(`couldn't load "${t.path}". Request failed with status ${a.status} : ${a.statusText}`);return a.arrayBuffer()}).then(a=>this.b3dmDecoder.parseB3DMInstanced(a,n=>{r.meshCallback(n,t.geometricError)},r.maxInstances,t.sceneZupToYup,t.meshZupToYup)).then(a=>{a.frustumCulled=!1,t.tile.setObject(a),r.ready.unshift(t)}).catch(a=>console.error(a)).finally(()=>{Mt--})),t.path.includes(".glb")||t.path.includes(".gltf"))e=r.proxy?()=>fetch(r.proxy,{method:"POST",body:t.path}):()=>fetch(t.path),Mt++,e().then(a=>{if(!a.ok)throw new Error("missing content");return a.arrayBuffer()}).then(async a=>{await pc(this.gltfLoader),this.gltfLoader.parse(a,null,n=>{let i;n.scene.asset=n.asset,t.sceneZupToYup&&n.scene.applyMatrix4(this.zUpToYUpMatrix),n.scene.traverse(o=>{o.geometricError=t.geometricError,o.isMesh&&(t.meshZupToYup&&o.applyMatrix4(this.zUpToYUpMatrix),r.meshCallback&&r.meshCallback(o,o.geometricError)),o.isPoints&&console.error("instanced point cloud is not supported")}),n.scene.updateWorldMatrix(!1,!0),n.scene.traverse(o=>{o.isMesh&&(i=new G.InstancedMesh(o.geometry,o.material,r.maxInstances),i.baseMatrix=o.matrixWorld)}),r.ready.unshift(t),i?(i.frustumCulled=!1,t.tile.setObject(i)):n.scene.traverse(o=>{o.dispose&&o.dispose(),o.material&&o.material.dispose()})})},a=>{console.error("could not load tile : "+t.path)}).finally(()=>{Mt--});else if(t.path.includes(".json")){var e;e=r.proxy?()=>fetch(r.proxy,{method:"POST",body:t.path}):()=>fetch(t.path),Mt++,e().then(a=>{if(!a.ok)throw console.error("could not load tile with path : "+t.path),new Error(`couldn't load "${t.path}". Request failed with status ${a.status} : ${a.statusText}`);return a.json()}).then(a=>er(a,t.path)).then(a=>{t.tile.setObject(a,t.path),r.ready.unshift(t)}).catch(a=>console.error(a)).finally(()=>{Mt--})}}}}_loadBatch(){return this.nextReady.length==0&&(this._getNextReady(),this.nextReady.length==0)?0:this.nextReady.shift()?1:0}_getNextReady(){let r=Number.MAX_VALUE,e=-1;for(let t=this.ready.length-1;t>=0;t--)this.ready[t].distanceFunction||this.nextReady.push(this.ready.splice(t,1)[0]);if(!(this.nextReady.length>0)){for(let t=this.ready.length-1;t>=0;t--){const a=this.ready[t].distanceFunction()*this.ready[t].level;a<r&&(r=a,e=t)}if(e>=0){const t=this.ready.splice(e,1).pop();this.nextReady.push(t);const a=t.getSiblings();for(let n=this.ready.length-1;n>=0;n--)a.includes(this.ready[n].uuid)&&this.nextready.push(this.ready.splice(n,1).pop())}}}get(r,e,t,a,n,i,o,s,A,u){const c=this,d=function(h){for(var b=h.split("/"),g=[],f=0,m=0;m<b.length;m++){var p=b[m];p!=="."&&p!==""&&p!==".."?g[f++]=p:p===".."&&f>0&&f--}if(f===0)return"/";var C="";for(m=0;m<f;m++)C+="/"+g[m];return C}(e);if(!(e.includes(".b3dm")||e.includes(".json")||e.includes(".glb")||e.includes(".gltf")))return void console.error("the 3DTiles cache can only be used to load B3DM, gltf and json data");const l=c.cache.get(d);if(l)l.addInstance(a);else if(e.includes(".b3dm")||e.includes(".glb")||e.includes(".gltf")){const h=new gc(c.scene);h.addInstance(a),c.cache.put(d,h);const b=new AbortController;r.signal.addEventListener("abort",()=>{h.getCount()==0&&b.abort()}),this.downloads.push({abortController:b,tile:h,key:d,path:e,distanceFunction:n,getSiblings:i,level:o,uuid:t,sceneZupToYup:s,meshZupToYup:A,geometricError:u,shouldDoDownload:()=>!0})}else if(e.includes(".json")){const h=new fc;h.addInstance(a),c.cache.put(d,h);const b=new AbortController;r.signal.addEventListener("abort",()=>{h.getCount()==0&&b.abort()}),this.downloads.push({abortController:b,tile:h,key:d,path:e,distanceFunction:n,getSiblings:i,level:o,shouldDoDownload:()=>!0})}}_getNextDownloads(){let r=Number.MAX_VALUE,e=-1;for(let t=this.downloads.length-1;t>=0;t--){const a=this.downloads[t];a.shouldDoDownload()?a.distanceFunction||this.nextDownloads.push(this.downloads.splice(t,1)[0]):this.downloads.splice(t,1)}if(!(this.nextDownloads.length>0)){for(let t=this.downloads.length-1;t>=0;t--){const a=this.downloads[t],n=a.distanceFunction()*a.level;n<r&&(r=n,e=t)}if(e>=0){const t=this.downloads.splice(e,1).pop();this.nextDownloads.push(t);const a=t.getSiblings();for(let n=this.downloads.length-1;n>=0;n--)a.includes(this.downloads[n].uuid)&&this.nextDownloads.push(this.downloads.splice(n,1).pop())}}}_checkSize(){const r=this;let e=0;for(;r.cache.size()>r.maxCachedItems&&e<r.cache.size();){e++;const t=r.cache.head();r.cache.remove(t.key),t.value.dispose()||r.cache.put(t.key,t.value)}}},ve.OGC3DTile=Qr,ve.OcclusionCullingService=class{constructor(){this.cullMap=[],this.cullMaterial=new G.MeshBasicMaterial({vertexColors:!0}),this.cullMaterial.side=G.FrontSide,this.cullTarget=this._createCullTarget(),this.cullPixels=new Uint8Array(4*this.cullTarget.width*this.cullTarget.height)}setSide(r){this.cullMaterial.side=r}_createCullTarget(){const r=new G.WebGLRenderTarget(Math.floor(.05*window.innerWidth),Math.floor(.05*window.innerHeight));return r.texture.format=G.RGBAFormat,r.texture.colorSpace=G.LinearSRGBColorSpace,r.texture.minFilter=G.NearestFilter,r.texture.magFilter=G.NearestFilter,r.texture.generateMipmaps=!1,r.stencilBuffer=!1,r.depthBuffer=!0,r.depthTexture=new G.DepthTexture,r.depthTexture.format=G.DepthFormat,r.depthTexture.type=G.UnsignedShortType,r}update(r,e,t){let a=e.getRenderTarget(),n=r.overrideMaterial;r.overrideMaterial=this.cullMaterial,e.setRenderTarget(this.cullTarget),e.render(r,t),r.overrideMaterial=n,e.setRenderTarget(a),e.readRenderTargetPixels(this.cullTarget,0,0,this.cullTarget.width,this.cullTarget.height,this.cullPixels),this.cullMap=[];for(let i=0;i<this.cullPixels.length;i+=4){const o=G.MathUtils.clamp(this.cullPixels[i],0,255)<<16^G.MathUtils.clamp(this.cullPixels[i+1],0,255)<<8^G.MathUtils.clamp(this.cullPixels[i+2],0,255);this.cullMap[o]=!0}}hasID(r){return this.cullMap[r]}},ve.TileLoader=Bn,ve.getOGC3DTilesCopyrightInfo=Ji,ve.splatsFragmentShader=zi,ve.splatsVertexShader=Oi,Object.defineProperty(ve,Symbol.toStringTag,{value:"Module"})});
|
|
289
294
|
//# sourceMappingURL=threedtiles.umd.js.map
|