tangram-core 0.2.0__cp313-cp313-win_amd64.whl
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.
- tangram_core/App.vue +335 -0
- tangram_core/__init__.py +5 -0
- tangram_core/__main__.py +141 -0
- tangram_core/_core.cp313-win_amd64.pyd +0 -0
- tangram_core/_core.pyi +38 -0
- tangram_core/api.ts +456 -0
- tangram_core/backend.py +335 -0
- tangram_core/colour.ts +71 -0
- tangram_core/config.py +122 -0
- tangram_core/dist-frontend/aggregation-layers.js +521 -0
- tangram_core/dist-frontend/aggregation-layers.js.map +1 -0
- tangram_core/dist-frontend/assets/_commonjsHelpers-CqkleIqs.js +2 -0
- tangram_core/dist-frontend/assets/_commonjsHelpers-CqkleIqs.js.map +1 -0
- tangram_core/dist-frontend/assets/array-utils-flat-wyE8tIYR.js +11 -0
- tangram_core/dist-frontend/assets/array-utils-flat-wyE8tIYR.js.map +1 -0
- tangram_core/dist-frontend/assets/assert-hrfsarFU.js +3 -0
- tangram_core/dist-frontend/assets/assert-hrfsarFU.js.map +1 -0
- tangram_core/dist-frontend/assets/b612-latin-400-italic-DePNXA0a.woff +0 -0
- tangram_core/dist-frontend/assets/b612-latin-400-italic-a-4GLPtl.woff2 +0 -0
- tangram_core/dist-frontend/assets/b612-latin-400-normal-CC98FVm_.woff2 +0 -0
- tangram_core/dist-frontend/assets/b612-latin-400-normal-JbZ7xwUX.woff +0 -0
- tangram_core/dist-frontend/assets/b612-latin-700-normal-B_Snq1wd.woff +0 -0
- tangram_core/dist-frontend/assets/b612-latin-700-normal-BinQrnoB.woff2 +0 -0
- tangram_core/dist-frontend/assets/clip-extension-DTCP51Ak.js +26 -0
- tangram_core/dist-frontend/assets/clip-extension-DTCP51Ak.js.map +1 -0
- tangram_core/dist-frontend/assets/color-CUNNsFV-.js +17 -0
- tangram_core/dist-frontend/assets/color-CUNNsFV-.js.map +1 -0
- tangram_core/dist-frontend/assets/cube-geometry-CzJ_uBWa.js +2 -0
- tangram_core/dist-frontend/assets/cube-geometry-CzJ_uBWa.js.map +1 -0
- tangram_core/dist-frontend/assets/deep-equal-uriyKJca.js +2 -0
- tangram_core/dist-frontend/assets/deep-equal-uriyKJca.js.map +1 -0
- tangram_core/dist-frontend/assets/fly-to-interpolator-DlKiy9_S.js +2 -0
- tangram_core/dist-frontend/assets/fly-to-interpolator-DlKiy9_S.js.map +1 -0
- tangram_core/dist-frontend/assets/geojson-layer-CLhXLxdI.js +1010 -0
- tangram_core/dist-frontend/assets/geojson-layer-CLhXLxdI.js.map +1 -0
- tangram_core/dist-frontend/assets/globe-view-DKhftlA1.js +94 -0
- tangram_core/dist-frontend/assets/globe-view-DKhftlA1.js.map +1 -0
- tangram_core/dist-frontend/assets/globe-viewport-CPES4D4P.js +2 -0
- tangram_core/dist-frontend/assets/globe-viewport-CPES4D4P.js.map +1 -0
- tangram_core/dist-frontend/assets/image-loader-ClbNCMXW.js +2 -0
- tangram_core/dist-frontend/assets/image-loader-ClbNCMXW.js.map +1 -0
- tangram_core/dist-frontend/assets/inconsolata-latin-400-normal-DTZQ6lD6.woff2 +0 -0
- tangram_core/dist-frontend/assets/inconsolata-latin-400-normal-HYADljCo.woff +0 -0
- tangram_core/dist-frontend/assets/inconsolata-latin-700-normal-ByjKuJjN.woff2 +0 -0
- tangram_core/dist-frontend/assets/inconsolata-latin-700-normal-DzgUY3Rl.woff +0 -0
- tangram_core/dist-frontend/assets/inconsolata-latin-ext-400-normal-BaHVOdFB.woff2 +0 -0
- tangram_core/dist-frontend/assets/inconsolata-latin-ext-400-normal-yvPjCxxx.woff +0 -0
- tangram_core/dist-frontend/assets/inconsolata-latin-ext-700-normal-D0Kpgs_9.woff2 +0 -0
- tangram_core/dist-frontend/assets/inconsolata-latin-ext-700-normal-Dlt-daqV.woff +0 -0
- tangram_core/dist-frontend/assets/inconsolata-vietnamese-400-normal-ByiM2lek.woff +0 -0
- tangram_core/dist-frontend/assets/inconsolata-vietnamese-400-normal-DfC_iMic.woff2 +0 -0
- tangram_core/dist-frontend/assets/inconsolata-vietnamese-700-normal-DLCFFAUf.woff +0 -0
- tangram_core/dist-frontend/assets/inconsolata-vietnamese-700-normal-DuasYmn8.woff2 +0 -0
- tangram_core/dist-frontend/assets/index-UPPakSLR.css +1 -0
- tangram_core/dist-frontend/assets/index-r8T0kY2p.js +821 -0
- tangram_core/dist-frontend/assets/index-r8T0kY2p.js.map +1 -0
- tangram_core/dist-frontend/assets/layer-DO63TrsS.js +555 -0
- tangram_core/dist-frontend/assets/layer-DO63TrsS.js.map +1 -0
- tangram_core/dist-frontend/assets/layer-extension-CZ3zsHuN.js +2 -0
- tangram_core/dist-frontend/assets/layer-extension-CZ3zsHuN.js.map +1 -0
- tangram_core/dist-frontend/assets/mesh-layers-BSECKarm.js +1123 -0
- tangram_core/dist-frontend/assets/mesh-layers-BSECKarm.js.map +1 -0
- tangram_core/dist-frontend/assets/orthographic-viewport-CzZmHDEZ.js +2 -0
- tangram_core/dist-frontend/assets/orthographic-viewport-CzZmHDEZ.js.map +1 -0
- tangram_core/dist-frontend/assets/pick-layers-pass-xhWsgZtf.js +2 -0
- tangram_core/dist-frontend/assets/pick-layers-pass-xhWsgZtf.js.map +1 -0
- tangram_core/dist-frontend/assets/project-CrvReKGW.js +760 -0
- tangram_core/dist-frontend/assets/project-CrvReKGW.js.map +1 -0
- tangram_core/dist-frontend/assets/roboto-condensed-cyrillic-400-italic-4qS3_zkX.woff2 +0 -0
- tangram_core/dist-frontend/assets/roboto-condensed-cyrillic-400-italic-CDK-EZBY.woff +0 -0
- tangram_core/dist-frontend/assets/roboto-condensed-cyrillic-400-normal-Bgns473E.woff +0 -0
- tangram_core/dist-frontend/assets/roboto-condensed-cyrillic-400-normal-_T2aQlWs.woff2 +0 -0
- tangram_core/dist-frontend/assets/roboto-condensed-cyrillic-500-normal-CvEVpWxD.woff +0 -0
- tangram_core/dist-frontend/assets/roboto-condensed-cyrillic-500-normal-s4PklZE0.woff2 +0 -0
- tangram_core/dist-frontend/assets/roboto-condensed-cyrillic-700-normal-9RN-Z7cI.woff2 +0 -0
- tangram_core/dist-frontend/assets/roboto-condensed-cyrillic-700-normal-BGMkBBYx.woff +0 -0
- tangram_core/dist-frontend/assets/roboto-condensed-cyrillic-ext-400-italic-C7erd-g8.woff +0 -0
- tangram_core/dist-frontend/assets/roboto-condensed-cyrillic-ext-400-italic-DR5R5TWx.woff2 +0 -0
- tangram_core/dist-frontend/assets/roboto-condensed-cyrillic-ext-400-normal-DGo1Ayjq.woff2 +0 -0
- tangram_core/dist-frontend/assets/roboto-condensed-cyrillic-ext-400-normal-WtM1l1qc.woff +0 -0
- tangram_core/dist-frontend/assets/roboto-condensed-cyrillic-ext-500-normal-C8FNIdXm.woff2 +0 -0
- tangram_core/dist-frontend/assets/roboto-condensed-cyrillic-ext-500-normal-TLDmfi3Q.woff +0 -0
- tangram_core/dist-frontend/assets/roboto-condensed-cyrillic-ext-700-normal-CTXjXnze.woff2 +0 -0
- tangram_core/dist-frontend/assets/roboto-condensed-cyrillic-ext-700-normal-CWPRiRXS.woff +0 -0
- tangram_core/dist-frontend/assets/roboto-condensed-greek-400-italic-CR6qj4Z4.woff2 +0 -0
- tangram_core/dist-frontend/assets/roboto-condensed-greek-400-italic-DHRaIs10.woff +0 -0
- tangram_core/dist-frontend/assets/roboto-condensed-greek-400-normal-D5vBSIyg.woff2 +0 -0
- tangram_core/dist-frontend/assets/roboto-condensed-greek-400-normal-FabMgVmk.woff +0 -0
- tangram_core/dist-frontend/assets/roboto-condensed-greek-500-normal-BIN62cw9.woff +0 -0
- tangram_core/dist-frontend/assets/roboto-condensed-greek-500-normal-Hsn-wDIp.woff2 +0 -0
- tangram_core/dist-frontend/assets/roboto-condensed-greek-700-normal-89Up2Xly.woff +0 -0
- tangram_core/dist-frontend/assets/roboto-condensed-greek-700-normal-DWMOA2VK.woff2 +0 -0
- tangram_core/dist-frontend/assets/roboto-condensed-latin-400-italic-D_BR-3LG.woff2 +0 -0
- tangram_core/dist-frontend/assets/roboto-condensed-latin-400-italic-om57GXsO.woff +0 -0
- tangram_core/dist-frontend/assets/roboto-condensed-latin-400-normal-BICmKrXV.woff2 +0 -0
- tangram_core/dist-frontend/assets/roboto-condensed-latin-400-normal-D2e7XwB1.woff +0 -0
- tangram_core/dist-frontend/assets/roboto-condensed-latin-500-normal-3p2daRJW.woff2 +0 -0
- tangram_core/dist-frontend/assets/roboto-condensed-latin-500-normal-Dc9bsamC.woff +0 -0
- tangram_core/dist-frontend/assets/roboto-condensed-latin-700-normal-BOl6B_hI.woff +0 -0
- tangram_core/dist-frontend/assets/roboto-condensed-latin-700-normal-DRbp0YnP.woff2 +0 -0
- tangram_core/dist-frontend/assets/roboto-condensed-latin-ext-400-italic-BXrkWnoY.woff +0 -0
- tangram_core/dist-frontend/assets/roboto-condensed-latin-ext-400-italic-Bhem1d5z.woff2 +0 -0
- tangram_core/dist-frontend/assets/roboto-condensed-latin-ext-400-normal-DT8nEsYA.woff +0 -0
- tangram_core/dist-frontend/assets/roboto-condensed-latin-ext-400-normal-OHaX69iP.woff2 +0 -0
- tangram_core/dist-frontend/assets/roboto-condensed-latin-ext-500-normal-CcSTXKtO.woff2 +0 -0
- tangram_core/dist-frontend/assets/roboto-condensed-latin-ext-500-normal-JgPl2bDS.woff +0 -0
- tangram_core/dist-frontend/assets/roboto-condensed-latin-ext-700-normal-B004qtqu.woff2 +0 -0
- tangram_core/dist-frontend/assets/roboto-condensed-latin-ext-700-normal-O6H_RRvN.woff +0 -0
- tangram_core/dist-frontend/assets/roboto-condensed-vietnamese-400-italic-BwUYFJ2t.woff2 +0 -0
- tangram_core/dist-frontend/assets/roboto-condensed-vietnamese-400-italic-DV8QogUk.woff +0 -0
- tangram_core/dist-frontend/assets/roboto-condensed-vietnamese-400-normal-0o1laQ-g.woff2 +0 -0
- tangram_core/dist-frontend/assets/roboto-condensed-vietnamese-400-normal-CPsdS8_S.woff +0 -0
- tangram_core/dist-frontend/assets/roboto-condensed-vietnamese-500-normal-G9shSJ2z.woff +0 -0
- tangram_core/dist-frontend/assets/roboto-condensed-vietnamese-500-normal-TFWhjk13.woff2 +0 -0
- tangram_core/dist-frontend/assets/roboto-condensed-vietnamese-700-normal-BtNeb9D6.woff +0 -0
- tangram_core/dist-frontend/assets/roboto-condensed-vietnamese-700-normal-D35V1G0s.woff2 +0 -0
- tangram_core/dist-frontend/assets/shader-BJmsOfPx.js +843 -0
- tangram_core/dist-frontend/assets/shader-BJmsOfPx.js.map +1 -0
- tangram_core/dist-frontend/assets/solid-polygon-layer-DiarVGxh.js +392 -0
- tangram_core/dist-frontend/assets/solid-polygon-layer-DiarVGxh.js.map +1 -0
- tangram_core/dist-frontend/assets/tesselator-49Dw9L5A.js +2 -0
- tangram_core/dist-frontend/assets/tesselator-49Dw9L5A.js.map +1 -0
- tangram_core/dist-frontend/assets/webgl-developer-tools-CZl8qVFg.js +7 -0
- tangram_core/dist-frontend/assets/webgl-developer-tools-CZl8qVFg.js.map +1 -0
- tangram_core/dist-frontend/assets/webgl-device-BY0-CUP6.js +3 -0
- tangram_core/dist-frontend/assets/webgl-device-BY0-CUP6.js.map +1 -0
- tangram_core/dist-frontend/assets/widget-BbOeHGj0.js +2 -0
- tangram_core/dist-frontend/assets/widget-BbOeHGj0.js.map +1 -0
- tangram_core/dist-frontend/core.js +60 -0
- tangram_core/dist-frontend/core.js.map +1 -0
- tangram_core/dist-frontend/extensions.js +609 -0
- tangram_core/dist-frontend/extensions.js.map +1 -0
- tangram_core/dist-frontend/favicon.ico +0 -0
- tangram_core/dist-frontend/favicon.png +0 -0
- tangram_core/dist-frontend/font-awesome.min.css +4 -0
- tangram_core/dist-frontend/fonts/FontAwesome.otf +0 -0
- tangram_core/dist-frontend/fonts/fontawesome-webfont.eot +0 -0
- tangram_core/dist-frontend/fonts/fontawesome-webfont.svg +2671 -0
- tangram_core/dist-frontend/fonts/fontawesome-webfont.ttf +0 -0
- tangram_core/dist-frontend/fonts/fontawesome-webfont.woff +0 -0
- tangram_core/dist-frontend/fonts/fontawesome-webfont.woff2 +0 -0
- tangram_core/dist-frontend/geo-layers.js +115 -0
- tangram_core/dist-frontend/geo-layers.js.map +1 -0
- tangram_core/dist-frontend/index.html +38 -0
- tangram_core/dist-frontend/json.js +3 -0
- tangram_core/dist-frontend/json.js.map +1 -0
- tangram_core/dist-frontend/layers.js +268 -0
- tangram_core/dist-frontend/layers.js.map +1 -0
- tangram_core/dist-frontend/lit-html.js +7 -0
- tangram_core/dist-frontend/lit-html.js.map +1 -0
- tangram_core/dist-frontend/mapbox.js +2 -0
- tangram_core/dist-frontend/mapbox.js.map +1 -0
- tangram_core/dist-frontend/maplibre-gl.js +59 -0
- tangram_core/dist-frontend/maplibre-gl.js.map +1 -0
- tangram_core/dist-frontend/mesh-layers.js +2 -0
- tangram_core/dist-frontend/mesh-layers.js.map +1 -0
- tangram_core/dist-frontend/rs1090_wasm.js +813 -0
- tangram_core/dist-frontend/rs1090_wasm_bg.wasm +0 -0
- tangram_core/dist-frontend/vue.esm-browser.prod.js +13 -0
- tangram_core/dist-frontend/widgets.js +3 -0
- tangram_core/dist-frontend/widgets.js.map +1 -0
- tangram_core/main.ts +16 -0
- tangram_core/plugin.py +70 -0
- tangram_core/plugin.ts +41 -0
- tangram_core/redis.py +89 -0
- tangram_core/user.css +114 -0
- tangram_core/vite-plugin-tangram.mjs +88 -0
- tangram_core-0.2.0.dist-info/METADATA +37 -0
- tangram_core-0.2.0.dist-info/RECORD +171 -0
- tangram_core-0.2.0.dist-info/WHEEL +4 -0
- tangram_core-0.2.0.dist-info/entry_points.txt +2 -0
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import{C as ar}from"./assets/tesselator-49Dw9L5A.js";import{a as Bn,B as Ih,A as Bh,G as yi,P as Lh}from"./assets/geojson-layer-CLhXLxdI.js";import{ao as Ph,ap as xh,aq as Nh,H as pn,ar as zr,as as Rh,at as Dh,au as Oh,av as kh,aw as Fh,u as mn,m as X0,i as Uh,O as Ct,w as Ws,N as H,ax as Qh,ay as nt,C as St,W as Ys,b as KA,az as Vh,aA as zh,aB as Gh,L as qh,J as Xe,h as Hh,x as Ti}from"./assets/deep-equal-uriyKJca.js";import{g as jh}from"./assets/_commonjsHelpers-CqkleIqs.js";import{M as he,Q as wn,S as J0,p as Wh,a as Yh,b as vi,D as Zh,G as Za,c as Xa,g as Ja,d as Xh}from"./assets/mesh-layers-BSECKarm.js";import{G as Jh}from"./assets/globe-viewport-CPES4D4P.js";import{o as Kh,f as $h,a as ce,l as Cr,p as Ka,s as A2,q as e2}from"./assets/webgl-developer-tools-CZl8qVFg.js";import{S as $a}from"./assets/assert-hrfsarFU.js";import{P as t2,C as r2}from"./assets/solid-polygon-layer-DiarVGxh.js";import{c as Al,G as n2}from"./assets/layer-DO63TrsS.js";import{M as i2}from"./assets/shader-BJmsOfPx.js";import{C as s2}from"./assets/clip-extension-DTCP51Ak.js";import{I as Zs}from"./assets/image-loader-ClbNCMXW.js";import"./assets/color-CUNNsFV-.js";import"./assets/array-utils-flat-wyE8tIYR.js";import"./assets/project-CrvReKGW.js";import"./assets/webgl-device-BY0-CUP6.js";import"./assets/layer-extension-CZ3zsHuN.js";globalThis.probe={};const el=new Ph({id:"@probe.gl/log"}),o2="Queued Requests",a2="Active Requests",l2="Cancelled Requests",u2="Queued Requests Ever",c2="Active Requests Ever",f2={id:"request-scheduler",throttleRequests:!0,maxRequests:6,debounceTime:0};class tl{props;stats;activeRequestCount=0;requestQueue=[];requestMap=new Map;updateTimer=null;constructor(A={}){this.props={...f2,...A},this.stats=new $a({id:this.props.id}),this.stats.get(o2),this.stats.get(a2),this.stats.get(l2),this.stats.get(u2),this.stats.get(c2)}scheduleRequest(A,i=()=>0){if(!this.props.throttleRequests)return Promise.resolve({done:()=>{}});if(this.requestMap.has(A))return this.requestMap.get(A);const a={handle:A,priority:0,getPriority:i},c=new Promise(h=>(a.resolve=h,a));return this.requestQueue.push(a),this.requestMap.set(A,c),this._issueNewRequests(),c}_issueRequest(A){const{handle:i,resolve:a}=A;let c=!1;const h=()=>{c||(c=!0,this.requestMap.delete(i),this.activeRequestCount--,this._issueNewRequests())};return this.activeRequestCount++,a?a({done:h}):Promise.resolve({done:h})}_issueNewRequests(){this.updateTimer!==null&&clearTimeout(this.updateTimer),this.updateTimer=setTimeout(()=>this._issueNewRequestsAsync(),this.props.debounceTime)}_issueNewRequestsAsync(){this.updateTimer!==null&&clearTimeout(this.updateTimer),this.updateTimer=null;const A=Math.max(this.props.maxRequests-this.activeRequestCount,0);if(A!==0){this._updateAllRequests();for(let i=0;i<A;++i){const a=this.requestQueue.shift();a&&this._issueRequest(a)}}}_updateAllRequests(){const A=this.requestQueue;for(let i=0;i<A.length;++i){const a=A[i];this._updateRequest(a)||(A.splice(i,1),this.requestMap.delete(a.handle),i--)}A.sort((i,a)=>i.priority-a.priority)}_updateRequest(A){return A.priority=A.getPriority(A.handle),A.priority<0?(A.resolve(null),!1):!0}}class h2{fetch;loadOptions;_needsRefresh=!0;props;constructor(A){this.props={...A},this.loadOptions={...A.loadOptions},this.fetch=d2(this.loadOptions)}setProps(A){this.props=Object.assign(this.props,A),this.setNeedsRefresh()}setNeedsRefresh(){this._needsRefresh=!0}getNeedsRefresh(A=!0){const i=this._needsRefresh;return A&&(this._needsRefresh=!1),i}}function d2(e){const A=e?.fetch;if(A&&typeof A=="function")return(a,c)=>A(a,c);const i=e?.fetch;return i&&typeof i!="function"?a=>fetch(a,i):a=>fetch(a)}class _i extends h2{static type="template";static testURL=A=>!1}class bi extends xh{constructor(A=0,i=0){super(2),Nh(A)&&arguments.length===1?this.copy(A):(pn.debug&&(zr(A),zr(i)),this[0]=A,this[1]=i)}set(A,i){return this[0]=A,this[1]=i,this.check()}copy(A){return this[0]=A[0],this[1]=A[1],this.check()}fromObject(A){return pn.debug&&(zr(A.x),zr(A.y)),this[0]=A.x,this[1]=A.y,this.check()}toObject(A){return A.x=this[0],A.y=this[1],A}get ELEMENTS(){return 2}horizontalAngle(){return Math.atan2(this.y,this.x)}verticalAngle(){return Math.atan2(this.x,this.y)}transform(A){return this.transformAsPoint(A)}transformAsPoint(A){return Rh(this,this,A),this.check()}transformAsVector(A){return Dh(this,this,A),this.check()}transformByMatrix3(A){return Oh(this,this,A),this.check()}transformByMatrix2x3(A){return kh(this,this,A),this.check()}transformByMatrix2(A){return Fh(this,this,A),this.check()}}const g2=.1,p2=1e-12,rl=1e-15,m2=1e-20,w2={...Bn.defaultProps};class Nt extends ar{indexToBounds(){return null}renderLayers(){const{elevationScale:A,extruded:i,wireframe:a,filled:c,stroked:h,lineWidthUnits:g,lineWidthScale:m,lineWidthMinPixels:y,lineWidthMaxPixels:v,lineJointRounded:_,lineMiterLimit:C,lineDashJustified:P,getElevation:N,getFillColor:Y,getLineColor:Z,getLineWidth:tA}=this.props,{updateTriggers:R,material:z,transitions:rA}=this.props,mA=this.getSubLayerClass("cell",Bn),{updateTriggers:G,...j}=this.indexToBounds()||{};return new mA({filled:c,wireframe:a,extruded:i,elevationScale:A,stroked:h,lineWidthUnits:g,lineWidthScale:m,lineWidthMinPixels:y,lineWidthMaxPixels:v,lineJointRounded:_,lineMiterLimit:C,lineDashJustified:P,material:z,transitions:rA,getElevation:N,getFillColor:Y,getLineColor:Z,getLineWidth:tA},this.getSubLayerProps({id:"cell",updateTriggers:R&&{...G,getElevation:R.getElevation,getFillColor:R.getFillColor,getLineColor:R.getLineColor,getLineWidth:R.getLineWidth}}),j)}}Nt.layerName="GeoCellLayer";Nt.defaultProps=w2;var y2=Object.defineProperty,Sr=(e,A)=>{for(var i in A)y2(e,i,{get:A[i],enumerable:!0})},be={};Sr(be,{ARRAY_TYPE:()=>re,EPSILON:()=>de,RANDOM:()=>It,equals:()=>b2,setMatrixArrayType:()=>T2,toRadian:()=>_2});var de=1e-6,re=typeof Float32Array<"u"?Float32Array:Array,It=Math.random;function T2(e){re=e}var v2=Math.PI/180;function _2(e){return e*v2}function b2(e,A){return Math.abs(e-A)<=de*Math.max(1,Math.abs(e),Math.abs(A))}Math.hypot||(Math.hypot=function(){for(var e=0,A=arguments.length;A--;)e+=arguments[A]*arguments[A];return Math.sqrt(e)});var Bt={};Sr(Bt,{LDU:()=>Q2,add:()=>V2,adjoint:()=>x2,clone:()=>M2,copy:()=>C2,create:()=>E2,determinant:()=>N2,equals:()=>G2,exactEquals:()=>z2,frob:()=>U2,fromRotation:()=>O2,fromScaling:()=>k2,fromValues:()=>I2,identity:()=>S2,invert:()=>P2,mul:()=>j2,multiply:()=>nl,multiplyScalar:()=>q2,multiplyScalarAndAdd:()=>H2,rotate:()=>R2,scale:()=>D2,set:()=>B2,str:()=>F2,sub:()=>W2,subtract:()=>il,transpose:()=>L2});function E2(){var e=new re(4);return re!=Float32Array&&(e[1]=0,e[2]=0),e[0]=1,e[3]=1,e}function M2(e){var A=new re(4);return A[0]=e[0],A[1]=e[1],A[2]=e[2],A[3]=e[3],A}function C2(e,A){return e[0]=A[0],e[1]=A[1],e[2]=A[2],e[3]=A[3],e}function S2(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=1,e}function I2(e,A,i,a){var c=new re(4);return c[0]=e,c[1]=A,c[2]=i,c[3]=a,c}function B2(e,A,i,a,c){return e[0]=A,e[1]=i,e[2]=a,e[3]=c,e}function L2(e,A){if(e===A){var i=A[1];e[1]=A[2],e[2]=i}else e[0]=A[0],e[1]=A[2],e[2]=A[1],e[3]=A[3];return e}function P2(e,A){var i=A[0],a=A[1],c=A[2],h=A[3],g=i*h-c*a;return g?(g=1/g,e[0]=h*g,e[1]=-a*g,e[2]=-c*g,e[3]=i*g,e):null}function x2(e,A){var i=A[0];return e[0]=A[3],e[1]=-A[1],e[2]=-A[2],e[3]=i,e}function N2(e){return e[0]*e[3]-e[2]*e[1]}function nl(e,A,i){var a=A[0],c=A[1],h=A[2],g=A[3],m=i[0],y=i[1],v=i[2],_=i[3];return e[0]=a*m+h*y,e[1]=c*m+g*y,e[2]=a*v+h*_,e[3]=c*v+g*_,e}function R2(e,A,i){var a=A[0],c=A[1],h=A[2],g=A[3],m=Math.sin(i),y=Math.cos(i);return e[0]=a*y+h*m,e[1]=c*y+g*m,e[2]=a*-m+h*y,e[3]=c*-m+g*y,e}function D2(e,A,i){var a=A[0],c=A[1],h=A[2],g=A[3],m=i[0],y=i[1];return e[0]=a*m,e[1]=c*m,e[2]=h*y,e[3]=g*y,e}function O2(e,A){var i=Math.sin(A),a=Math.cos(A);return e[0]=a,e[1]=i,e[2]=-i,e[3]=a,e}function k2(e,A){return e[0]=A[0],e[1]=0,e[2]=0,e[3]=A[1],e}function F2(e){return"mat2("+e[0]+", "+e[1]+", "+e[2]+", "+e[3]+")"}function U2(e){return Math.hypot(e[0],e[1],e[2],e[3])}function Q2(e,A,i,a){return e[2]=a[2]/a[0],i[0]=a[0],i[1]=a[1],i[3]=a[3]-e[2]*i[1],[e,A,i]}function V2(e,A,i){return e[0]=A[0]+i[0],e[1]=A[1]+i[1],e[2]=A[2]+i[2],e[3]=A[3]+i[3],e}function il(e,A,i){return e[0]=A[0]-i[0],e[1]=A[1]-i[1],e[2]=A[2]-i[2],e[3]=A[3]-i[3],e}function z2(e,A){return e[0]===A[0]&&e[1]===A[1]&&e[2]===A[2]&&e[3]===A[3]}function G2(e,A){var i=e[0],a=e[1],c=e[2],h=e[3],g=A[0],m=A[1],y=A[2],v=A[3];return Math.abs(i-g)<=de*Math.max(1,Math.abs(i),Math.abs(g))&&Math.abs(a-m)<=de*Math.max(1,Math.abs(a),Math.abs(m))&&Math.abs(c-y)<=de*Math.max(1,Math.abs(c),Math.abs(y))&&Math.abs(h-v)<=de*Math.max(1,Math.abs(h),Math.abs(v))}function q2(e,A,i){return e[0]=A[0]*i,e[1]=A[1]*i,e[2]=A[2]*i,e[3]=A[3]*i,e}function H2(e,A,i,a){return e[0]=A[0]+i[0]*a,e[1]=A[1]+i[1]*a,e[2]=A[2]+i[2]*a,e[3]=A[3]+i[3]*a,e}var j2=nl,W2=il;function Y2(){var e=new re(9);return re!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[5]=0,e[6]=0,e[7]=0),e[0]=1,e[4]=1,e[8]=1,e}var K0={};Sr(K0,{add:()=>od,calculateW:()=>X1,clone:()=>rd,conjugate:()=>Ad,copy:()=>id,create:()=>Ai,dot:()=>vl,equals:()=>hd,exactEquals:()=>fd,exp:()=>ml,fromEuler:()=>ed,fromMat3:()=>yl,fromValues:()=>nd,getAngle:()=>j1,getAxisAngle:()=>H1,identity:()=>q1,invert:()=>$1,len:()=>ud,length:()=>_l,lerp:()=>ld,ln:()=>wl,mul:()=>ad,multiply:()=>pl,normalize:()=>Ci,pow:()=>J1,random:()=>K1,rotateX:()=>W1,rotateY:()=>Y1,rotateZ:()=>Z1,rotationTo:()=>dd,scale:()=>Tl,set:()=>sd,setAxes:()=>pd,setAxisAngle:()=>gl,slerp:()=>un,sqlerp:()=>gd,sqrLen:()=>cd,squaredLength:()=>bl,str:()=>td});var uA={};Sr(uA,{add:()=>K2,angle:()=>w1,bezier:()=>u1,ceil:()=>$2,clone:()=>Z2,copy:()=>X2,create:()=>Ei,cross:()=>ln,dist:()=>C1,distance:()=>ul,div:()=>M1,divide:()=>ll,dot:()=>Mi,equals:()=>_1,exactEquals:()=>v1,floor:()=>A1,forEach:()=>B1,fromValues:()=>$0,hermite:()=>l1,inverse:()=>o1,len:()=>dl,length:()=>sl,lerp:()=>a1,max:()=>t1,min:()=>e1,mul:()=>E1,multiply:()=>al,negate:()=>s1,normalize:()=>hl,random:()=>c1,rotateX:()=>g1,rotateY:()=>p1,rotateZ:()=>m1,round:()=>r1,scale:()=>n1,scaleAndAdd:()=>i1,set:()=>J2,sqrDist:()=>S1,sqrLen:()=>I1,squaredDistance:()=>cl,squaredLength:()=>fl,str:()=>T1,sub:()=>b1,subtract:()=>ol,transformMat3:()=>h1,transformMat4:()=>f1,transformQuat:()=>d1,zero:()=>y1});function Ei(){var e=new re(3);return re!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function Z2(e){var A=new re(3);return A[0]=e[0],A[1]=e[1],A[2]=e[2],A}function sl(e){var A=e[0],i=e[1],a=e[2];return Math.hypot(A,i,a)}function $0(e,A,i){var a=new re(3);return a[0]=e,a[1]=A,a[2]=i,a}function X2(e,A){return e[0]=A[0],e[1]=A[1],e[2]=A[2],e}function J2(e,A,i,a){return e[0]=A,e[1]=i,e[2]=a,e}function K2(e,A,i){return e[0]=A[0]+i[0],e[1]=A[1]+i[1],e[2]=A[2]+i[2],e}function ol(e,A,i){return e[0]=A[0]-i[0],e[1]=A[1]-i[1],e[2]=A[2]-i[2],e}function al(e,A,i){return e[0]=A[0]*i[0],e[1]=A[1]*i[1],e[2]=A[2]*i[2],e}function ll(e,A,i){return e[0]=A[0]/i[0],e[1]=A[1]/i[1],e[2]=A[2]/i[2],e}function $2(e,A){return e[0]=Math.ceil(A[0]),e[1]=Math.ceil(A[1]),e[2]=Math.ceil(A[2]),e}function A1(e,A){return e[0]=Math.floor(A[0]),e[1]=Math.floor(A[1]),e[2]=Math.floor(A[2]),e}function e1(e,A,i){return e[0]=Math.min(A[0],i[0]),e[1]=Math.min(A[1],i[1]),e[2]=Math.min(A[2],i[2]),e}function t1(e,A,i){return e[0]=Math.max(A[0],i[0]),e[1]=Math.max(A[1],i[1]),e[2]=Math.max(A[2],i[2]),e}function r1(e,A){return e[0]=Math.round(A[0]),e[1]=Math.round(A[1]),e[2]=Math.round(A[2]),e}function n1(e,A,i){return e[0]=A[0]*i,e[1]=A[1]*i,e[2]=A[2]*i,e}function i1(e,A,i,a){return e[0]=A[0]+i[0]*a,e[1]=A[1]+i[1]*a,e[2]=A[2]+i[2]*a,e}function ul(e,A){var i=A[0]-e[0],a=A[1]-e[1],c=A[2]-e[2];return Math.hypot(i,a,c)}function cl(e,A){var i=A[0]-e[0],a=A[1]-e[1],c=A[2]-e[2];return i*i+a*a+c*c}function fl(e){var A=e[0],i=e[1],a=e[2];return A*A+i*i+a*a}function s1(e,A){return e[0]=-A[0],e[1]=-A[1],e[2]=-A[2],e}function o1(e,A){return e[0]=1/A[0],e[1]=1/A[1],e[2]=1/A[2],e}function hl(e,A){var i=A[0],a=A[1],c=A[2],h=i*i+a*a+c*c;return h>0&&(h=1/Math.sqrt(h)),e[0]=A[0]*h,e[1]=A[1]*h,e[2]=A[2]*h,e}function Mi(e,A){return e[0]*A[0]+e[1]*A[1]+e[2]*A[2]}function ln(e,A,i){var a=A[0],c=A[1],h=A[2],g=i[0],m=i[1],y=i[2];return e[0]=c*y-h*m,e[1]=h*g-a*y,e[2]=a*m-c*g,e}function a1(e,A,i,a){var c=A[0],h=A[1],g=A[2];return e[0]=c+a*(i[0]-c),e[1]=h+a*(i[1]-h),e[2]=g+a*(i[2]-g),e}function l1(e,A,i,a,c,h){var g=h*h,m=g*(2*h-3)+1,y=g*(h-2)+h,v=g*(h-1),_=g*(3-2*h);return e[0]=A[0]*m+i[0]*y+a[0]*v+c[0]*_,e[1]=A[1]*m+i[1]*y+a[1]*v+c[1]*_,e[2]=A[2]*m+i[2]*y+a[2]*v+c[2]*_,e}function u1(e,A,i,a,c,h){var g=1-h,m=g*g,y=h*h,v=m*g,_=3*h*m,C=3*y*g,P=y*h;return e[0]=A[0]*v+i[0]*_+a[0]*C+c[0]*P,e[1]=A[1]*v+i[1]*_+a[1]*C+c[1]*P,e[2]=A[2]*v+i[2]*_+a[2]*C+c[2]*P,e}function c1(e,A){A=A||1;var i=It()*2*Math.PI,a=It()*2-1,c=Math.sqrt(1-a*a)*A;return e[0]=Math.cos(i)*c,e[1]=Math.sin(i)*c,e[2]=a*A,e}function f1(e,A,i){var a=A[0],c=A[1],h=A[2],g=i[3]*a+i[7]*c+i[11]*h+i[15];return g=g||1,e[0]=(i[0]*a+i[4]*c+i[8]*h+i[12])/g,e[1]=(i[1]*a+i[5]*c+i[9]*h+i[13])/g,e[2]=(i[2]*a+i[6]*c+i[10]*h+i[14])/g,e}function h1(e,A,i){var a=A[0],c=A[1],h=A[2];return e[0]=a*i[0]+c*i[3]+h*i[6],e[1]=a*i[1]+c*i[4]+h*i[7],e[2]=a*i[2]+c*i[5]+h*i[8],e}function d1(e,A,i){var a=i[0],c=i[1],h=i[2],g=i[3],m=A[0],y=A[1],v=A[2],_=c*v-h*y,C=h*m-a*v,P=a*y-c*m,N=c*P-h*C,Y=h*_-a*P,Z=a*C-c*_,tA=g*2;return _*=tA,C*=tA,P*=tA,N*=2,Y*=2,Z*=2,e[0]=m+_+N,e[1]=y+C+Y,e[2]=v+P+Z,e}function g1(e,A,i,a){var c=[],h=[];return c[0]=A[0]-i[0],c[1]=A[1]-i[1],c[2]=A[2]-i[2],h[0]=c[0],h[1]=c[1]*Math.cos(a)-c[2]*Math.sin(a),h[2]=c[1]*Math.sin(a)+c[2]*Math.cos(a),e[0]=h[0]+i[0],e[1]=h[1]+i[1],e[2]=h[2]+i[2],e}function p1(e,A,i,a){var c=[],h=[];return c[0]=A[0]-i[0],c[1]=A[1]-i[1],c[2]=A[2]-i[2],h[0]=c[2]*Math.sin(a)+c[0]*Math.cos(a),h[1]=c[1],h[2]=c[2]*Math.cos(a)-c[0]*Math.sin(a),e[0]=h[0]+i[0],e[1]=h[1]+i[1],e[2]=h[2]+i[2],e}function m1(e,A,i,a){var c=[],h=[];return c[0]=A[0]-i[0],c[1]=A[1]-i[1],c[2]=A[2]-i[2],h[0]=c[0]*Math.cos(a)-c[1]*Math.sin(a),h[1]=c[0]*Math.sin(a)+c[1]*Math.cos(a),h[2]=c[2],e[0]=h[0]+i[0],e[1]=h[1]+i[1],e[2]=h[2]+i[2],e}function w1(e,A){var i=e[0],a=e[1],c=e[2],h=A[0],g=A[1],m=A[2],y=Math.sqrt(i*i+a*a+c*c),v=Math.sqrt(h*h+g*g+m*m),_=y*v,C=_&&Mi(e,A)/_;return Math.acos(Math.min(Math.max(C,-1),1))}function y1(e){return e[0]=0,e[1]=0,e[2]=0,e}function T1(e){return"vec3("+e[0]+", "+e[1]+", "+e[2]+")"}function v1(e,A){return e[0]===A[0]&&e[1]===A[1]&&e[2]===A[2]}function _1(e,A){var i=e[0],a=e[1],c=e[2],h=A[0],g=A[1],m=A[2];return Math.abs(i-h)<=de*Math.max(1,Math.abs(i),Math.abs(h))&&Math.abs(a-g)<=de*Math.max(1,Math.abs(a),Math.abs(g))&&Math.abs(c-m)<=de*Math.max(1,Math.abs(c),Math.abs(m))}var b1=ol,E1=al,M1=ll,C1=ul,S1=cl,dl=sl,I1=fl,B1=(function(){var e=Ei();return function(A,i,a,c,h,g){var m,y;for(i||(i=3),a||(a=0),c?y=Math.min(c*i+a,A.length):y=A.length,m=a;m<y;m+=i)e[0]=A[m],e[1]=A[m+1],e[2]=A[m+2],h(e,e,g),A[m]=e[0],A[m+1]=e[1],A[m+2]=e[2];return A}})();function L1(){var e=new re(4);return re!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0,e[3]=0),e}function P1(e){var A=new re(4);return A[0]=e[0],A[1]=e[1],A[2]=e[2],A[3]=e[3],A}function x1(e,A,i,a){var c=new re(4);return c[0]=e,c[1]=A,c[2]=i,c[3]=a,c}function N1(e,A){return e[0]=A[0],e[1]=A[1],e[2]=A[2],e[3]=A[3],e}function R1(e,A,i,a,c){return e[0]=A,e[1]=i,e[2]=a,e[3]=c,e}function D1(e,A,i){return e[0]=A[0]+i[0],e[1]=A[1]+i[1],e[2]=A[2]+i[2],e[3]=A[3]+i[3],e}function O1(e,A,i){return e[0]=A[0]*i,e[1]=A[1]*i,e[2]=A[2]*i,e[3]=A[3]*i,e}function k1(e){var A=e[0],i=e[1],a=e[2],c=e[3];return Math.hypot(A,i,a,c)}function F1(e){var A=e[0],i=e[1],a=e[2],c=e[3];return A*A+i*i+a*a+c*c}function U1(e,A){var i=A[0],a=A[1],c=A[2],h=A[3],g=i*i+a*a+c*c+h*h;return g>0&&(g=1/Math.sqrt(g)),e[0]=i*g,e[1]=a*g,e[2]=c*g,e[3]=h*g,e}function Q1(e,A){return e[0]*A[0]+e[1]*A[1]+e[2]*A[2]+e[3]*A[3]}function V1(e,A,i,a){var c=A[0],h=A[1],g=A[2],m=A[3];return e[0]=c+a*(i[0]-c),e[1]=h+a*(i[1]-h),e[2]=g+a*(i[2]-g),e[3]=m+a*(i[3]-m),e}function z1(e,A){return e[0]===A[0]&&e[1]===A[1]&&e[2]===A[2]&&e[3]===A[3]}function G1(e,A){var i=e[0],a=e[1],c=e[2],h=e[3],g=A[0],m=A[1],y=A[2],v=A[3];return Math.abs(i-g)<=de*Math.max(1,Math.abs(i),Math.abs(g))&&Math.abs(a-m)<=de*Math.max(1,Math.abs(a),Math.abs(m))&&Math.abs(c-y)<=de*Math.max(1,Math.abs(c),Math.abs(y))&&Math.abs(h-v)<=de*Math.max(1,Math.abs(h),Math.abs(v))}(function(){var e=L1();return function(A,i,a,c,h,g){var m,y;for(i||(i=4),a||(a=0),c?y=Math.min(c*i+a,A.length):y=A.length,m=a;m<y;m+=i)e[0]=A[m],e[1]=A[m+1],e[2]=A[m+2],e[3]=A[m+3],h(e,e,g),A[m]=e[0],A[m+1]=e[1],A[m+2]=e[2],A[m+3]=e[3];return A}})();function Ai(){var e=new re(4);return re!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e[3]=1,e}function q1(e){return e[0]=0,e[1]=0,e[2]=0,e[3]=1,e}function gl(e,A,i){i=i*.5;var a=Math.sin(i);return e[0]=a*A[0],e[1]=a*A[1],e[2]=a*A[2],e[3]=Math.cos(i),e}function H1(e,A){var i=Math.acos(A[3])*2,a=Math.sin(i/2);return a>de?(e[0]=A[0]/a,e[1]=A[1]/a,e[2]=A[2]/a):(e[0]=1,e[1]=0,e[2]=0),i}function j1(e,A){var i=vl(e,A);return Math.acos(2*i*i-1)}function pl(e,A,i){var a=A[0],c=A[1],h=A[2],g=A[3],m=i[0],y=i[1],v=i[2],_=i[3];return e[0]=a*_+g*m+c*v-h*y,e[1]=c*_+g*y+h*m-a*v,e[2]=h*_+g*v+a*y-c*m,e[3]=g*_-a*m-c*y-h*v,e}function W1(e,A,i){i*=.5;var a=A[0],c=A[1],h=A[2],g=A[3],m=Math.sin(i),y=Math.cos(i);return e[0]=a*y+g*m,e[1]=c*y+h*m,e[2]=h*y-c*m,e[3]=g*y-a*m,e}function Y1(e,A,i){i*=.5;var a=A[0],c=A[1],h=A[2],g=A[3],m=Math.sin(i),y=Math.cos(i);return e[0]=a*y-h*m,e[1]=c*y+g*m,e[2]=h*y+a*m,e[3]=g*y-c*m,e}function Z1(e,A,i){i*=.5;var a=A[0],c=A[1],h=A[2],g=A[3],m=Math.sin(i),y=Math.cos(i);return e[0]=a*y+c*m,e[1]=c*y-a*m,e[2]=h*y+g*m,e[3]=g*y-h*m,e}function X1(e,A){var i=A[0],a=A[1],c=A[2];return e[0]=i,e[1]=a,e[2]=c,e[3]=Math.sqrt(Math.abs(1-i*i-a*a-c*c)),e}function ml(e,A){var i=A[0],a=A[1],c=A[2],h=A[3],g=Math.sqrt(i*i+a*a+c*c),m=Math.exp(h),y=g>0?m*Math.sin(g)/g:0;return e[0]=i*y,e[1]=a*y,e[2]=c*y,e[3]=m*Math.cos(g),e}function wl(e,A){var i=A[0],a=A[1],c=A[2],h=A[3],g=Math.sqrt(i*i+a*a+c*c),m=g>0?Math.atan2(g,h)/g:0;return e[0]=i*m,e[1]=a*m,e[2]=c*m,e[3]=.5*Math.log(i*i+a*a+c*c+h*h),e}function J1(e,A,i){return wl(e,A),Tl(e,e,i),ml(e,e),e}function un(e,A,i,a){var c=A[0],h=A[1],g=A[2],m=A[3],y=i[0],v=i[1],_=i[2],C=i[3],P,N,Y,Z,tA;return N=c*y+h*v+g*_+m*C,N<0&&(N=-N,y=-y,v=-v,_=-_,C=-C),1-N>de?(P=Math.acos(N),Y=Math.sin(P),Z=Math.sin((1-a)*P)/Y,tA=Math.sin(a*P)/Y):(Z=1-a,tA=a),e[0]=Z*c+tA*y,e[1]=Z*h+tA*v,e[2]=Z*g+tA*_,e[3]=Z*m+tA*C,e}function K1(e){var A=It(),i=It(),a=It(),c=Math.sqrt(1-A),h=Math.sqrt(A);return e[0]=c*Math.sin(2*Math.PI*i),e[1]=c*Math.cos(2*Math.PI*i),e[2]=h*Math.sin(2*Math.PI*a),e[3]=h*Math.cos(2*Math.PI*a),e}function $1(e,A){var i=A[0],a=A[1],c=A[2],h=A[3],g=i*i+a*a+c*c+h*h,m=g?1/g:0;return e[0]=-i*m,e[1]=-a*m,e[2]=-c*m,e[3]=h*m,e}function Ad(e,A){return e[0]=-A[0],e[1]=-A[1],e[2]=-A[2],e[3]=A[3],e}function yl(e,A){var i=A[0]+A[4]+A[8],a;if(i>0)a=Math.sqrt(i+1),e[3]=.5*a,a=.5/a,e[0]=(A[5]-A[7])*a,e[1]=(A[6]-A[2])*a,e[2]=(A[1]-A[3])*a;else{var c=0;A[4]>A[0]&&(c=1),A[8]>A[c*3+c]&&(c=2);var h=(c+1)%3,g=(c+2)%3;a=Math.sqrt(A[c*3+c]-A[h*3+h]-A[g*3+g]+1),e[c]=.5*a,a=.5/a,e[3]=(A[h*3+g]-A[g*3+h])*a,e[h]=(A[h*3+c]+A[c*3+h])*a,e[g]=(A[g*3+c]+A[c*3+g])*a}return e}function ed(e,A,i,a){var c=.5*Math.PI/180;A*=c,i*=c,a*=c;var h=Math.sin(A),g=Math.cos(A),m=Math.sin(i),y=Math.cos(i),v=Math.sin(a),_=Math.cos(a);return e[0]=h*y*_-g*m*v,e[1]=g*m*_+h*y*v,e[2]=g*y*v-h*m*_,e[3]=g*y*_+h*m*v,e}function td(e){return"quat("+e[0]+", "+e[1]+", "+e[2]+", "+e[3]+")"}var rd=P1,nd=x1,id=N1,sd=R1,od=D1,ad=pl,Tl=O1,vl=Q1,ld=V1,_l=k1,ud=_l,bl=F1,cd=bl,Ci=U1,fd=z1,hd=G1,dd=(function(){var e=Ei(),A=$0(1,0,0),i=$0(0,1,0);return function(a,c,h){var g=Mi(c,h);return g<-.999999?(ln(e,A,c),dl(e)<1e-6&&ln(e,i,c),hl(e,e),gl(a,e,Math.PI),a):g>.999999?(a[0]=0,a[1]=0,a[2]=0,a[3]=1,a):(ln(e,c,h),a[0]=e[0],a[1]=e[1],a[2]=e[2],a[3]=1+g,Ci(a,a))}})(),gd=(function(){var e=Ai(),A=Ai();return function(i,a,c,h,g,m){return un(e,a,g,m),un(A,c,h,m),un(i,e,A,2*m*(1-m)),i}})(),pd=(function(){var e=Y2();return function(A,i,a,c){return e[0]=a[0],e[3]=a[1],e[6]=a[2],e[1]=c[0],e[4]=c[1],e[7]=c[2],e[2]=-i[0],e[5]=-i[1],e[8]=-i[2],Ci(A,yl(A,e))}})(),LA={};Sr(LA,{add:()=>vd,angle:()=>Vd,ceil:()=>_d,clone:()=>md,copy:()=>yd,create:()=>El,cross:()=>Nd,dist:()=>Xd,distance:()=>Il,div:()=>Zd,divide:()=>Sl,dot:()=>xd,equals:()=>Hd,exactEquals:()=>qd,floor:()=>bd,forEach:()=>$d,fromValues:()=>wd,inverse:()=>Ld,len:()=>jd,length:()=>Ll,lerp:()=>Rd,max:()=>Md,min:()=>Ed,mul:()=>Yd,multiply:()=>Cl,negate:()=>Bd,normalize:()=>Pd,random:()=>Dd,rotate:()=>Qd,round:()=>Cd,scale:()=>Sd,scaleAndAdd:()=>Id,set:()=>Td,sqrDist:()=>Jd,sqrLen:()=>Kd,squaredDistance:()=>Bl,squaredLength:()=>Pl,str:()=>Gd,sub:()=>Wd,subtract:()=>Ml,transformMat2:()=>Od,transformMat2d:()=>kd,transformMat3:()=>Fd,transformMat4:()=>Ud,zero:()=>zd});function El(){var e=new re(2);return re!=Float32Array&&(e[0]=0,e[1]=0),e}function md(e){var A=new re(2);return A[0]=e[0],A[1]=e[1],A}function wd(e,A){var i=new re(2);return i[0]=e,i[1]=A,i}function yd(e,A){return e[0]=A[0],e[1]=A[1],e}function Td(e,A,i){return e[0]=A,e[1]=i,e}function vd(e,A,i){return e[0]=A[0]+i[0],e[1]=A[1]+i[1],e}function Ml(e,A,i){return e[0]=A[0]-i[0],e[1]=A[1]-i[1],e}function Cl(e,A,i){return e[0]=A[0]*i[0],e[1]=A[1]*i[1],e}function Sl(e,A,i){return e[0]=A[0]/i[0],e[1]=A[1]/i[1],e}function _d(e,A){return e[0]=Math.ceil(A[0]),e[1]=Math.ceil(A[1]),e}function bd(e,A){return e[0]=Math.floor(A[0]),e[1]=Math.floor(A[1]),e}function Ed(e,A,i){return e[0]=Math.min(A[0],i[0]),e[1]=Math.min(A[1],i[1]),e}function Md(e,A,i){return e[0]=Math.max(A[0],i[0]),e[1]=Math.max(A[1],i[1]),e}function Cd(e,A){return e[0]=Math.round(A[0]),e[1]=Math.round(A[1]),e}function Sd(e,A,i){return e[0]=A[0]*i,e[1]=A[1]*i,e}function Id(e,A,i,a){return e[0]=A[0]+i[0]*a,e[1]=A[1]+i[1]*a,e}function Il(e,A){var i=A[0]-e[0],a=A[1]-e[1];return Math.hypot(i,a)}function Bl(e,A){var i=A[0]-e[0],a=A[1]-e[1];return i*i+a*a}function Ll(e){var A=e[0],i=e[1];return Math.hypot(A,i)}function Pl(e){var A=e[0],i=e[1];return A*A+i*i}function Bd(e,A){return e[0]=-A[0],e[1]=-A[1],e}function Ld(e,A){return e[0]=1/A[0],e[1]=1/A[1],e}function Pd(e,A){var i=A[0],a=A[1],c=i*i+a*a;return c>0&&(c=1/Math.sqrt(c)),e[0]=A[0]*c,e[1]=A[1]*c,e}function xd(e,A){return e[0]*A[0]+e[1]*A[1]}function Nd(e,A,i){var a=A[0]*i[1]-A[1]*i[0];return e[0]=e[1]=0,e[2]=a,e}function Rd(e,A,i,a){var c=A[0],h=A[1];return e[0]=c+a*(i[0]-c),e[1]=h+a*(i[1]-h),e}function Dd(e,A){A=A||1;var i=It()*2*Math.PI;return e[0]=Math.cos(i)*A,e[1]=Math.sin(i)*A,e}function Od(e,A,i){var a=A[0],c=A[1];return e[0]=i[0]*a+i[2]*c,e[1]=i[1]*a+i[3]*c,e}function kd(e,A,i){var a=A[0],c=A[1];return e[0]=i[0]*a+i[2]*c+i[4],e[1]=i[1]*a+i[3]*c+i[5],e}function Fd(e,A,i){var a=A[0],c=A[1];return e[0]=i[0]*a+i[3]*c+i[6],e[1]=i[1]*a+i[4]*c+i[7],e}function Ud(e,A,i){var a=A[0],c=A[1];return e[0]=i[0]*a+i[4]*c+i[12],e[1]=i[1]*a+i[5]*c+i[13],e}function Qd(e,A,i,a){var c=A[0]-i[0],h=A[1]-i[1],g=Math.sin(a),m=Math.cos(a);return e[0]=c*m-h*g+i[0],e[1]=c*g+h*m+i[1],e}function Vd(e,A){var i=e[0],a=e[1],c=A[0],h=A[1],g=Math.sqrt(i*i+a*a)*Math.sqrt(c*c+h*h),m=g&&(i*c+a*h)/g;return Math.acos(Math.min(Math.max(m,-1),1))}function zd(e){return e[0]=0,e[1]=0,e}function Gd(e){return"vec2("+e[0]+", "+e[1]+")"}function qd(e,A){return e[0]===A[0]&&e[1]===A[1]}function Hd(e,A){var i=e[0],a=e[1],c=A[0],h=A[1];return Math.abs(i-c)<=de*Math.max(1,Math.abs(i),Math.abs(c))&&Math.abs(a-h)<=de*Math.max(1,Math.abs(a),Math.abs(h))}var jd=Ll,Wd=Ml,Yd=Cl,Zd=Sl,Xd=Il,Jd=Bl,Kd=Pl,$d=(function(){var e=El();return function(A,i,a,c,h,g){var m,y;for(i||(i=2),a||(a=0),c?y=Math.min(c*i+a,A.length):y=A.length,m=a;m<y;m+=i)e[0]=A[m],e[1]=A[m+1],h(e,e,g),A[m]=e[0],A[m+1]=e[1];return A}})(),Ag=(1+Math.sqrt(5))/2,yn=2*Math.PI/5,$e=Math.PI/5,Xs=Math.PI/10,eg=2*Math.atan(Ag),ei=Math.PI-eg,Ln=(Math.sqrt(5)-1)/2,tg=3-Math.sqrt(5);be.setMatrixArrayType(Float64Array);var Si=class ti{constructor(A){this.vertices=A,this.isWindingCorrect()||this.vertices.reverse()}getArea(){let A=0;const i=this.vertices.length;for(let a=0;a<i;a++){const c=(a+1)%i;A+=(this.vertices[c][0]-this.vertices[a][0])*(this.vertices[c][1]+this.vertices[a][1])}return A}isWindingCorrect(){return this.getArea()>=0}getVertices(){return this.vertices}scale(A){for(const i of this.vertices)LA.scale(i,i,A);return this}rotate180(){for(const A of this.vertices)LA.negate(A,A);return this}reflectY(){for(const A of this.vertices)A[1]=-A[1];return this.vertices.reverse(),this}translate(A){for(const i of this.vertices)LA.add(i,i,A);return this}transform(A){for(const i of this.vertices)LA.transformMat2(i,i,A);return this}transform2d(A){for(const i of this.vertices)LA.transformMat2d(i,i,A);return this}clone(){return new ti(this.vertices.map(i=>LA.clone(i)))}getCenter(){const A=this.vertices.length;return this.vertices.reduce((a,c)=>[a[0]+c[0]/A,a[1]+c[1]/A],[0,0])}containsPoint(A){if(!this.isWindingCorrect())throw new Error("Pentagon is not counter-clockwise");const i=this.vertices.length;let a=1;for(let c=0;c<i;c++){const h=this.vertices[c],g=this.vertices[(c+1)%i],m=h[0]-g[0],y=h[1]-g[1],v=A[0]-h[0],_=A[1]-h[1],C=m*_-y*v;if(C<0){const P=Math.sqrt(v*v+_*_);a=Math.min(a,C/P)}}return a}splitEdges(A){if(A<=1)return this;const i=[],a=this.vertices.length;for(let c=0;c<a;c++){const h=this.vertices[c],g=this.vertices[(c+1)%a];i.push(LA.clone(h));for(let m=1;m<A;m++){const y=m/A,v=LA.create();LA.lerp(v,h,g,y),i.push(v)}}return new ti(i)}};be.setMatrixArrayType(Float64Array);var xl=[0,0],Nl=[0,1],Lt=[.7885966681787006,1.6149108024237764],Rl=[1.6171013659387945,1.054928690397459],Dl=[Math.cos(Xs),Math.sin(Xs)],rg=2*LA.length(Lt)*Math.cos($e),ng=$e-Math.atan2(Lt[1],Lt[0]),ig=2*Ln/rg;[xl,Nl,Lt,Rl,Dl].forEach(e=>{LA.scale(e,e,ig),LA.rotate(e,e,[0,0],ng)});var sg=new Si([xl,Nl,Lt,Rl,Dl]),Ol=Math.atan2(Lt[1],Lt[0])-$e,og=[0,0],Tn=Ln/Math.cos($e),Js=Ol+$e,vn=[Tn*Math.cos(Js),Tn*Math.sin(Js)],Ks=Ol-$e,Mr=[Tn*Math.cos(Ks),Tn*Math.sin(Ks)],ag=new Si([og,vn,Mr]),kl=Bt.fromValues(vn[0],vn[1],Mr[0],Mr[1]);Bt.invert(Bt.create(),kl);var lg=new Float64Array([-.0022392098386786394,21308606513250217e-22,-2559257686421274e-24,33701965267802837e-28,-4667545312611249e-30,667492870384816e-32]),ug=new Float64Array([.0022392089963541657,28831978048607556e-22,508622073997266e-23,102018123778161e-25,21912872306767718e-30,49284235482523806e-33]),cg=class{applyCoefficients(e,A){const i=Math.sin(e),a=Math.cos(e),c=2*(a-i)*(a+i);let h,g;return h=c*A[5]+A[4],g=c*h+A[3],h=c*g-h+A[2],g=c*h-g+A[1],h=c*g-h+A[0],e+2*i*a*h}forward(e){return this.applyCoefficients(e,lg)}inverse(e){return this.applyCoefficients(e,ug)}};be.setMatrixArrayType(Float64Array);var Fl=new cg;function $s(e){return e*(Math.PI/180)}function Ao(e){return e*(180/Math.PI)}function eo(e){const A=LA.length(e),i=Math.atan2(e[1],e[0]);return[A,i]}function fg([e,A]){const i=e*Math.cos(A),a=e*Math.sin(A);return[i,a]}function hg(e,[A,i,a]){const c=[A[0]-a[0],A[1]-a[1]],h=[a[0]-i[0],a[1]-i[1]],g=[e[0]-a[0],e[1]-a[1]],m=h[0]*c[1]-h[1]*c[0],y=(h[0]*g[1]-h[1]*g[0])/m,v=(c[0]*g[1]-c[1]*g[0])/m,_=1-(y+v);return[y,v,_]}function dg(e,[A,i,a]){return[e[0]*A[0]+e[1]*i[0]+e[2]*a[0],e[0]*A[1]+e[1]*i[1]+e[2]*a[1]]}function ri(e){const A=Math.atan2(e[1],e[0]),i=Math.sqrt(e[0]*e[0]+e[1]*e[1]+e[2]*e[2]),a=Math.acos(e[2]/i);return[A,a]}function er([e,A]){const i=Math.sin(A),a=i*Math.cos(e),c=i*Math.sin(e),h=Math.cos(A);return[a,c,h]}var Ul=93;function gg([e,A]){const i=$s(e+Ul),a=$s(A),c=Fl.forward(a),h=Math.PI/2-c;return[i,h]}function Ql([e,A]){const i=Ao(e)-Ul,a=Math.PI/2-A,c=Fl.inverse(a),h=Ao(c);return[i,h]}function pg(e){const A=e.map(h=>er(gg(h))),i=uA.create();for(const h of A)uA.add(i,i,h);uA.normalize(i,i);let[a,c]=Ql(ri(i));return(c>89.99||c<-89.99)&&(a=e[0][0]),a=((a+180)%360+360)%360-180,e.map(h=>{let[g,m]=h;for(;g-a>180;)g=g-360;for(;g-a<-180;)g=g+360;return[g,m]})}be.setMatrixArrayType(Float64Array);var Pn=Math.sqrt(5),xn=Math.sqrt(.2),Vl=Math.sqrt((1-xn)/2),zl=Math.sqrt((1+xn)/2),Gr=.5,to=Math.sqrt((2.5-Pn)/10),ro=Math.sqrt((2.5+Pn)/10),no=Math.sqrt((1+xn)/8),io=Math.sqrt((1-xn)/8),so=Math.sqrt((3-Pn)/8),oo=Math.sqrt((3+Pn)/8),mg=[[0,0],[Vl,0],[to,Gr],[-no,so],[-no,-so],[to,-Gr],[-zl,0],[-io,-oo],[ro,-Gr],[ro,Gr],[-io,oo],[0,0]],wg=mg.map(([e,A])=>[-A,e]),qr=wg.map((e,A)=>A===0?[0,0,0,1]:A===11?[0,-1,0,0]:[...e,0,A<6?zl:Vl]);be.setMatrixArrayType(Float64Array);var Gl=["vu","uw","vw","vw","vw"],br=["wu","uw","vw","vu","uw"],m0=["wu","uv","wv","wu","uw"],Hr=["vu","uv","wv","wu","uw"],yg=[Gl,Hr,m0,br,m0,Hr,m0,br,br,br,Hr,Hr],Tg=[4,2,3,2,0,4,3,2,2,0,3,0],ao=[0,1,2,4,3,5,7,8,6,11,10,9],qe=[];function vg(){jr([0,0],0,qr[0]);for(let e=0;e<5;e++){const A=e*yn,i=A+$e;jr([A,ei],$e,qr[e+1]),jr([i,Math.PI-ei],$e,qr[(e+3)%5+6])}jr([0,Math.PI],0,qr[11])}var Ht=0;function jr(e,A,i){if(Ht>11)throw new Error(`Too many origins: ${Ht}`);const a=K0.create();K0.conjugate(a,i);const c={id:Ht,axis:e,quat:i,inverseQuat:a,angle:A,orientation:yg[Ht],firstQuintant:Tg[Ht]};qe.push(c),Ht++}vg();qe.sort((e,A)=>ao.indexOf(e.id)-ao.indexOf(A.id));qe.forEach((e,A)=>e.id=A);function _g(e,A){const i=A.orientation,a=i===Gl||i===br?-1:1,c=(e-A.firstQuintant+5)%5,h=i[c];return{quintant:(A.firstQuintant+a*c+5)%5,orientation:h}}var bg=class{forward([e,A]){return[Math.tan(A),e]}inverse([e,A]){return[A,Math.atan(e)]}},jt=uA.create(),Er=uA.create(),lo=uA.create(),uo=uA.create();function w0(e,A){uA.lerp(jt,e,A,.5),uA.normalize(jt,jt),uA.cross(jt,e,jt);const i=uA.length(jt);if(i<1e-8){const a=uA.subtract(uA.create(),e,A);return .5*uA.length(a)}return i}function Eg(e,A,i){return uA.cross(Er,A,i),uA.dot(e,Er)}function Mg(e,A,i,a,c){uA.cross(Er,a,c);const h=uA.dot(A,Er),g=uA.dot(i,Er);return uA.scale(lo,A,g),uA.scale(uo,i,h),uA.sub(e,uo,lo)}function ni(e,A,i,a){const c=uA.angle(A,i);if(c<1e-12)return uA.lerp(e,A,i,a);const h=Math.sin((1-a)*c)/Math.sin(c),g=Math.sin(a*c)/Math.sin(c),m=uA.scale(uA.create(),A,h),y=uA.scale(uA.create(),i,g);return uA.add(e,m,y)}be.setMatrixArrayType(Float64Array);var Wr=uA.create(),Yr=uA.create(),Zr=uA.create(),Wt=uA.create(),Cg=class{constructor(e){this._area=null,this.vertices=e,Object.freeze(this.vertices)}getBoundary(e=1,A=!0){const i=[],a=this.vertices.length;for(let c=0;c<a*e;c++){const h=c/e;i.push(this.slerp(h))}return A&&i.push(i[0]),i}slerp(e){const A=this.vertices.length,i=e%1,a=Math.floor(e%A),c=(a+1)%A;return ni(uA.create(),this.vertices[a],this.vertices[c],i)}getTransformedVertices(e){const A=this.vertices.length,i=Math.floor(e%A),a=(i+1)%A,c=(i+A-1)%A,h=uA.clone(this.vertices[i]),g=uA.clone(this.vertices[a]),m=uA.clone(this.vertices[c]);return uA.sub(g,g,h),uA.sub(m,m,h),[h,g,m]}containsPoint(e){const A=this.vertices.length;let i=1/0;for(let a=0;a<A;a++){const[c,h,g]=this.getTransformedVertices(a),m=uA.sub(uA.create(),e,c);uA.normalize(m,m),uA.normalize(h,h),uA.normalize(g,g);const y=uA.cross(uA.create(),h,m),v=uA.cross(uA.create(),m,g),_=uA.dot(c,y),C=uA.dot(c,v);i=Math.min(i,_,C)}return i}getTriangleArea(e,A,i){uA.lerp(Wr,A,i,.5),uA.lerp(Yr,i,e,.5),uA.lerp(Zr,e,A,.5),uA.normalize(Wr,Wr),uA.normalize(Yr,Yr),uA.normalize(Zr,Zr);const a=Eg(Wr,Yr,Zr),c=Math.max(-1,Math.min(1,a));return Math.abs(c)<1e-8?2*c:Math.asin(c)*2}getArea(){return this._area===null&&(this._area=this._getArea()),this._area}_getArea(){if(this.vertices.length<3)return 0;if(this.vertices.length===3)return this._area=this.getTriangleArea(this.vertices[0],this.vertices[1],this.vertices[2]),this._area;uA.set(Wt,0,0,0);for(const A of this.vertices)uA.add(Wt,Wt,A);uA.normalize(Wt,Wt);let e=0;for(let A=0;A<this.vertices.length;A++){const i=this.vertices[A],a=this.vertices[(A+1)%this.vertices.length],c=this.getTriangleArea(Wt,i,a);isNaN(c)||(e+=c)}return this._area=e,this._area}isWindingCorrect(){if(!(this.getArea()>0))debugger}};be.setMatrixArrayType(Float64Array);var Xr=class extends Cg{constructor(e){if(e.length!==3)throw new Error("SphericalTriangleShape requires exactly 3 vertices");super(e)}};be.setMatrixArrayType(Float64Array);var Sg=class{forward(e,A,i){const[a,c,h]=A,g=new Xr([a,c,h]),m=uA.subtract(uA.create(),e,a);uA.normalize(m,m);const y=Mg(uA.create(),a,m,c,h);uA.normalize(y,y);const v=w0(a,e)/w0(a,y),_=g.getArea(),C=v/_,P=[1-v,C*new Xr([a,y,h]).getArea(),C*new Xr([a,c,y]).getArea()];return dg(P,i)}inverse(e,A,i){const[a,c,h]=i,g=new Xr([a,c,h]),m=hg(e,A),y=1-1e-14;if(m[0]>y)return a;if(m[1]>y)return c;if(m[2]>y)return h;const v=uA.create();uA.cross(v,c,h);const _=g.getArea(),C=1-m[0],N=m[2]/C*_,Y=Math.sin(N),Z=Math.sin(N/2),tA=2*Z*Z,R=uA.dot(a,c),z=uA.dot(c,h),rA=uA.dot(h,a),mA=uA.length(v),G=uA.dot(a,v),j=Y*G+tA*(R*z-rA),$=tA*mA*(1+R),lA=2/Math.acos(z)*Math.atan2($,j),U=ni(uA.create(),c,h,lA),k=w0(a,U),x=this.safeAcos(C*k)/this.safeAcos(k);return ni([0,0,0],a,U,x)}safeAcos(e){return e<.001?2*e+e*e*e/3:Math.acos(1-2*e*e)}};be.setMatrixArrayType(Float64Array);var Pe=-1,_e=1,Ig=([e,A])=>LA.fromValues(e-A,A),ii=LA.fromValues(1,0),si=LA.fromValues(0,1),co=LA.negate(LA.create(),ii),fo=LA.negate(LA.create(),si),y0=LA.fromValues(0,0),Bg=(e,[A,i])=>{let a=y0,c=y0;switch(A===_e&&i===_e?(a=ii,c=si):A===Pe&&i===_e?(a=fo,c=co):A===_e&&i===Pe?(a=si,c=ii):A===Pe&&i===Pe&&(a=co,c=fo),e){case 0:return y0;case 1:return a;case 2:return LA.add(LA.create(),c,a);case 3:return LA.scaleAndAdd(LA.create(),c,a,2);default:throw new Error(`Invalid Quaternary value: ${e}`)}},ho=e=>[[_e,_e],[_e,Pe],[_e,_e],[Pe,_e]][e],go=LA.fromValues(-1,1);function ql(e){return Array.from({length:e.length},(A,i)=>e.indexOf(i))}var Hl=[0,1,3,4,5,6,7,2],jl=[0,1,2,7,3,4,5,6];ql(Hl);ql(jl);var Lg=(e,A,i,a,c)=>{if(A<=0)return;const h=e[A]||0,g=e[A-1],m=i[0]+i[1];let y=!0,v=!0;if(a!==(m===0)?(y=h===1||h===2,v=h===1):(y=h<2,v=h===0),!y)return;const _=v?g:g+4,C=c[_];e[A-1]=C%4,e[A]=(h+4+Math.floor(C/4)-Math.floor(_/4))%4},Pg=(e,A,i)=>{let a=BigInt(e);const c=i==="vu"||i==="wu"||i==="vw",h=i==="wv"||i==="vw",g=i==="wu"||i==="uw";c&&(a=(1n<<BigInt(2*A))-a-1n);const m=xg(a,A,h,g);if(g){const{offset:[y,v],flips:[_,C]}=m;m.offset=[v,y],_===Pe&&LA.add(m.offset,m.offset,go),C===Pe&&LA.subtract(m.offset,m.offset,go)}if(h){const{offset:[y,v],flips:_}=m,C=(1<<A)-(y+v);_[0]=-_[0],m.offset[1]=C,m.flips=_}return m},xg=(e,A,i,a)=>{const c=LA.create(),h=[_e,_e];let g=BigInt(e);const m=[];for(;g>0n||m.length<A;)m.push(Number(g%4n)),g=g>>2n;const y=a?jl:Hl;for(let _=m.length-1;_>=0;_--)Lg(m,_,h,i,y),LA.multiply(h,h,ho(m[_]));h[0]=_e,h[1]=_e;for(let _=m.length-1;_>=0;_--){LA.scale(c,c,2);const C=Bg(m[_],h);LA.add(c,c,C),LA.multiply(h,h,ho(m[_]))}const v=m[0]||0;return{flips:h,k:v,offset:Ig(c)}};be.setMatrixArrayType(Float64Array);var Ng=LA.clone(Mr),Rg=LA.negate(LA.create(),Mr),Ii=[0,1,2,3,4].map(e=>{const A=Bt.create();return Bt.fromRotation(A,yn*e),A}),po=LA.create();function Dg(e,A,i){const a=sg.clone();LA.transformMat2(po,i.offset,kl),i.flips[0]===_e&&i.flips[1]===Pe&&a.rotate180();const{k:c}=i,h=i.flips[0]+i.flips[1];return((h===-2||h===2)&&c>1||h===0&&(c===0||c===3))&&a.reflectY(),i.flips[0]===Pe&&i.flips[1]===Pe?a.rotate180():i.flips[0]===Pe?a.translate(Rg):i.flips[1]===Pe&&a.translate(Ng),a.translate(po),a.scale(1/2**e),a.transform(Ii[A]),a}function Wl(e){const A=ag.clone();return A.transform(Ii[e]),A}function Og(){const e=[];for(const A of Ii)e.push(LA.transformMat2(LA.create(),vn,A));return e.reverse(),new Si(e)}be.setMatrixArrayType(Float64Array);var kg=class{constructor(){if(this.vertices=[],this.invocations=0,this.addFaceCenters(),this.addVertices(),this.addMidpoints(),this.vertices.length!==62)throw new Error("Failed to construct CRS: vertices length is not 62");Object.freeze(this.vertices)}getVertex(e){this.invocations++,this.invocations===1e4&&console.warn("Too many CRS invocations, results should be cached");for(const A of this.vertices)if(uA.distance(e,A)<1e-5)return A;throw new Error("Failed to find vertex in CRS")}addFaceCenters(){qe.forEach(e=>this.add(er(e.axis)))}addVertices(){const e=Math.atan(tg);for(const A of qe)for(let i=0;i<5;i++){const a=(2*i+1)*Math.PI/5,c=er([a+A.angle,e]);uA.transformQuat(c,c,A.quat),this.add(c)}}addMidpoints(){const e=Math.atan(Ln);for(const A of qe)for(let i=0;i<5;i++){const a=2*i*Math.PI/5,c=er([a+A.angle,e]);uA.transformQuat(c,c,A.quat),this.add(c)}}add(e){const A=uA.normalize(uA.create(),e);return this.vertices.find(a=>uA.distance(A,a)<1e-5)?!1:(this.vertices.push(A),!0)}};be.setMatrixArrayType(Float64Array);var Fg=new kg,Ug=class{constructor(){this.faceTriangles=[],this.sphericalTriangles=[],this.polyhedral=new Sg,this.gnomonic=new bg}forward(e,A){const i=qe[A],a=er(e),c=uA.create();uA.transformQuat(c,a,i.inverseQuat);const h=ri(c),g=this.gnomonic.forward(h);g[1]=g[1]-i.angle;const m=this.getFaceTriangleIndex(g),y=this.shouldReflect(g);let v=this.getFaceTriangle(m,y,!1),_=this.getSphericalTriangle(m,A,y);return this.polyhedral.forward(a,_,v)}inverse(e,A){const i=eo(e),a=this.getFaceTriangleIndex(i),c=this.shouldReflect(i),h=this.getFaceTriangle(a,c,!1),g=this.getSphericalTriangle(a,A,c),m=this.polyhedral.inverse(e,h,g);return ri(m)}shouldReflect(e){const[A,i]=e;return fg([A,this.normalizeGamma(i)])[0]>Ln}getFaceTriangleIndex([e,A]){return(Math.floor(A/$e)+10)%10}getFaceTriangle(e,A=!1,i=!1){let a=e;return A&&(a+=i?20:10),this.faceTriangles[a]?this.faceTriangles[a]:(this.faceTriangles[a]=A?this._getReflectedFaceTriangle(e,i):this._getFaceTriangle(e),Object.freeze(this.faceTriangles[a]),this.faceTriangles[a])}_getFaceTriangle(e){const A=Math.floor((e+1)/2)%5,[i,a,c]=Wl(A).getVertices(),h=LA.create();return LA.lerp(h,a,c,.5),e%2===0?[i,h,a]:[i,c,h]}_getReflectedFaceTriangle(e,A=!1){let[i,a,c]=this._getFaceTriangle(e).map(m=>LA.clone(m));const h=e%2===0;LA.negate(i,i);const g=h?a:c;return LA.scaleAndAdd(i,i,g,A?1+1/Math.cos(ei):2),[i,c,a]}getSphericalTriangle(e,A,i=!1){let a=10*A+e;return i&&(a+=120),this.sphericalTriangles[a]?this.sphericalTriangles[a]:(this.sphericalTriangles[a]=this._getSphericalTriangle(e,A,i),Object.freeze(this.sphericalTriangles[a]),this.sphericalTriangles[a])}_getSphericalTriangle(e,A,i=!1){const a=qe[A];return this.getFaceTriangle(e,i,!0).map(g=>{const[m,y]=eo(g),v=[m,y+a.angle],_=er(this.gnomonic.inverse(v));return uA.transformQuat(_,_,a.quat),Fg.getVertex(_)})}normalizeGamma(e){const A=e/yn,i=Math.round(A);return(A-i)*yn}},tr=2,Qg=30,Vg=58n,zg=0x3ffffffffffffffn;function Gg(e){let A=Qg-1,i=e>>1n;for(;A>-1&&(i&0b1n)===0n;)A-=1,i=i>>(A<tr?1n:2n);return A}function qg(e){const A=Gg(e);if(A===-1)return{origin:qe[0],segment:0,S:0n,resolution:A};const i=Number(e>>58n);let a,c;if(A===0)a=qe[i],c=0;else{const v=Math.floor(i/5);a=qe[v],c=(i+a.firstQuintant)%5}if(!a)throw new Error(`Could not parse origin: ${i}`);if(A<tr)return{origin:a,segment:c,S:0n,resolution:A};const h=A-tr+1,g=BigInt(2*h),m=Vg-g,y=(e&zg)>>m;return{origin:a,segment:c,S:y,resolution:A}}be.setMatrixArrayType(Float64Array);Bt.create();var Hg=new Ug;function jg({S:e,segment:A,origin:i,resolution:a}){const{quintant:c,orientation:h}=_g(A,i);if(a===tr-1)return Wl(c);if(a===tr-2)return Og();const g=a-tr+1,m=Pg(e,g,h);return Dg(g,c,m)}function Wg(e,{closedRing:A=!0,segments:i="auto"}={closedRing:!0,segments:"auto"}){const{S:a,segment:c,origin:h,resolution:g}=qg(e);i==="auto"&&(i=Math.max(1,Math.pow(2,6-g)));const C=jg({S:a,segment:c,origin:h,resolution:g}).splitEdges(i).getVertices().map(N=>Hg.inverse(N,h.id)).map(N=>Ql(N)),P=pg(C);return A&&P.push(P[0]),P.reverse(),P}function Yg(e){return BigInt(`0x${e}`)}be.setMatrixArrayType(Float64Array);var qA=(function(e){e=e||{};var A=typeof e<"u"?e:{},i={},a;for(a in A)A.hasOwnProperty(a)&&(i[a]=A[a]);var c="";function h(W){return A.locateFile?A.locateFile(W,c):c+W}var g;typeof document<"u"&&document.currentScript&&(c=document.currentScript.src),c.indexOf("blob:")!==0?c=c.substr(0,c.lastIndexOf("/")+1):c="",g=function(K,cA,eA){var r=new XMLHttpRequest;r.open("GET",K,!0),r.responseType="arraybuffer",r.onload=function(){if(r.status==200||r.status==0&&r.response){cA(r.response);return}var kA=Vn(K);if(kA){cA(kA.buffer);return}eA()},r.onerror=eA,r.send(null)};var m=A.print||console.log.bind(console),y=A.printErr||console.warn.bind(console);for(a in i)i.hasOwnProperty(a)&&(A[a]=i[a]);i=null,A.arguments&&A.arguments;var v=0,_=function(W){v=W},C=function(){return v},P=8;function N(W,K,cA,eA){switch(cA=cA||"i8",cA.charAt(cA.length-1)==="*"&&(cA="i32"),cA){case"i1":X[W>>0]=K;break;case"i8":X[W>>0]=K;break;case"i16":yA[W>>1]=K;break;case"i32":dA[W>>2]=K;break;case"i64":Qn=[K>>>0,(Dt=K,+hc(Dt)>=1?Dt>0?(pc(+gc(Dt/4294967296),4294967295)|0)>>>0:~~+dc((Dt-+(~~Dt>>>0))/4294967296)>>>0:0)],dA[W>>2]=Qn[0],dA[W+4>>2]=Qn[1];break;case"float":OA[W>>2]=K;break;case"double":XA[W>>3]=K;break;default:Ot("invalid type for setValue: "+cA)}}function Y(W,K,cA){switch(K=K||"i8",K.charAt(K.length-1)==="*"&&(K="i32"),K){case"i1":return X[W>>0];case"i8":return X[W>>0];case"i16":return yA[W>>1];case"i32":return dA[W>>2];case"i64":return dA[W>>2];case"float":return OA[W>>2];case"double":return XA[W>>3];default:Ot("invalid type for getValue: "+K)}return null}var Z=!1;function tA(W,K){W||Ot("Assertion failed: "+K)}function R(W){var K=A["_"+W];return tA(K,"Cannot call unknown function "+W+", make sure it is exported"),K}function z(W,K,cA,eA,r){var b={string:function(RA){var Re=0;if(RA!=null&&RA!==0){var xr=(RA.length<<2)+1;Re=Xi(xr),lA(RA,Re,xr)}return Re},array:function(RA){var Re=Xi(RA.length);return U(RA,Re),Re}};function kA(RA){return K==="string"?j(RA):K==="boolean"?!!RA:RA}var WA=R(W),oe=[],NA=0;if(eA)for(var FA=0;FA<eA.length;FA++){var at=b[cA[FA]];at?(NA===0&&(NA=xc()),oe[FA]=at(eA[FA])):oe[FA]=eA[FA]}var GA=WA.apply(null,oe);return GA=kA(GA),NA!==0&&Pc(NA),GA}function rA(W,K,cA,eA){cA=cA||[];var r=cA.every(function(kA){return kA==="number"}),b=K!=="string";return b&&r&&!eA?R(W):function(){return z(W,K,cA,arguments)}}var mA=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0;function G(W,K,cA){for(var eA=K+cA,r=K;W[r]&&!(r>=eA);)++r;if(r-K>16&&W.subarray&&mA)return mA.decode(W.subarray(K,r));for(var b="";K<r;){var kA=W[K++];if(!(kA&128)){b+=String.fromCharCode(kA);continue}var WA=W[K++]&63;if((kA&224)==192){b+=String.fromCharCode((kA&31)<<6|WA);continue}var oe=W[K++]&63;if((kA&240)==224?kA=(kA&15)<<12|WA<<6|oe:kA=(kA&7)<<18|WA<<12|oe<<6|W[K++]&63,kA<65536)b+=String.fromCharCode(kA);else{var NA=kA-65536;b+=String.fromCharCode(55296|NA>>10,56320|NA&1023)}}return b}function j(W,K){return W?G(J,W,K):""}function $(W,K,cA,eA){if(!(eA>0))return 0;for(var r=cA,b=cA+eA-1,kA=0;kA<W.length;++kA){var WA=W.charCodeAt(kA);if(WA>=55296&&WA<=57343){var oe=W.charCodeAt(++kA);WA=65536+((WA&1023)<<10)|oe&1023}if(WA<=127){if(cA>=b)break;K[cA++]=WA}else if(WA<=2047){if(cA+1>=b)break;K[cA++]=192|WA>>6,K[cA++]=128|WA&63}else if(WA<=65535){if(cA+2>=b)break;K[cA++]=224|WA>>12,K[cA++]=128|WA>>6&63,K[cA++]=128|WA&63}else{if(cA+3>=b)break;K[cA++]=240|WA>>18,K[cA++]=128|WA>>12&63,K[cA++]=128|WA>>6&63,K[cA++]=128|WA&63}}return K[cA]=0,cA-r}function lA(W,K,cA){return $(W,J,K,cA)}typeof TextDecoder<"u"&&new TextDecoder("utf-16le");function U(W,K){X.set(W,K)}function k(W,K){return W%K>0&&(W+=K-W%K),W}var x,X,J,yA,dA,OA,XA;function Ae(W){x=W,A.HEAP8=X=new Int8Array(W),A.HEAP16=yA=new Int16Array(W),A.HEAP32=dA=new Int32Array(W),A.HEAPU8=J=new Uint8Array(W),A.HEAPU16=new Uint16Array(W),A.HEAPU32=new Uint32Array(W),A.HEAPF32=OA=new Float32Array(W),A.HEAPF64=XA=new Float64Array(W)}var UA=5271520,QA=28608,jA=A.TOTAL_MEMORY||33554432;A.buffer?x=A.buffer:x=new ArrayBuffer(jA),jA=x.byteLength,Ae(x),dA[QA>>2]=UA;function te(W){for(;W.length>0;){var K=W.shift();if(typeof K=="function"){K();continue}var cA=K.func;typeof cA=="number"?K.arg===void 0?A.dynCall_v(cA):A.dynCall_vi(cA,K.arg):cA(K.arg===void 0?null:K.arg)}}var Ne=[],ic=[],sc=[],Wi=[];function oc(){if(A.preRun)for(typeof A.preRun=="function"&&(A.preRun=[A.preRun]);A.preRun.length;)cc(A.preRun.shift());te(Ne)}function ac(){te(ic)}function lc(){te(sc)}function uc(){if(A.postRun)for(typeof A.postRun=="function"&&(A.postRun=[A.postRun]);A.postRun.length;)fc(A.postRun.shift());te(Wi)}function cc(W){Ne.unshift(W)}function fc(W){Wi.unshift(W)}var hc=Math.abs,dc=Math.ceil,gc=Math.floor,pc=Math.min,wt=0,ur=null;function mc(W){wt++,A.monitorRunDependencies&&A.monitorRunDependencies(wt)}function wc(W){if(wt--,A.monitorRunDependencies&&A.monitorRunDependencies(wt),wt==0&&ur){var K=ur;ur=null,K()}}A.preloadedImages={},A.preloadedAudios={};var At=null,Un="data:application/octet-stream;base64,";function Yi(W){return String.prototype.startsWith?W.startsWith(Un):W.indexOf(Un)===0}var Dt,Qn;At="data:application/octet-stream;base64,AAAAAAAAAAAAAAAAAQAAAAIAAAADAAAABAAAAAUAAAAGAAAAAQAAAAQAAAADAAAABgAAAAUAAAACAAAAAAAAAAIAAAADAAAAAQAAAAQAAAAGAAAAAAAAAAUAAAADAAAABgAAAAQAAAAFAAAAAAAAAAEAAAACAAAABAAAAAUAAAAGAAAAAAAAAAIAAAADAAAAAQAAAAUAAAACAAAAAAAAAAEAAAADAAAABgAAAAQAAAAGAAAAAAAAAAUAAAACAAAAAQAAAAQAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAIAAAADAAAAAAAAAAAAAAACAAAAAAAAAAEAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAYAAAAAAAAABQAAAAAAAAAAAAAABAAAAAUAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAgAAAAMAAAAEAAAABQAAAAYAAAABAAAAAgAAAAMAAAAEAAAABQAAAAYAAAAAAAAAAgAAAAMAAAAEAAAABQAAAAYAAAAAAAAAAQAAAAMAAAAEAAAABQAAAAYAAAAAAAAAAQAAAAIAAAAEAAAABQAAAAYAAAAAAAAAAQAAAAIAAAADAAAABQAAAAYAAAAAAAAAAQAAAAIAAAADAAAABAAAAAYAAAAAAAAAAQAAAAIAAAADAAAABAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAAYAAAAAAAAAAwAAAAIAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAFAAAABAAAAAAAAAABAAAAAAAAAAAAAAAFAAAABQAAAAAAAAAAAAAAAAAAAAYAAAAAAAAABAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAgAAAAQAAAADAAAACAAAAAEAAAAHAAAABgAAAAkAAAAAAAAAAwAAAAIAAAACAAAA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AAAAAAAAAAAFAAAAAQAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAEAAAADAAAAAAAAAAAAAAABAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAADAAAABQAAAAEAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAP////8DAAAAAAAAAAUAAAACAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAEAAAABQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAMAAAAFAAAABQAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAFAAAABQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAAAAAAD/////AwAAAAAAAAAFAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAAAAAABAAAAAwAAAAAAAAAAAAAAAQAAAAAAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAAAAAAAEAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAMAAAADAAAAAAAAAP////8DAAAAAAAAAAUAAAACAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAUAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAFAAAABQAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAwAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAAAAAAADAAAAAwAAAAMAAAAAAAAAAwAAAAAAAAAAAAAA/////wMAAAAAAAAABQAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAAAAAA/////wMAAAAAAAAABQAAAAIAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAMAAAADAAAAAAAAAAAAAAADAAAAAwAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAAMAAAADAAAAAwAAAAMAAAAAAAAAAwAAAAAAAAD/////AwAAAAAAAAAFAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAAAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAAAAAD/////AwAAAAAAAAAFAAAAAgAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAADAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAFAAAAAAAAAAAAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAQAAAAAAAAABAAAAAAAAAAAAAAABAAAAAwAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAP////8DAAAAAAAAAAUAAAACAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAAAAAAAAAAADAAAAAwAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAUAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAFAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAFAAAABQAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAAAAAA/////wMAAAAAAAAABQAAAAIAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAAFAAAAAAAAAAAAAAAFAAAABQAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAQAAAAAAAAABAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAQAAAAAAAAABAAAAAAAAAAMAAAADAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAEAAAAAAAAAAwAAAAUAAAABAAAAAAAAAP////8DAAAAAAAAAAUAAAACAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAFAAAABQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAABAAAAAUAAAABAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAIAAAAFAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAEAAAADAAAAAQAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAAAAAAUAAAAFAAAAAAAAAAAAAAD/////AQAAAAAAAAADAAAABAAAAAIAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAUAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAFAAAAAAAAAAAAAAAFAAAABQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAUAAAABAAAAAAAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAEAAAD//////////wEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAADAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAACAAAAAAAAAAAAAAABAAAAAgAAAAYAAAAEAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAKAAAAAgAAAAAAAAAAAAAAAQAAAAEAAAAFAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAACAAAAAAAAAAAAAAABAAAAAwAAAAcAAAAGAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAABwAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAADgAAAAIAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAMAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAIAAAAAAAAAAAAAAAEAAAAEAAAACAAAAAoAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAALAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAACQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAgAAAAAAAAAAAAAAAQAAAAsAAAAPAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAOAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAIAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAABQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAgAAAAAAAAAAAAAAAQAAAAwAAAAQAAAADAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAADwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAACAAAAAAAAAAAAAAABAAAACgAAABMAAAAIAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAEQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAQAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAACQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAIAAAAAAAAAAAAAAAEAAAANAAAAEQAAAA0AAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAARAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAEwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAATAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAEQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAACAAAAAAAAAAAAAAABAAAADgAAABIAAAAPAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAADwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABIAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAASAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAEwAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAABEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAABIAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAATAAAAAgAAAAAAAAAAAAAAAQAAAP//////////EwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAEgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAASAAAAAAAAABgAAAAAAAAAIQAAAAAAAAAeAAAAAAAAACAAAAADAAAAMQAAAAEAAAAwAAAAAwAAADIAAAADAAAACAAAAAAAAAAFAAAABQAAAAoAAAAFAAAAFgAAAAAAAAAQAAAAAAAAABIAAAAAAAAAKQAAAAEAAAAhAAAAAAAAAB4AAAAAAAAABAAAAAAAAAAAAAAABQAAAAIAAAAFAAAADwAAAAEAAAAIAAAAAAAAAAUAAAAFAAAAHwAAAAEAAAAWAAAAAAAAABAAAAAAAAAAAgAAAAAAAAAGAAAAAAAAAA4AAAAAAAAACgAAAAAAAAALAAAAAAAAABEAAAADAAAAGAAAAAEAAAAXAAAAAwAAABkAAAADAAAAAAAAAAAAAAABAAAABQAAAAkAAAAFAAAABQAAAAAAAAACAAAAAAAAAAYAAAAAAAAAEgAAAAEAAAAKAAAAAAAAAAsAAAAAAAAABAAAAAEAAAADAAAABQAAAAcAAAAFAAAACAAAAAEAAAAAAAAAAAAAAAEAAAAFAAAAEAAAAAEAAAAFAAAAAAAAAAIAAAAAAAAABwAAAAAAAAAVAAAAAAAAACYAAAAAAAAACQAAAAAAAAATAAAAAAAAACIAAAADAAAADgAAAAEAAAAUAAAAAwAAACQAAAADAAAAAwAAAAAAAAANAAAABQAAAB0AAAAFAAAAAQAAAAAAAAAHAAAAAAAAABUAAAAAAAAABgAAAAEAAAAJAAAAAAAAABMAAAAAAAAABAAAAAIAAAAMAAAA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Zhu25b633D8c1YgmzowSQNM25BRKWARArGS08/lNxD+LFssHwmMRQLC5aNcxBgJABL9HT0WRF0CjCmJmOGEOQHsuaVzMP/s/TWJCaGGwBUCeu1PAPLzjP9nqN9DZOBNAKE4JcydbCkCGtbd1qjPzP8dgm9U8jhVAtPeKTkVwDkCeCLss5l37P401XMPLmBdAFd29VMVQDUBg0yA55h75Pz6odcYLCRdApBM4rBrkAkDyAVWgQxbRP4XDMnK20hFAymLlF7EmzD8GUgo9XBHlP3lbK7T9COc/k+OhPthhy7+YGEpnrOvCPzBFhLs15u4/epbqB6H4uz9IuuLF5svev6lzLKY31es/CaQ0envF5z8ZY0xlUADXv7zaz7HYEuI/CfbK1sn16T8uAQfWwxLWPzKn/YuFN94/5KdbC1AFu793fyCSnlfvPzK2y4doAMY/NRg5t1/X6b/shq4QJaHDP5yNIAKPOeI/vpn7BSE30r/X4YQrO6nrv78Ziv/Thto/DqJ1Y6+y5z9l51NaxFrlv8QlA65HOLS/86dxiEc96z+Hj0+LFjneP6LzBZ8LTc2/DaJ1Y6+y579l51NaxFrlP8QlA65HOLQ/8qdxiEc967+Jj0+LFjnev6LzBZ8LTc0/1qdbC1AFuz93fyCSnlfvvzK2y4doAMa/NRg5t1/X6T/vhq4QJaHDv5yNIAKPOeK/wJn7BSE30j/W4YQrO6nrP78Ziv/Thtq/CaQ0envF578XY0xlUADXP7zaz7HYEuK/CvbK1sn16b8rAQfWwxLWvzKn/YuFN96/zWLlF7EmzL8GUgo9XBHlv3lbK7T9COe/kOOhPthhyz+cGEpnrOvCvzBFhLs15u6/c5bqB6H4u79IuuLF5sveP6lzLKY31eu/AQAAAP////8HAAAA/////zEAAAD/////VwEAAP////9hCQAA/////6dBAAD/////kcsBAP/////3kAwA/////8H2VwAAAAAAAAAAAAAAAAACAAAA/////w4AAAD/////YgAAAP////+uAgAA/////8ISAAD/////ToMAAP////8ilwMA/////+4hGQD/////gu2vAAAAAAAAAAAAAAAAAAAAAAACAAAA//////////8BAAAAAwAAAP//////////////////////////////////////////////////////////////////////////AQAAAAAAAAACAAAA////////////////AwAAAP//////////////////////////////////////////////////////////////////////////AQAAAAAAAAACAAAA////////////////AwAAAP//////////////////////////////////////////////////////////////////////////AQAAAAAAAAACAAAA////////////////AwAAAP//////////////////////////////////////////////////////////AgAAAP//////////AQAAAAAAAAD/////////////////////AwAAAP////////////////////////////////////////////////////8DAAAA/////////////////////wAAAAD/////////////////////AQAAAP///////////////wIAAAD///////////////////////////////8DAAAA/////////////////////wAAAAD///////////////8CAAAAAQAAAP////////////////////////////////////////////////////8DAAAA/////////////////////wAAAAD///////////////8CAAAAAQAAAP////////////////////////////////////////////////////8DAAAA/////////////////////wAAAAD///////////////8CAAAAAQAAAP////////////////////////////////////////////////////8DAAAA/////////////////////wAAAAD///////////////8CAAAAAQAAAP////////////////////////////////////////////////////8BAAAAAgAAAP///////////////wAAAAD/////////////////////AwAAAP////////////////////////////////////////////////////8BAAAAAgAAAP///////////////wAAAAD/////////////////////AwAAAP////////////////////////////////////////////////////8BAAAAAgAAAP///////////////wAAAAD/////////////////////AwAAAP////////////////////////////////////////////////////8BAAAAAgAAAP///////////////wAAAAD/////////////////////AwAAAP///////////////////////////////wIAAAD///////////////8BAAAA/////////////////////wAAAAD/////////////////////AwAAAP////////////////////////////////////////////////////8DAAAA/////////////////////wAAAAABAAAA//////////8CAAAA//////////////////////////////////////////////////////////8DAAAA////////////////AgAAAAAAAAABAAAA//////////////////////////////////////////////////////////////////////////8DAAAA////////////////AgAAAAAAAAABAAAA//////////////////////////////////////////////////////////////////////////8DAAAA////////////////AgAAAAAAAAABAAAA//////////////////////////////////////////////////////////////////////////8DAAAAAQAAAP//////////AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAACAAAAAAAAAAIAAAABAAAAAQAAAAIAAAACAAAAAAAAAAUAAAAFAAAAAAAAAAIAAAACAAAAAwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAgAAAAEAAAACAAAAAgAAAAIAAAAAAAAABQAAAAYAAAAAAAAAAgAAAAIAAAADAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAgAAAAAAAAACAAAAAQAAAAMAAAACAAAAAgAAAAAAAAAFAAAABwAAAAAAAAACAAAAAgAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAACAAAAAAAAAAIAAAABAAAABAAAAAIAAAACAAAAAAAAAAUAAAAIAAAAAAAAAAIAAAACAAAAAwAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAIAAAAAAAAAAgAAAAEAAAAAAAAAAgAAAAIAAAAAAAAABQAAAAkAAAAAAAAAAgAAAAIAAAADAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAgAAAAIAAAAAAAAAAwAAAA4AAAACAAAAAAAAAAIAAAADAAAAAAAAAAAAAAACAAAAAgAAAAMAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAACAAAAAgAAAAAAAAADAAAACgAAAAIAAAAAAAAAAgAAAAMAAAABAAAAAAAAAAIAAAACAAAAAwAAAAcAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAIAAAACAAAAAAAAAAMAAAALAAAAAgAAAAAAAAACAAAAAwAAAAIAAAAAAAAAAgAAAAIAAAADAAAACAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAgAAAAIAAAAAAAAAAwAAAAwAAAACAAAAAAAAAAIAAAADAAAAAwAAAAAAAAACAAAAAgAAAAMAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAACAAAAAgAAAAAAAAADAAAADQAAAAIAAAAAAAAAAgAAAAMAAAAEAAAAAAAAAAIAAAACAAAAAwAAAAoAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAIAAAACAAAAAAAAAAMAAAAGAAAAAgAAAAAAAAACAAAAAwAAAA8AAAAAAAAAAgAAAAIAAAADAAAACwAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAgAAAAIAAAAAAAAAAwAAAAcAAAACAAAAAAAAAAIAAAADAAAAEAAAAAAAAAACAAAAAgAAAAMAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAACAAAAAgAAAAAAAAADAAAACAAAAAIAAAAAAAAAAgAAAAMAAAARAAAAAAAAAAIAAAACAAAAAwAAAA0AAAAAAAAAAAAAAAAAAAAAAAAACAAAAAIAAAACAAAAAAAAAAMAAAAJAAAAAgAAAAAAAAACAAAAAwAAABIAAAAAAAAAAgAAAAIAAAADAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAgAAAAIAAAAAAAAAAwAAAAUAAAACAAAA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ZV0gPT0gS0kAZmFjZWlqay5jAF9mYWNlSWprUGVudFRvQ2VsbEJvdW5kYXJ5AGFkamFjZW50RmFjZURpcltjZW50ZXJJSksuZmFjZV1bZmFjZTJdID09IEtJAF9mYWNlSWprVG9DZWxsQm91bmRhcnkAaDNJbmRleC5jAGNvbXBhY3RDZWxscwBsYXRMbmdUb0NlbGwAY2VsbFRvQ2hpbGRQb3MAdmFsaWRhdGVDaGlsZFBvcwBsYXRMbmcuYwBjZWxsQXJlYVJhZHMyAHBvbHlnb24tPm5leHQgPT0gTlVMTABsaW5rZWRHZW8uYwBhZGROZXdMaW5rZWRQb2x5Z29uAG5leHQgIT0gTlVMTABsb29wICE9IE5VTEwAYWRkTmV3TGlua2VkTG9vcABwb2x5Z29uLT5maXJzdCA9PSBOVUxMAGFkZExpbmtlZExvb3AAY29vcmQgIT0gTlVMTABhZGRMaW5rZWRDb29yZABsb29wLT5maXJzdCA9PSBOVUxMAGlubmVyTG9vcHMgIT0gTlVMTABub3JtYWxpemVNdWx0aVBvbHlnb24AYmJveGVzICE9IE5VTEwAY2FuZGlkYXRlcyAhPSBOVUxMAGZpbmRQb2x5Z29uRm9ySG9sZQBjYW5kaWRhdGVCQm94ZXMgIT0gTlVMTAByZXZEaXIgIT0gSU5WQUxJRF9ESUdJVABsb2NhbGlqLmMAY2VsbFRvTG9jYWxJamsAYmFzZUNlbGwgIT0gb3JpZ2luQmFzZUNlbGwAIShvcmlnaW5PblBlbnQgJiYgaW5kZXhPblBlbnQpAGJhc2VDZWxsID09IG9yaWdpbkJhc2VDZWxsAGJhc2VDZWxsICE9IElOVkFMSURfQkFTRV9DRUxMAGxvY2FsSWprVG9DZWxsACFfaXNCYXNlQ2VsbFBlbnRhZ29uKGJhc2VDZWxsKQBiYXNlQ2VsbFJvdGF0aW9ucyA+PSAwAGdyaWRQYXRoQ2VsbHMAcG9seWZpbGwuYwBpdGVyU3RlcFBvbHlnb25Db21wYWN0ADAAdmVydGV4LmMAY2VsbFRvVmVydGV4AGdyYXBoLT5idWNrZXRzICE9IE5VTEwAdmVydGV4R3JhcGguYwBpbml0VmVydGV4R3JhcGgAbm9kZSAhPSBOVUxMAGFkZFZlcnRleE5vZGU=";var yc=28624;function Tc(W,K,cA,eA){Ot("Assertion failed: "+j(W)+", at: "+[K?j(K):"unknown filename",cA,eA?j(eA):"unknown function"])}function Zi(){return X.length}function vc(W,K,cA){J.set(J.subarray(K,K+cA),W)}function _c(W){return A.___errno_location&&(dA[A.___errno_location()>>2]=W),W}function bc(W){Ot("OOM")}function Ec(W){try{var K=new ArrayBuffer(W);return K.byteLength!=W?void 0:(new Int8Array(K).set(X),Lc(K),Ae(K),1)}catch{}}function Mc(W){var K=Zi(),cA=16777216,eA=2147483648-cA;if(W>eA)return!1;for(var r=16777216,b=Math.max(K,r);b<W;)b<=536870912?b=k(2*b,cA):b=Math.min(k((3*b+2147483648)/4,cA),eA);var kA=Ec(b);return!!kA}var Cc=typeof atob=="function"?atob:function(W){var K="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",cA="",eA,r,b,kA,WA,oe,NA,FA=0;W=W.replace(/[^A-Za-z0-9\+\/\=]/g,"");do kA=K.indexOf(W.charAt(FA++)),WA=K.indexOf(W.charAt(FA++)),oe=K.indexOf(W.charAt(FA++)),NA=K.indexOf(W.charAt(FA++)),eA=kA<<2|WA>>4,r=(WA&15)<<4|oe>>2,b=(oe&3)<<6|NA,cA=cA+String.fromCharCode(eA),oe!==64&&(cA=cA+String.fromCharCode(r)),NA!==64&&(cA=cA+String.fromCharCode(b));while(FA<W.length);return cA};function Sc(W){try{for(var K=Cc(W),cA=new Uint8Array(K.length),eA=0;eA<K.length;++eA)cA[eA]=K.charCodeAt(eA);return cA}catch{throw new Error("Converting base64 string to bytes failed.")}}function Vn(W){if(Yi(W))return Sc(W.slice(Un.length))}var Ic={Math,Int8Array,Int32Array,Uint8Array,Float32Array,Float64Array},Bc={b:_,c:C,d:Tc,e:_c,f:Zi,g:vc,h:Mc,i:bc,o:yc,p:QA},nA=(function(W,K,cA){"almost asm";var eA=new W.Int8Array(cA),r=new W.Int32Array(cA);new W.Uint8Array(cA),new W.Float32Array(cA);var b=new W.Float64Array(cA),kA=K.o|0,WA=K.p|0,oe=W.Math.floor,NA=W.Math.abs,FA=W.Math.sqrt,at=W.Math.pow,GA=W.Math.cos,RA=W.Math.sin,Re=W.Math.tan,xr=W.Math.acos,Nc=W.Math.asin,qn=W.Math.atan,De=W.Math.atan2,kt=W.Math.ceil,je=W.Math.imul,Hn=W.Math.min,Rc=W.Math.max,et=W.Math.clz32,IA=K.b,S=K.c,bA=K.d,As=K.e,Dc=K.f,Oc=K.g,kc=K.h,Fc=K.i,E=28640;function Uc(t){return eA=new Int8Array(t),r=new Int32Array(t),b=new Float64Array(t),cA=t,!0}function Qc(t){t=t|0;var n=0;return n=E,E=E+t|0,E=E+15&-16,n|0}function Vc(){return E|0}function zc(t){t=t|0,E=t}function Gc(t,n){t=t|0,E=t}function qc(t,n){t=t|0,n=n|0;var s=0,o=0,l=0;return(t|0)<0?(n=2,n|0):(t|0)>13780509?(n=kr(15,n)|0,n|0):(s=((t|0)<0)<<31>>31,l=le(t|0,s|0,3,0)|0,o=S()|0,s=wA(t|0,s|0,1,0)|0,s=le(l|0,o|0,s|0,S()|0)|0,s=wA(s|0,S()|0,1,0)|0,t=S()|0,r[n>>2]=s,r[n+4>>2]=t,n=0,n|0)}function es(t,n,s,o){return t=t|0,n=n|0,s=s|0,o=o|0,ts(t,n,s,o,0)|0}function ts(t,n,s,o,l){t=t|0,n=n|0,s=s|0,o=o|0,l=l|0;var u=0,f=0,d=0,p=0,w=0;if(p=E,E=E+16|0,f=p,!(rs(t,n,s,o,l)|0))return o=0,E=p,o|0;do if((s|0)>=0){if((s|0)>13780509){if(u=kr(15,f)|0,u|0)break;d=f,f=r[d>>2]|0,d=r[d+4>>2]|0}else u=((s|0)<0)<<31>>31,w=le(s|0,u|0,3,0)|0,d=S()|0,u=wA(s|0,u|0,1,0)|0,u=le(w|0,d|0,u|0,S()|0)|0,u=wA(u|0,S()|0,1,0)|0,d=S()|0,r[f>>2]=u,r[f+4>>2]=d,f=u;if(ht(o|0,0,f<<3|0)|0,l|0){ht(l|0,0,f<<2|0)|0,u=We(t,n,s,o,l,f,d,0)|0;break}u=Me(f,4)|0,u?(w=We(t,n,s,o,u,f,d,0)|0,TA(u),u=w):u=13}else u=2;while(!1);return w=u,E=p,w|0}function rs(t,n,s,o,l){t=t|0,n=n|0,s=s|0,o=o|0,l=l|0;var u=0,f=0,d=0,p=0,w=0,T=0,M=0,I=0,B=0,L=0,D=0;if(D=E,E=E+16|0,B=D,L=D+8|0,I=B,r[I>>2]=t,r[I+4>>2]=n,(s|0)<0)return L=2,E=D,L|0;if(u=o,r[u>>2]=t,r[u+4>>2]=n,u=(l|0)!=0,u&&(r[l>>2]=0),JA(t,n)|0)return L=9,E=D,L|0;r[L>>2]=0;A:do if((s|0)>=1)if(u)for(T=1,w=0,M=0,I=1,u=t;;){if(!(w|M)){if(u=ae(u,n,4,L,B)|0,u|0)break A;if(n=B,u=r[n>>2]|0,n=r[n+4>>2]|0,JA(u,n)|0){u=9;break A}}if(u=ae(u,n,r[26800+(M<<2)>>2]|0,L,B)|0,u|0)break A;if(n=B,u=r[n>>2]|0,n=r[n+4>>2]|0,t=o+(T<<3)|0,r[t>>2]=u,r[t+4>>2]=n,r[l+(T<<2)>>2]=I,t=w+1|0,f=(t|0)==(I|0),d=M+1|0,p=(d|0)==6,JA(u,n)|0){u=9;break A}if(I=I+(p&f&1)|0,(I|0)>(s|0)){u=0;break}else T=T+1|0,w=f?0:t,M=f?p?0:d:M}else for(T=1,w=0,M=0,I=1,u=t;;){if(!(w|M)){if(u=ae(u,n,4,L,B)|0,u|0)break A;if(n=B,u=r[n>>2]|0,n=r[n+4>>2]|0,JA(u,n)|0){u=9;break A}}if(u=ae(u,n,r[26800+(M<<2)>>2]|0,L,B)|0,u|0)break A;if(n=B,u=r[n>>2]|0,n=r[n+4>>2]|0,t=o+(T<<3)|0,r[t>>2]=u,r[t+4>>2]=n,t=w+1|0,f=(t|0)==(I|0),d=M+1|0,p=(d|0)==6,JA(u,n)|0){u=9;break A}if(I=I+(p&f&1)|0,(I|0)>(s|0)){u=0;break}else T=T+1|0,w=f?0:t,M=f?p?0:d:M}else u=0;while(!1);return L=u,E=D,L|0}function We(t,n,s,o,l,u,f,d){t=t|0,n=n|0,s=s|0,o=o|0,l=l|0,u=u|0,f=f|0,d=d|0;var p=0,w=0,T=0,M=0,I=0,B=0,L=0,D=0,F=0,q=0;if(D=E,E=E+16|0,B=D+8|0,L=D,p=Gt(t|0,n|0,u|0,f|0)|0,T=S()|0,M=o+(p<<3)|0,F=M,q=r[F>>2]|0,F=r[F+4>>2]|0,w=(q|0)==(t|0)&(F|0)==(n|0),!((q|0)==0&(F|0)==0|w))do p=wA(p|0,T|0,1,0)|0,p=zt(p|0,S()|0,u|0,f|0)|0,T=S()|0,M=o+(p<<3)|0,q=M,F=r[q>>2]|0,q=r[q+4>>2]|0,w=(F|0)==(t|0)&(q|0)==(n|0);while(!((F|0)==0&(q|0)==0|w));if(p=l+(p<<2)|0,w&&(r[p>>2]|0)<=(d|0)||(q=M,r[q>>2]=t,r[q+4>>2]=n,r[p>>2]=d,(d|0)>=(s|0)))return q=0,E=D,q|0;switch(w=d+1|0,r[B>>2]=0,p=ae(t,n,2,B,L)|0,p|0){case 9:{I=9;break}case 0:{p=L,p=We(r[p>>2]|0,r[p+4>>2]|0,s,o,l,u,f,w)|0,p||(I=9);break}}A:do if((I|0)==9){switch(r[B>>2]=0,p=ae(t,n,3,B,L)|0,p|0){case 9:break;case 0:{if(p=L,p=We(r[p>>2]|0,r[p+4>>2]|0,s,o,l,u,f,w)|0,p|0)break A;break}default:break A}switch(r[B>>2]=0,p=ae(t,n,1,B,L)|0,p|0){case 9:break;case 0:{if(p=L,p=We(r[p>>2]|0,r[p+4>>2]|0,s,o,l,u,f,w)|0,p|0)break A;break}default:break A}switch(r[B>>2]=0,p=ae(t,n,5,B,L)|0,p|0){case 9:break;case 0:{if(p=L,p=We(r[p>>2]|0,r[p+4>>2]|0,s,o,l,u,f,w)|0,p|0)break A;break}default:break A}switch(r[B>>2]=0,p=ae(t,n,4,B,L)|0,p|0){case 9:break;case 0:{if(p=L,p=We(r[p>>2]|0,r[p+4>>2]|0,s,o,l,u,f,w)|0,p|0)break A;break}default:break A}switch(r[B>>2]=0,p=ae(t,n,6,B,L)|0,p|0){case 9:break;case 0:{if(p=L,p=We(r[p>>2]|0,r[p+4>>2]|0,s,o,l,u,f,w)|0,p|0)break A;break}default:break A}return q=0,E=D,q|0}while(!1);return q=p,E=D,q|0}function ae(t,n,s,o,l){t=t|0,n=n|0,s=s|0,o=o|0,l=l|0;var u=0,f=0,d=0,p=0,w=0,T=0,M=0,I=0,B=0,L=0;if(s>>>0>6)return l=1,l|0;if(M=(r[o>>2]|0)%6|0,r[o>>2]=M,(M|0)>0){u=0;do s=vt(s)|0,u=u+1|0;while((u|0)<(r[o>>2]|0))}if(M=AA(t|0,n|0,45)|0,S()|0,T=M&127,T>>>0>121)return l=5,l|0;p=Ee(t,n)|0,u=AA(t|0,n|0,52)|0,S()|0,u=u&15;A:do if(!u)w=8;else{for(;;){if(f=(15-u|0)*3|0,d=AA(t|0,n|0,f|0)|0,S()|0,d=d&7,(d|0)==7){n=5;break}if(L=(Oe(u)|0)==0,u=u+-1|0,I=oA(7,0,f|0)|0,n=n&~(S()|0),B=oA(r[(L?432:16)+(d*28|0)+(s<<2)>>2]|0,0,f|0)|0,f=S()|0,s=r[(L?640:224)+(d*28|0)+(s<<2)>>2]|0,t=B|t&~I,n=f|n,!s){s=0;break A}if(!u){w=8;break A}}return n|0}while(!1);(w|0)==8&&(L=r[848+(T*28|0)+(s<<2)>>2]|0,B=oA(L|0,0,45)|0,t=B|t,n=S()|0|n&-1040385,s=r[4272+(T*28|0)+(s<<2)>>2]|0,(L&127|0)==127&&(L=oA(r[848+(T*28|0)+20>>2]|0,0,45)|0,n=S()|0|n&-1040385,s=r[4272+(T*28|0)+20>>2]|0,t=_t(L|t,n)|0,n=S()|0,r[o>>2]=(r[o>>2]|0)+1)),d=AA(t|0,n|0,45)|0,S()|0,d=d&127;A:do if(ee(d)|0){e:do if((Ee(t,n)|0)==1){if((T|0)!=(d|0))if(os(d,r[7696+(T*28|0)>>2]|0)|0){t=s0(t,n)|0,f=1,n=S()|0;break}else bA(27795,26864,533,26872);switch(p|0){case 3:{t=_t(t,n)|0,n=S()|0,r[o>>2]=(r[o>>2]|0)+1,f=0;break e}case 5:{t=s0(t,n)|0,n=S()|0,r[o>>2]=(r[o>>2]|0)+5,f=0;break e}case 0:return L=9,L|0;default:return L=1,L|0}}else f=0;while(!1);if((s|0)>0){u=0;do t=i0(t,n)|0,n=S()|0,u=u+1|0;while((u|0)!=(s|0))}if((T|0)!=(d|0)){if(!(Wn(d)|0)){if((f|0)!=0|(Ee(t,n)|0)!=5)break;r[o>>2]=(r[o>>2]|0)+1;break}switch(M&127){case 8:case 118:break A}(Ee(t,n)|0)!=3&&(r[o>>2]=(r[o>>2]|0)+1)}}else if((s|0)>0){u=0;do t=_t(t,n)|0,n=S()|0,u=u+1|0;while((u|0)!=(s|0))}while(!1);return r[o>>2]=((r[o>>2]|0)+s|0)%6|0,L=l,r[L>>2]=t,r[L+4>>2]=n,L=0,L|0}function Hc(t,n,s,o){return t=t|0,n=n|0,s=s|0,o=o|0,ns(t,n,s,o)|0?(ht(o|0,0,s*48|0)|0,o=jc(t,n,s,o)|0,o|0):(o=0,o|0)}function ns(t,n,s,o){t=t|0,n=n|0,s=s|0,o=o|0;var l=0,u=0,f=0,d=0,p=0,w=0,T=0,M=0,I=0,B=0,L=0;if(L=E,E=E+16|0,I=L,B=L+8|0,M=I,r[M>>2]=t,r[M+4>>2]=n,(s|0)<0)return B=2,E=L,B|0;if(!s)return B=o,r[B>>2]=t,r[B+4>>2]=n,B=0,E=L,B|0;r[B>>2]=0;A:do if(JA(t,n)|0)t=9;else{l=0,M=t;do{if(t=ae(M,n,4,B,I)|0,t|0)break A;if(n=I,M=r[n>>2]|0,n=r[n+4>>2]|0,l=l+1|0,JA(M,n)|0){t=9;break A}}while((l|0)<(s|0));T=o,r[T>>2]=M,r[T+4>>2]=n,T=s+-1|0,w=0,t=1;do{if(l=26800+(w<<2)|0,(w|0)==5)for(f=r[l>>2]|0,u=0,l=t;;){if(t=I,t=ae(r[t>>2]|0,r[t+4>>2]|0,f,B,I)|0,t|0)break A;if((u|0)!=(T|0))if(p=I,d=r[p>>2]|0,p=r[p+4>>2]|0,t=o+(l<<3)|0,r[t>>2]=d,r[t+4>>2]=p,!(JA(d,p)|0))t=l+1|0;else{t=9;break A}else t=l;if(u=u+1|0,(u|0)>=(s|0))break;l=t}else for(f=I,p=r[l>>2]|0,d=0,l=t,u=r[f>>2]|0,f=r[f+4>>2]|0;;){if(t=ae(u,f,p,B,I)|0,t|0)break A;if(f=I,u=r[f>>2]|0,f=r[f+4>>2]|0,t=o+(l<<3)|0,r[t>>2]=u,r[t+4>>2]=f,t=l+1|0,JA(u,f)|0){t=9;break A}if(d=d+1|0,(d|0)>=(s|0))break;l=t}w=w+1|0}while(w>>>0<6);t=I,t=(M|0)==(r[t>>2]|0)&&(n|0)==(r[t+4>>2]|0)?0:9}while(!1);return B=t,E=L,B|0}function jc(t,n,s,o){t=t|0,n=n|0,s=s|0,o=o|0;var l=0,u=0,f=0,d=0,p=0,w=0,T=0,M=0,I=0;if(M=E,E=E+16|0,f=M,!s)return r[o>>2]=t,r[o+4>>2]=n,o=0,E=M,o|0;do if((s|0)>=0){if((s|0)>13780509){if(l=kr(15,f)|0,l|0)break;u=f,l=r[u>>2]|0,u=r[u+4>>2]|0}else l=((s|0)<0)<<31>>31,T=le(s|0,l|0,3,0)|0,u=S()|0,l=wA(s|0,l|0,1,0)|0,l=le(T|0,u|0,l|0,S()|0)|0,l=wA(l|0,S()|0,1,0)|0,u=S()|0,T=f,r[T>>2]=l,r[T+4>>2]=u;if(w=Me(l,8)|0,!w)l=13;else{if(T=Me(l,4)|0,!T){TA(w),l=13;break}if(l=We(t,n,s,w,T,l,u,0)|0,l|0){TA(w),TA(T);break}if(n=r[f>>2]|0,f=r[f+4>>2]|0,(f|0)>0|(f|0)==0&n>>>0>0){l=0,d=0,p=0;do t=w+(d<<3)|0,u=r[t>>2]|0,t=r[t+4>>2]|0,!((u|0)==0&(t|0)==0)&&(r[T+(d<<2)>>2]|0)==(s|0)&&(I=o+(l<<3)|0,r[I>>2]=u,r[I+4>>2]=t,l=l+1|0),d=wA(d|0,p|0,1,0)|0,p=S()|0;while((p|0)<(f|0)|(p|0)==(f|0)&d>>>0<n>>>0)}TA(w),TA(T),l=0}}else l=2;while(!1);return I=l,E=M,I|0}function jn(t,n,s,o){t=t|0,n=n|0,s=s|0,o=o|0;var l=0,u=0,f=0,d=0,p=0,w=0;for(d=E,E=E+16|0,u=d,f=d+8|0,l=(JA(t,n)|0)==0,l=l?1:2;;){if(r[f>>2]=0,w=(ae(t,n,l,f,u)|0)==0,p=u,w&((r[p>>2]|0)==(s|0)?(r[p+4>>2]|0)==(o|0):0)){t=4;break}if(l=l+1|0,l>>>0>=7){l=7,t=4;break}}return(t|0)==4?(E=d,l|0):0}function Wc(t,n,s,o){t=t|0,n=n|0,s=s|0,o=o|0;var l=0,u=0,f=0,d=0,p=0,w=0;if(d=E,E=E+48|0,l=d+16|0,u=d+8|0,f=d,s=pr(s)|0,s|0)return f=s,E=d,f|0;if(w=t,p=r[w+4>>2]|0,s=u,r[s>>2]=r[w>>2],r[s+4>>2]=p,xs(u,l),s=cs(l,n,f)|0,!s){if(n=r[u>>2]|0,u=r[t+8>>2]|0,(u|0)>0){l=r[t+12>>2]|0,s=0;do n=(r[l+(s<<3)>>2]|0)+n|0,s=s+1|0;while((s|0)<(u|0))}s=f,l=r[s>>2]|0,s=r[s+4>>2]|0,u=((n|0)<0)<<31>>31,(s|0)<(u|0)|(s|0)==(u|0)&l>>>0<n>>>0?(s=f,r[s>>2]=n,r[s+4>>2]=u,s=u):n=l,p=wA(n|0,s|0,12,0)|0,w=S()|0,s=f,r[s>>2]=p,r[s+4>>2]=w,s=o,r[s>>2]=p,r[s+4>>2]=w,s=0}return w=s,E=d,w|0}function is(t,n,s,o,l,u,f){t=t|0,n=n|0,s=s|0,o=o|0,l=l|0,u=u|0,f=f|0;var d=0,p=0,w=0,T=0,M=0,I=0,B=0,L=0,D=0,F=0,q=0,V=0,Q=0,O=0,sA=0,gA=0,fA=0,SA=0,BA=0,DA=0,_A=0,pA=0,iA=0,xA=0,YA=0,PA=0,ZA=0,ve=0,js=0;if(YA=E,E=E+64|0,_A=YA+48|0,pA=YA+32|0,iA=YA+24|0,sA=YA+8|0,gA=YA,p=r[t>>2]|0,(p|0)<=0)return xA=0,E=YA,xA|0;for(fA=t+4|0,SA=_A+8|0,BA=pA+8|0,DA=sA+8|0,d=0,Q=0;;){w=r[fA>>2]|0,V=w+(Q<<4)|0,r[_A>>2]=r[V>>2],r[_A+4>>2]=r[V+4>>2],r[_A+8>>2]=r[V+8>>2],r[_A+12>>2]=r[V+12>>2],(Q|0)==(p+-1|0)?(r[pA>>2]=r[w>>2],r[pA+4>>2]=r[w+4>>2],r[pA+8>>2]=r[w+8>>2],r[pA+12>>2]=r[w+12>>2]):(V=w+(Q+1<<4)|0,r[pA>>2]=r[V>>2],r[pA+4>>2]=r[V+4>>2],r[pA+8>>2]=r[V+8>>2],r[pA+12>>2]=r[V+12>>2]),p=sf(_A,pA,o,iA)|0;A:do if(p)w=0,d=p;else if(p=iA,w=r[p>>2]|0,p=r[p+4>>2]|0,(p|0)>0|(p|0)==0&w>>>0>0){q=0,V=0;e:for(;;){if(ZA=1/(+(w>>>0)+4294967296*+(p|0)),js=+b[_A>>3],p=fe(w|0,p|0,q|0,V|0)|0,ve=+(p>>>0)+4294967296*+(S()|0),PA=+(q>>>0)+4294967296*+(V|0),b[sA>>3]=ZA*(js*ve)+ZA*(+b[pA>>3]*PA),b[DA>>3]=ZA*(+b[SA>>3]*ve)+ZA*(+b[BA>>3]*PA),p=o0(sA,o,gA)|0,p|0){d=p;break}F=gA,D=r[F>>2]|0,F=r[F+4>>2]|0,I=Gt(D|0,F|0,n|0,s|0)|0,T=S()|0,p=f+(I<<3)|0,M=p,w=r[M>>2]|0,M=r[M+4>>2]|0;t:do if((w|0)==0&(M|0)==0)O=p,xA=16;else for(B=0,L=0;;){if((B|0)>(s|0)|(B|0)==(s|0)&L>>>0>n>>>0){d=1;break e}if((w|0)==(D|0)&(M|0)==(F|0))break t;if(p=wA(I|0,T|0,1,0)|0,I=zt(p|0,S()|0,n|0,s|0)|0,T=S()|0,L=wA(L|0,B|0,1,0)|0,B=S()|0,p=f+(I<<3)|0,M=p,w=r[M>>2]|0,M=r[M+4>>2]|0,(w|0)==0&(M|0)==0){O=p,xA=16;break}}while(!1);if((xA|0)==16&&(xA=0,!((D|0)==0&(F|0)==0))&&(L=O,r[L>>2]=D,r[L+4>>2]=F,L=u+(r[l>>2]<<3)|0,r[L>>2]=D,r[L+4>>2]=F,L=l,L=wA(r[L>>2]|0,r[L+4>>2]|0,1,0)|0,D=S()|0,F=l,r[F>>2]=L,r[F+4>>2]=D),q=wA(q|0,V|0,1,0)|0,V=S()|0,p=iA,w=r[p>>2]|0,p=r[p+4>>2]|0,!((p|0)>(V|0)|(p|0)==(V|0)&w>>>0>q>>>0)){w=1;break A}}w=0}else w=1;while(!1);if(Q=Q+1|0,!w){xA=21;break}if(p=r[t>>2]|0,(Q|0)>=(p|0)){d=0,xA=21;break}}return(xA|0)==21?(E=YA,d|0):0}function Yc(t,n,s,o){t=t|0,n=n|0,s=s|0,o=o|0;var l=0,u=0,f=0,d=0,p=0,w=0,T=0,M=0,I=0,B=0,L=0,D=0,F=0,q=0,V=0,Q=0,O=0,sA=0,gA=0,fA=0,SA=0,BA=0,DA=0,_A=0,pA=0,iA=0,xA=0,YA=0,PA=0,ZA=0,ve=0;if(ve=E,E=E+112|0,xA=ve+80|0,p=ve+72|0,YA=ve,PA=ve+56|0,l=pr(s)|0,l|0)return ZA=l,E=ve,ZA|0;if(w=t+8|0,ZA=Ye((r[w>>2]<<5)+32|0)|0,!ZA)return ZA=13,E=ve,ZA|0;if(d0(t,ZA),l=pr(s)|0,!l){if(pA=t,iA=r[pA+4>>2]|0,l=p,r[l>>2]=r[pA>>2],r[l+4>>2]=iA,xs(p,xA),l=cs(xA,n,YA)|0,l)pA=0,iA=0;else{if(l=r[p>>2]|0,u=r[w>>2]|0,(u|0)>0){f=r[t+12>>2]|0,s=0;do l=(r[f+(s<<3)>>2]|0)+l|0,s=s+1|0;while((s|0)!=(u|0));s=l}else s=l;l=YA,u=r[l>>2]|0,l=r[l+4>>2]|0,f=((s|0)<0)<<31>>31,(l|0)<(f|0)|(l|0)==(f|0)&u>>>0<s>>>0?(l=YA,r[l>>2]=s,r[l+4>>2]=f,l=f):s=u,pA=wA(s|0,l|0,12,0)|0,iA=S()|0,l=YA,r[l>>2]=pA,r[l+4>>2]=iA,l=0}if(!l){if(s=Me(pA,8)|0,!s)return TA(ZA),ZA=13,E=ve,ZA|0;if(d=Me(pA,8)|0,!d)return TA(ZA),TA(s),ZA=13,E=ve,ZA|0;DA=xA,r[DA>>2]=0,r[DA+4>>2]=0,DA=t,_A=r[DA+4>>2]|0,l=p,r[l>>2]=r[DA>>2],r[l+4>>2]=_A,l=is(p,pA,iA,n,xA,s,d)|0;A:do if(l)TA(s),TA(d),TA(ZA);else{e:do if((r[w>>2]|0)>0){for(f=t+12|0,u=0;l=is((r[f>>2]|0)+(u<<3)|0,pA,iA,n,xA,s,d)|0,u=u+1|0,!(l|0);)if((u|0)>=(r[w>>2]|0))break e;TA(s),TA(d),TA(ZA);break A}while(!1);(iA|0)>0|(iA|0)==0&pA>>>0>0&&ht(d|0,0,pA<<3|0)|0,_A=xA,DA=r[_A+4>>2]|0;e:do if((DA|0)>0|(DA|0)==0&(r[_A>>2]|0)>>>0>0){fA=s,SA=d,BA=s,DA=d,_A=s,l=s,O=s,sA=d,gA=d,s=d;t:for(;;){for(F=0,q=0,V=0,Q=0,u=0,f=0;;){d=YA,p=d+56|0;do r[d>>2]=0,d=d+4|0;while((d|0)<(p|0));if(n=fA+(F<<3)|0,w=r[n>>2]|0,n=r[n+4>>2]|0,rs(w,n,1,YA,0)|0){d=YA,p=d+56|0;do r[d>>2]=0,d=d+4|0;while((d|0)<(p|0));d=Me(7,4)|0,d|0&&(We(w,n,1,YA,d,7,0,0)|0,TA(d))}for(D=0;;){L=YA+(D<<3)|0,B=r[L>>2]|0,L=r[L+4>>2]|0;r:do if((B|0)==0&(L|0)==0)d=u,p=f;else{if(T=Gt(B|0,L|0,pA|0,iA|0)|0,w=S()|0,d=o+(T<<3)|0,n=d,p=r[n>>2]|0,n=r[n+4>>2]|0,!((p|0)==0&(n|0)==0)){M=0,I=0;do{if((M|0)>(iA|0)|(M|0)==(iA|0)&I>>>0>pA>>>0)break t;if((p|0)==(B|0)&(n|0)==(L|0)){d=u,p=f;break r}d=wA(T|0,w|0,1,0)|0,T=zt(d|0,S()|0,pA|0,iA|0)|0,w=S()|0,I=wA(I|0,M|0,1,0)|0,M=S()|0,d=o+(T<<3)|0,n=d,p=r[n>>2]|0,n=r[n+4>>2]|0}while(!((p|0)==0&(n|0)==0))}if((B|0)==0&(L|0)==0){d=u,p=f;break}bt(B,L,PA)|0,g0(t,ZA,PA)|0&&(I=wA(u|0,f|0,1,0)|0,f=S()|0,M=d,r[M>>2]=B,r[M+4>>2]=L,u=SA+(u<<3)|0,r[u>>2]=B,r[u+4>>2]=L,u=I),d=u,p=f}while(!1);if(D=D+1|0,D>>>0>=7)break;u=d,f=p}if(F=wA(F|0,q|0,1,0)|0,q=S()|0,V=wA(V|0,Q|0,1,0)|0,Q=S()|0,f=xA,u=r[f>>2]|0,f=r[f+4>>2]|0,(Q|0)<(f|0)|(Q|0)==(f|0)&V>>>0<u>>>0)u=d,f=p;else break}if((f|0)>0|(f|0)==0&u>>>0>0){u=0,f=0;do Q=fA+(u<<3)|0,r[Q>>2]=0,r[Q+4>>2]=0,u=wA(u|0,f|0,1,0)|0,f=S()|0,Q=xA,V=r[Q+4>>2]|0;while((f|0)<(V|0)|((f|0)==(V|0)?u>>>0<(r[Q>>2]|0)>>>0:0))}if(Q=xA,r[Q>>2]=d,r[Q+4>>2]=p,(p|0)>0|(p|0)==0&d>>>0>0)D=s,F=gA,q=_A,V=sA,Q=SA,s=O,gA=l,sA=BA,O=D,l=F,_A=DA,DA=q,BA=V,SA=fA,fA=Q;else break e}TA(BA),TA(DA),TA(ZA),l=1;break A}else l=d;while(!1);TA(ZA),TA(s),TA(l),l=0}while(!1);return ZA=l,E=ve,ZA|0}}return TA(ZA),ZA=l,E=ve,ZA|0}function Zc(t,n,s){t=t|0,n=n|0,s=s|0;var o=0,l=0,u=0,f=0,d=0,p=0,w=0,T=0;if(T=E,E=E+176|0,p=T,(n|0)<1)return ks(s,0,0),w=0,E=T,w|0;for(d=t,d=AA(r[d>>2]|0,r[d+4>>2]|0,52)|0,S()|0,ks(s,(n|0)>6?n:6,d&15),d=0;o=t+(d<<3)|0,o=Qt(r[o>>2]|0,r[o+4>>2]|0,p)|0,!(o|0);){if(o=r[p>>2]|0,(o|0)>0){f=0;do u=p+8+(f<<4)|0,f=f+1|0,o=p+8+(((f|0)%(o|0)|0)<<4)|0,l=Eh(s,o,u)|0,l?Qs(s,l)|0:bh(s,u,o)|0,o=r[p>>2]|0;while((f|0)<(o|0))}if(d=d+1|0,(d|0)>=(n|0)){o=0,w=13;break}}return(w|0)==13?(E=T,o|0):(Fs(s),w=o,E=T,w|0)}function Xc(t,n,s){t=t|0,n=n|0,s=s|0;var o=0,l=0,u=0,f=0;if(u=E,E=E+32|0,o=u,l=u+16|0,t=Zc(t,n,l)|0,t|0)return s=t,E=u,s|0;if(r[s>>2]=0,r[s+4>>2]=0,r[s+8>>2]=0,t=Us(l)|0,t|0)do{n=Kf(s)|0;do $f(n,t)|0,f=t+16|0,r[o>>2]=r[f>>2],r[o+4>>2]=r[f+4>>2],r[o+8>>2]=r[f+8>>2],r[o+12>>2]=r[f+12>>2],Qs(l,t)|0,t=Mh(l,o)|0;while((t|0)!=0);t=Us(l)|0}while((t|0)!=0);return Fs(l),t=Ah(s)|0,t?(Is(s),f=t,E=u,f|0):(f=0,E=u,f|0)}function ee(t){return t=t|0,t>>>0>121?(t=0,t|0):(t=r[7696+(t*28|0)+16>>2]|0,t|0)}function Wn(t){return t=t|0,(t|0)==4|(t|0)==117|0}function ss(t){return t=t|0,r[11120+((r[t>>2]|0)*216|0)+((r[t+4>>2]|0)*72|0)+((r[t+8>>2]|0)*24|0)+(r[t+12>>2]<<3)>>2]|0}function Jc(t){return t=t|0,r[11120+((r[t>>2]|0)*216|0)+((r[t+4>>2]|0)*72|0)+((r[t+8>>2]|0)*24|0)+(r[t+12>>2]<<3)+4>>2]|0}function Kc(t,n){t=t|0,n=n|0,t=7696+(t*28|0)|0,r[n>>2]=r[t>>2],r[n+4>>2]=r[t+4>>2],r[n+8>>2]=r[t+8>>2],r[n+12>>2]=r[t+12>>2]}function $c(t,n){t=t|0,n=n|0;var s=0,o=0;if(n>>>0>20)return n=-1,n|0;do if((r[11120+(n*216|0)>>2]|0)!=(t|0))if((r[11120+(n*216|0)+8>>2]|0)!=(t|0))if((r[11120+(n*216|0)+16>>2]|0)!=(t|0))if((r[11120+(n*216|0)+24>>2]|0)!=(t|0))if((r[11120+(n*216|0)+32>>2]|0)!=(t|0))if((r[11120+(n*216|0)+40>>2]|0)!=(t|0))if((r[11120+(n*216|0)+48>>2]|0)!=(t|0))if((r[11120+(n*216|0)+56>>2]|0)!=(t|0))if((r[11120+(n*216|0)+64>>2]|0)!=(t|0))if((r[11120+(n*216|0)+72>>2]|0)!=(t|0))if((r[11120+(n*216|0)+80>>2]|0)!=(t|0))if((r[11120+(n*216|0)+88>>2]|0)!=(t|0))if((r[11120+(n*216|0)+96>>2]|0)!=(t|0))if((r[11120+(n*216|0)+104>>2]|0)!=(t|0))if((r[11120+(n*216|0)+112>>2]|0)!=(t|0))if((r[11120+(n*216|0)+120>>2]|0)!=(t|0))if((r[11120+(n*216|0)+128>>2]|0)!=(t|0))if((r[11120+(n*216|0)+136>>2]|0)==(t|0))t=2,s=1,o=2;else{if((r[11120+(n*216|0)+144>>2]|0)==(t|0)){t=0,s=2,o=0;break}if((r[11120+(n*216|0)+152>>2]|0)==(t|0)){t=0,s=2,o=1;break}if((r[11120+(n*216|0)+160>>2]|0)==(t|0)){t=0,s=2,o=2;break}if((r[11120+(n*216|0)+168>>2]|0)==(t|0)){t=1,s=2,o=0;break}if((r[11120+(n*216|0)+176>>2]|0)==(t|0)){t=1,s=2,o=1;break}if((r[11120+(n*216|0)+184>>2]|0)==(t|0)){t=1,s=2,o=2;break}if((r[11120+(n*216|0)+192>>2]|0)==(t|0)){t=2,s=2,o=0;break}if((r[11120+(n*216|0)+200>>2]|0)==(t|0)){t=2,s=2,o=1;break}if((r[11120+(n*216|0)+208>>2]|0)==(t|0)){t=2,s=2,o=2;break}else t=-1;return t|0}else t=2,s=1,o=1;else t=2,s=1,o=0;else t=1,s=1,o=2;else t=1,s=1,o=1;else t=1,s=1,o=0;else t=0,s=1,o=2;else t=0,s=1,o=1;else t=0,s=1,o=0;else t=2,s=0,o=2;else t=2,s=0,o=1;else t=2,s=0,o=0;else t=1,s=0,o=2;else t=1,s=0,o=1;else t=1,s=0,o=0;else t=0,s=0,o=2;else t=0,s=0,o=1;else t=0,s=0,o=0;while(!1);return n=r[11120+(n*216|0)+(s*72|0)+(t*24|0)+(o<<3)+4>>2]|0,n|0}function os(t,n){return t=t|0,n=n|0,(r[7696+(t*28|0)+20>>2]|0)==(n|0)?(n=1,n|0):(n=(r[7696+(t*28|0)+24>>2]|0)==(n|0),n|0)}function Yn(t,n){return t=t|0,n=n|0,r[848+(t*28|0)+(n<<2)>>2]|0}function Zn(t,n){return t=t|0,n=n|0,(r[848+(t*28|0)>>2]|0)==(n|0)?(n=0,n|0):(r[848+(t*28|0)+4>>2]|0)==(n|0)?(n=1,n|0):(r[848+(t*28|0)+8>>2]|0)==(n|0)?(n=2,n|0):(r[848+(t*28|0)+12>>2]|0)==(n|0)?(n=3,n|0):(r[848+(t*28|0)+16>>2]|0)==(n|0)?(n=4,n|0):(r[848+(t*28|0)+20>>2]|0)==(n|0)?(n=5,n|0):((r[848+(t*28|0)+24>>2]|0)==(n|0)?6:7)|0}function Af(){return 122}function ef(t){t=t|0;var n=0,s=0,o=0;n=0;do oA(n|0,0,45)|0,o=S()|0|134225919,s=t+(n<<3)|0,r[s>>2]=-1,r[s+4>>2]=o,n=n+1|0;while((n|0)!=122);return 0}function tf(t){t=t|0;var n=0,s=0,o=0;return o=+b[t+16>>3],s=+b[t+24>>3],n=o-s,+(o<s?n+6.283185307179586:n)}function as(t){return t=t|0,+b[t+16>>3]<+b[t+24>>3]|0}function rf(t){return t=t|0,+(+b[t>>3]-+b[t+8>>3])}function Xn(t,n){t=t|0,n=n|0;var s=0,o=0,l=0;return s=+b[n>>3],!(s>=+b[t+8>>3])||!(s<=+b[t>>3])?(n=0,n|0):(o=+b[t+16>>3],s=+b[t+24>>3],l=+b[n+8>>3],n=l>=s,t=l<=o&1,o<s?n&&(t=1):n||(t=0),n=(t|0)!=0,n|0)}function Jn(t,n){t=t|0,n=n|0;var s=0,o=0,l=0,u=0,f=0,d=0,p=0,w=0,T=0;return+b[t>>3]<+b[n+8>>3]||+b[t+8>>3]>+b[n>>3]?(o=0,o|0):(u=+b[t+16>>3],s=t+24|0,T=+b[s>>3],f=u<T,o=n+16|0,w=+b[o>>3],l=n+24|0,p=+b[l>>3],d=w<p,n=T-w<p-u,t=f?d|n?1:2:0,n=d?f?1:n?2:1:0,u=+Be(u,t),u<+Be(+b[l>>3],n)||(T=+Be(+b[s>>3],t),T>+Be(+b[o>>3],n))?(d=0,d|0):(d=1,d|0))}function nf(t,n,s,o){t=t|0,n=n|0,s=s|0,o=o|0;var l=0,u=0,f=0,d=0,p=0;u=+b[t+16>>3],p=+b[t+24>>3],t=u<p,d=+b[n+16>>3],f=+b[n+24>>3],l=d<f,n=p-d<f-u,r[s>>2]=t?l|n?1:2:0,r[o>>2]=l?t?1:n?2:1:0}function ls(t,n){t=t|0,n=n|0;var s=0,o=0,l=0,u=0,f=0,d=0,p=0,w=0,T=0;return+b[t>>3]<+b[n>>3]||+b[t+8>>3]>+b[n+8>>3]?(o=0,o|0):(o=t+16|0,p=+b[o>>3],u=+b[t+24>>3],f=p<u,s=n+16|0,T=+b[s>>3],l=n+24|0,w=+b[l>>3],d=T<w,n=u-T<w-p,t=f?d|n?1:2:0,n=d?f?1:n?2:1:0,u=+Be(u,t),u<=+Be(+b[l>>3],n)?(T=+Be(+b[o>>3],t),d=T>=+Be(+b[s>>3],n),d|0):(d=0,d|0))}function us(t,n){t=t|0,n=n|0;var s=0,o=0,l=0,u=0,f=0,d=0;l=E,E=E+176|0,o=l,r[o>>2]=4,d=+b[n>>3],b[o+8>>3]=d,u=+b[n+16>>3],b[o+16>>3]=u,b[o+24>>3]=d,d=+b[n+24>>3],b[o+32>>3]=d,f=+b[n+8>>3],b[o+40>>3]=f,b[o+48>>3]=d,b[o+56>>3]=f,b[o+64>>3]=u,n=o+72|0,s=n+96|0;do r[n>>2]=0,n=n+4|0;while((n|0)<(s|0));qt(t|0,o|0,168)|0,E=l}function cs(t,n,s){t=t|0,n=n|0,s=s|0;var o=0,l=0,u=0,f=0,d=0,p=0,w=0,T=0,M=0,I=0,B=0,L=0,D=0,F=0;L=E,E=E+288|0,T=L+264|0,M=L+96|0,w=L,d=w,p=d+96|0;do r[d>>2]=0,d=d+4|0;while((d|0)<(p|0));return n=l0(n,w)|0,n|0?(B=n,E=L,B|0):(p=w,w=r[p>>2]|0,p=r[p+4>>2]|0,bt(w,p,T)|0,Qt(w,p,M)|0,f=+dr(T,M+8|0),b[T>>3]=+b[t>>3],p=T+8|0,b[p>>3]=+b[t+16>>3],b[M>>3]=+b[t+8>>3],w=M+8|0,b[w>>3]=+b[t+24>>3],l=+dr(T,M),F=+b[p>>3]-+b[w>>3],u=+NA(+F),D=+b[T>>3]-+b[M>>3],o=+NA(+D),!(F==0|D==0)&&(F=+qs(+u,+o),F=+kt(+(l*l/+Qr(+(F/+Qr(+u,+o)),3)/(f*(f*2.59807621135)*.8))),b[kA>>3]=F,I=~~F>>>0,B=+NA(F)>=1?F>0?~~+Hn(+oe(F/4294967296),4294967295)>>>0:~~+kt((F-+(~~F>>>0))/4294967296)>>>0:0,(r[kA+4>>2]&2146435072|0)!=2146435072)?(M=(I|0)==0&(B|0)==0,n=s,r[n>>2]=M?1:I,r[n+4>>2]=M?0:B,n=0):n=1,B=n,E=L,B|0)}function sf(t,n,s,o){t=t|0,n=n|0,s=s|0,o=o|0;var l=0,u=0,f=0,d=0,p=0,w=0,T=0;w=E,E=E+288|0,f=w+264|0,d=w+96|0,p=w,l=p,u=l+96|0;do r[l>>2]=0,l=l+4|0;while((l|0)<(u|0));return s=l0(s,p)|0,s|0?(o=s,E=w,o|0):(s=p,l=r[s>>2]|0,s=r[s+4>>2]|0,bt(l,s,f)|0,Qt(l,s,d)|0,T=+dr(f,d+8|0),T=+kt(+(+dr(t,n)/(T*2))),b[kA>>3]=T,s=~~T>>>0,l=+NA(T)>=1?T>0?~~+Hn(+oe(T/4294967296),4294967295)>>>0:~~+kt((T-+(~~T>>>0))/4294967296)>>>0:0,(r[kA+4>>2]&2146435072|0)==2146435072?(o=1,E=w,o|0):(p=(s|0)==0&(l|0)==0,r[o>>2]=p?1:s,r[o+4>>2]=p?0:l,o=0,E=w,o|0))}function of(t,n){t=t|0,n=+n;var s=0,o=0,l=0,u=0,f=0,d=0,p=0,w=0,T=0;u=t+16|0,f=+b[u>>3],s=t+24|0,l=+b[s>>3],o=f-l,o=f<l?o+6.283185307179586:o,w=+b[t>>3],d=t+8|0,p=+b[d>>3],T=w-p,o=(o*n-o)*.5,n=(T*n-T)*.5,w=w+n,b[t>>3]=w>1.5707963267948966?1.5707963267948966:w,n=p-n,b[d>>3]=n<-1.5707963267948966?-1.5707963267948966:n,n=f+o,n=n>3.141592653589793?n+-6.283185307179586:n,b[u>>3]=n<-3.141592653589793?n+6.283185307179586:n,n=l-o,n=n>3.141592653589793?n+-6.283185307179586:n,b[s>>3]=n<-3.141592653589793?n+6.283185307179586:n}function af(t,n,s,o){t=t|0,n=n|0,s=s|0,o=o|0,r[t>>2]=n,r[t+4>>2]=s,r[t+8>>2]=o}function lf(t,n){t=t|0,n=n|0;var s=0,o=0,l=0,u=0,f=0,d=0,p=0,w=0,T=0,M=0,I=0;M=n+8|0,r[M>>2]=0,p=+b[t>>3],f=+NA(+p),w=+b[t+8>>3],d=+NA(+w)*1.1547005383792515,f=f+d*.5,s=~~f,t=~~d,f=f-+(s|0),d=d-+(t|0);do if(f<.5)if(f<.3333333333333333)if(r[n>>2]=s,d<(f+1)*.5){r[n+4>>2]=t;break}else{t=t+1|0,r[n+4>>2]=t;break}else if(I=1-f,t=(!(d<I)&1)+t|0,r[n+4>>2]=t,I<=d&d<f*2){s=s+1|0,r[n>>2]=s;break}else{r[n>>2]=s;break}else{if(!(f<.6666666666666666))if(s=s+1|0,r[n>>2]=s,d<f*.5){r[n+4>>2]=t;break}else{t=t+1|0,r[n+4>>2]=t;break}if(d<1-f){if(r[n+4>>2]=t,f*2+-1<d){r[n>>2]=s;break}}else t=t+1|0,r[n+4>>2]=t;s=s+1|0,r[n>>2]=s}while(!1);do if(p<0)if(t&1){T=(t+1|0)/2|0,T=fe(s|0,((s|0)<0)<<31>>31|0,T|0,((T|0)<0)<<31>>31|0)|0,s=~~(+(s|0)-((+(T>>>0)+4294967296*+(S()|0))*2+1)),r[n>>2]=s;break}else{T=(t|0)/2|0,T=fe(s|0,((s|0)<0)<<31>>31|0,T|0,((T|0)<0)<<31>>31|0)|0,s=~~(+(s|0)-(+(T>>>0)+4294967296*+(S()|0))*2),r[n>>2]=s;break}while(!1);T=n+4|0,w<0&&(s=s-((t<<1|1|0)/2|0)|0,r[n>>2]=s,t=0-t|0,r[T>>2]=t),o=t-s|0,(s|0)<0?(l=0-s|0,r[T>>2]=o,r[M>>2]=l,r[n>>2]=0,t=o,s=0):l=0,(t|0)<0&&(s=s-t|0,r[n>>2]=s,l=l-t|0,r[M>>2]=l,r[T>>2]=0,t=0),u=s-l|0,o=t-l|0,(l|0)<0&&(r[n>>2]=u,r[T>>2]=o,r[M>>2]=0,t=o,s=u,l=0),o=(t|0)<(s|0)?t:s,o=(l|0)<(o|0)?l:o,!((o|0)<=0)&&(r[n>>2]=s-o,r[T>>2]=t-o,r[M>>2]=l-o)}function pe(t){t=t|0;var n=0,s=0,o=0,l=0,u=0,f=0;n=r[t>>2]|0,f=t+4|0,s=r[f>>2]|0,(n|0)<0&&(s=s-n|0,r[f>>2]=s,u=t+8|0,r[u>>2]=(r[u>>2]|0)-n,r[t>>2]=0,n=0),(s|0)<0?(n=n-s|0,r[t>>2]=n,u=t+8|0,l=(r[u>>2]|0)-s|0,r[u>>2]=l,r[f>>2]=0,s=0):(l=t+8|0,u=l,l=r[l>>2]|0),(l|0)<0&&(n=n-l|0,r[t>>2]=n,s=s-l|0,r[f>>2]=s,r[u>>2]=0,l=0),o=(s|0)<(n|0)?s:n,o=(l|0)<(o|0)?l:o,!((o|0)<=0)&&(r[t>>2]=n-o,r[f>>2]=s-o,r[u>>2]=l-o)}function yt(t,n){t=t|0,n=n|0;var s=0,o=0;o=r[t+8>>2]|0,s=+((r[t+4>>2]|0)-o|0),b[n>>3]=+((r[t>>2]|0)-o|0)-s*.5,b[n+8>>3]=s*.8660254037844386}function Te(t,n,s){t=t|0,n=n|0,s=s|0,r[s>>2]=(r[n>>2]|0)+(r[t>>2]|0),r[s+4>>2]=(r[n+4>>2]|0)+(r[t+4>>2]|0),r[s+8>>2]=(r[n+8>>2]|0)+(r[t+8>>2]|0)}function Kn(t,n,s){t=t|0,n=n|0,s=s|0,r[s>>2]=(r[t>>2]|0)-(r[n>>2]|0),r[s+4>>2]=(r[t+4>>2]|0)-(r[n+4>>2]|0),r[s+8>>2]=(r[t+8>>2]|0)-(r[n+8>>2]|0)}function fs(t,n){t=t|0,n=n|0;var s=0,o=0;s=je(r[t>>2]|0,n)|0,r[t>>2]=s,s=t+4|0,o=je(r[s>>2]|0,n)|0,r[s>>2]=o,t=t+8|0,n=je(r[t>>2]|0,n)|0,r[t>>2]=n}function Nr(t){t=t|0;var n=0,s=0,o=0,l=0,u=0,f=0,d=0;f=r[t>>2]|0,d=(f|0)<0,o=(r[t+4>>2]|0)-(d?f:0)|0,u=(o|0)<0,l=(u?0-o|0:0)+((r[t+8>>2]|0)-(d?f:0))|0,s=(l|0)<0,t=s?0:l,n=(u?0:o)-(s?l:0)|0,l=(d?0:f)-(u?o:0)-(s?l:0)|0,s=(n|0)<(l|0)?n:l,s=(t|0)<(s|0)?t:s,o=(s|0)>0,t=t-(o?s:0)|0,n=n-(o?s:0)|0;A:do switch(l-(o?s:0)|0){case 0:switch(n|0){case 0:return d=(t|0)==0?0:(t|0)==1?1:7,d|0;case 1:return d=(t|0)==0?2:(t|0)==1?3:7,d|0;default:break A}case 1:switch(n|0){case 0:return d=(t|0)==0?4:(t|0)==1?5:7,d|0;case 1:{if(!t)t=6;else break A;return t|0}default:break A}}while(!1);return d=7,d|0}function uf(t){t=t|0;var n=0,s=0,o=0,l=0,u=0,f=0,d=0,p=0,w=0;if(p=t+8|0,f=r[p>>2]|0,d=(r[t>>2]|0)-f|0,w=t+4|0,f=(r[w>>2]|0)-f|0,d>>>0>715827881|f>>>0>715827881){if(o=(d|0)>0,l=2147483647-d|0,u=-2147483648-d|0,(o?(l|0)<(d|0):(u|0)>(d|0))||(s=d<<1,o?(2147483647-s|0)<(d|0):(-2147483648-s|0)>(d|0))||((f|0)>0?(2147483647-f|0)<(f|0):(-2147483648-f|0)>(f|0))||(n=d*3|0,s=f<<1,(o?(l|0)<(s|0):(u|0)>(s|0))||((d|0)>-1?(n|-2147483648|0)>=(f|0):(n^-2147483648|0)<(f|0))))return w=1,w|0}else s=f<<1,n=d*3|0;return o=ct(+(n-f|0)*.14285714285714285)|0,r[t>>2]=o,l=ct(+(s+d|0)*.14285714285714285)|0,r[w>>2]=l,r[p>>2]=0,s=(l|0)<(o|0),n=s?o:l,s=s?l:o,(s|0)<0&&(((s|0)==-2147483648||((n|0)>0?(2147483647-n|0)<(s|0):(-2147483648-n|0)>(s|0)))&&bA(27795,26892,354,26903),((n|0)>-1?(n|-2147483648|0)>=(s|0):(n^-2147483648|0)<(s|0))&&bA(27795,26892,354,26903)),n=l-o|0,(o|0)<0?(s=0-o|0,r[w>>2]=n,r[p>>2]=s,r[t>>2]=0,o=0):(n=l,s=0),(n|0)<0&&(o=o-n|0,r[t>>2]=o,s=s-n|0,r[p>>2]=s,r[w>>2]=0,n=0),u=o-s|0,l=n-s|0,(s|0)<0?(r[t>>2]=u,r[w>>2]=l,r[p>>2]=0,n=l,l=u,s=0):l=o,o=(n|0)<(l|0)?n:l,o=(s|0)<(o|0)?s:o,(o|0)<=0?(w=0,w|0):(r[t>>2]=l-o,r[w>>2]=n-o,r[p>>2]=s-o,w=0,w|0)}function cf(t){t=t|0;var n=0,s=0,o=0,l=0,u=0,f=0,d=0,p=0;if(f=t+8|0,l=r[f>>2]|0,u=(r[t>>2]|0)-l|0,d=t+4|0,l=(r[d>>2]|0)-l|0,u>>>0>715827881|l>>>0>715827881){if(s=(u|0)>0,(s?(2147483647-u|0)<(u|0):(-2147483648-u|0)>(u|0))||(n=u<<1,o=(l|0)>0,o?(2147483647-l|0)<(l|0):(-2147483648-l|0)>(l|0)))return d=1,d|0;if(p=l<<1,(o?(2147483647-p|0)<(l|0):(-2147483648-p|0)>(l|0))||(s?(2147483647-n|0)<(l|0):(-2147483648-n|0)>(l|0))||(s=l*3|0,(l|0)>-1?(s|-2147483648|0)>=(u|0):(s^-2147483648|0)<(u|0)))return p=1,p|0}else s=l*3|0,n=u<<1;return o=ct(+(n+l|0)*.14285714285714285)|0,r[t>>2]=o,l=ct(+(s-u|0)*.14285714285714285)|0,r[d>>2]=l,r[f>>2]=0,s=(l|0)<(o|0),n=s?o:l,s=s?l:o,(s|0)<0&&(((s|0)==-2147483648||((n|0)>0?(2147483647-n|0)<(s|0):(-2147483648-n|0)>(s|0)))&&bA(27795,26892,402,26917),((n|0)>-1?(n|-2147483648|0)>=(s|0):(n^-2147483648|0)<(s|0))&&bA(27795,26892,402,26917)),n=l-o|0,(o|0)<0?(s=0-o|0,r[d>>2]=n,r[f>>2]=s,r[t>>2]=0,o=0):(n=l,s=0),(n|0)<0&&(o=o-n|0,r[t>>2]=o,s=s-n|0,r[f>>2]=s,r[d>>2]=0,n=0),u=o-s|0,l=n-s|0,(s|0)<0?(r[t>>2]=u,r[d>>2]=l,r[f>>2]=0,n=l,l=u,s=0):l=o,o=(n|0)<(l|0)?n:l,o=(s|0)<(o|0)?s:o,(o|0)<=0?(p=0,p|0):(r[t>>2]=l-o,r[d>>2]=n-o,r[f>>2]=s-o,p=0,p|0)}function ff(t){t=t|0;var n=0,s=0,o=0,l=0,u=0,f=0,d=0;f=t+8|0,s=r[f>>2]|0,n=(r[t>>2]|0)-s|0,d=t+4|0,s=(r[d>>2]|0)-s|0,o=ct(+((n*3|0)-s|0)*.14285714285714285)|0,r[t>>2]=o,n=ct(+((s<<1)+n|0)*.14285714285714285)|0,r[d>>2]=n,r[f>>2]=0,s=n-o|0,(o|0)<0?(u=0-o|0,r[d>>2]=s,r[f>>2]=u,r[t>>2]=0,n=s,o=0,s=u):s=0,(n|0)<0&&(o=o-n|0,r[t>>2]=o,s=s-n|0,r[f>>2]=s,r[d>>2]=0,n=0),u=o-s|0,l=n-s|0,(s|0)<0?(r[t>>2]=u,r[d>>2]=l,r[f>>2]=0,n=l,l=u,s=0):l=o,o=(n|0)<(l|0)?n:l,o=(s|0)<(o|0)?s:o,!((o|0)<=0)&&(r[t>>2]=l-o,r[d>>2]=n-o,r[f>>2]=s-o)}function hs(t){t=t|0;var n=0,s=0,o=0,l=0,u=0,f=0,d=0;f=t+8|0,s=r[f>>2]|0,n=(r[t>>2]|0)-s|0,d=t+4|0,s=(r[d>>2]|0)-s|0,o=ct(+((n<<1)+s|0)*.14285714285714285)|0,r[t>>2]=o,n=ct(+((s*3|0)-n|0)*.14285714285714285)|0,r[d>>2]=n,r[f>>2]=0,s=n-o|0,(o|0)<0?(u=0-o|0,r[d>>2]=s,r[f>>2]=u,r[t>>2]=0,n=s,o=0,s=u):s=0,(n|0)<0&&(o=o-n|0,r[t>>2]=o,s=s-n|0,r[f>>2]=s,r[d>>2]=0,n=0),u=o-s|0,l=n-s|0,(s|0)<0?(r[t>>2]=u,r[d>>2]=l,r[f>>2]=0,n=l,l=u,s=0):l=o,o=(n|0)<(l|0)?n:l,o=(s|0)<(o|0)?s:o,!((o|0)<=0)&&(r[t>>2]=l-o,r[d>>2]=n-o,r[f>>2]=s-o)}function Rr(t){t=t|0;var n=0,s=0,o=0,l=0,u=0,f=0,d=0;n=r[t>>2]|0,f=t+4|0,s=r[f>>2]|0,d=t+8|0,o=r[d>>2]|0,l=s+(n*3|0)|0,r[t>>2]=l,s=o+(s*3|0)|0,r[f>>2]=s,n=(o*3|0)+n|0,r[d>>2]=n,o=s-l|0,(l|0)<0?(n=n-l|0,r[f>>2]=o,r[d>>2]=n,r[t>>2]=0,s=o,o=0):o=l,(s|0)<0&&(o=o-s|0,r[t>>2]=o,n=n-s|0,r[d>>2]=n,r[f>>2]=0,s=0),u=o-n|0,l=s-n|0,(n|0)<0?(r[t>>2]=u,r[f>>2]=l,r[d>>2]=0,o=u,n=0):l=s,s=(l|0)<(o|0)?l:o,s=(n|0)<(s|0)?n:s,!((s|0)<=0)&&(r[t>>2]=o-s,r[f>>2]=l-s,r[d>>2]=n-s)}function Tt(t){t=t|0;var n=0,s=0,o=0,l=0,u=0,f=0,d=0;l=r[t>>2]|0,f=t+4|0,n=r[f>>2]|0,d=t+8|0,s=r[d>>2]|0,o=(n*3|0)+l|0,l=s+(l*3|0)|0,r[t>>2]=l,r[f>>2]=o,n=(s*3|0)+n|0,r[d>>2]=n,s=o-l|0,(l|0)<0?(n=n-l|0,r[f>>2]=s,r[d>>2]=n,r[t>>2]=0,l=0):s=o,(s|0)<0&&(l=l-s|0,r[t>>2]=l,n=n-s|0,r[d>>2]=n,r[f>>2]=0,s=0),u=l-n|0,o=s-n|0,(n|0)<0?(r[t>>2]=u,r[f>>2]=o,r[d>>2]=0,l=u,n=0):o=s,s=(o|0)<(l|0)?o:l,s=(n|0)<(s|0)?n:s,!((s|0)<=0)&&(r[t>>2]=l-s,r[f>>2]=o-s,r[d>>2]=n-s)}function ds(t,n){t=t|0,n=n|0;var s=0,o=0,l=0,u=0,f=0,d=0;(n+-1|0)>>>0>=6||(l=(r[15440+(n*12|0)>>2]|0)+(r[t>>2]|0)|0,r[t>>2]=l,d=t+4|0,o=(r[15440+(n*12|0)+4>>2]|0)+(r[d>>2]|0)|0,r[d>>2]=o,f=t+8|0,n=(r[15440+(n*12|0)+8>>2]|0)+(r[f>>2]|0)|0,r[f>>2]=n,s=o-l|0,(l|0)<0?(n=n-l|0,r[d>>2]=s,r[f>>2]=n,r[t>>2]=0,o=0):(s=o,o=l),(s|0)<0&&(o=o-s|0,r[t>>2]=o,n=n-s|0,r[f>>2]=n,r[d>>2]=0,s=0),u=o-n|0,l=s-n|0,(n|0)<0?(r[t>>2]=u,r[d>>2]=l,r[f>>2]=0,o=u,n=0):l=s,s=(l|0)<(o|0)?l:o,s=(n|0)<(s|0)?n:s,!((s|0)<=0)&&(r[t>>2]=o-s,r[d>>2]=l-s,r[f>>2]=n-s))}function gs(t){t=t|0;var n=0,s=0,o=0,l=0,u=0,f=0,d=0;l=r[t>>2]|0,f=t+4|0,n=r[f>>2]|0,d=t+8|0,s=r[d>>2]|0,o=n+l|0,l=s+l|0,r[t>>2]=l,r[f>>2]=o,n=s+n|0,r[d>>2]=n,s=o-l|0,(l|0)<0?(n=n-l|0,r[f>>2]=s,r[d>>2]=n,r[t>>2]=0,o=0):(s=o,o=l),(s|0)<0&&(o=o-s|0,r[t>>2]=o,n=n-s|0,r[d>>2]=n,r[f>>2]=0,s=0),u=o-n|0,l=s-n|0,(n|0)<0?(r[t>>2]=u,r[f>>2]=l,r[d>>2]=0,o=u,n=0):l=s,s=(l|0)<(o|0)?l:o,s=(n|0)<(s|0)?n:s,!((s|0)<=0)&&(r[t>>2]=o-s,r[f>>2]=l-s,r[d>>2]=n-s)}function Dr(t){t=t|0;var n=0,s=0,o=0,l=0,u=0,f=0,d=0;n=r[t>>2]|0,f=t+4|0,o=r[f>>2]|0,d=t+8|0,s=r[d>>2]|0,l=o+n|0,r[t>>2]=l,o=s+o|0,r[f>>2]=o,n=s+n|0,r[d>>2]=n,s=o-l|0,(l|0)<0?(n=n-l|0,r[f>>2]=s,r[d>>2]=n,r[t>>2]=0,o=0):(s=o,o=l),(s|0)<0&&(o=o-s|0,r[t>>2]=o,n=n-s|0,r[d>>2]=n,r[f>>2]=0,s=0),u=o-n|0,l=s-n|0,(n|0)<0?(r[t>>2]=u,r[f>>2]=l,r[d>>2]=0,o=u,n=0):l=s,s=(l|0)<(o|0)?l:o,s=(n|0)<(s|0)?n:s,!((s|0)<=0)&&(r[t>>2]=o-s,r[f>>2]=l-s,r[d>>2]=n-s)}function vt(t){switch(t=t|0,t|0){case 1:{t=5;break}case 5:{t=4;break}case 4:{t=6;break}case 6:{t=2;break}case 2:{t=3;break}case 3:{t=1;break}}return t|0}function lt(t){switch(t=t|0,t|0){case 1:{t=3;break}case 3:{t=2;break}case 2:{t=6;break}case 6:{t=4;break}case 4:{t=5;break}case 5:{t=1;break}}return t|0}function ps(t){t=t|0;var n=0,s=0,o=0,l=0,u=0,f=0,d=0;n=r[t>>2]|0,f=t+4|0,s=r[f>>2]|0,d=t+8|0,o=r[d>>2]|0,l=s+(n<<1)|0,r[t>>2]=l,s=o+(s<<1)|0,r[f>>2]=s,n=(o<<1)+n|0,r[d>>2]=n,o=s-l|0,(l|0)<0?(n=n-l|0,r[f>>2]=o,r[d>>2]=n,r[t>>2]=0,s=o,o=0):o=l,(s|0)<0&&(o=o-s|0,r[t>>2]=o,n=n-s|0,r[d>>2]=n,r[f>>2]=0,s=0),u=o-n|0,l=s-n|0,(n|0)<0?(r[t>>2]=u,r[f>>2]=l,r[d>>2]=0,o=u,n=0):l=s,s=(l|0)<(o|0)?l:o,s=(n|0)<(s|0)?n:s,!((s|0)<=0)&&(r[t>>2]=o-s,r[f>>2]=l-s,r[d>>2]=n-s)}function ms(t){t=t|0;var n=0,s=0,o=0,l=0,u=0,f=0,d=0;l=r[t>>2]|0,f=t+4|0,n=r[f>>2]|0,d=t+8|0,s=r[d>>2]|0,o=(n<<1)+l|0,l=s+(l<<1)|0,r[t>>2]=l,r[f>>2]=o,n=(s<<1)+n|0,r[d>>2]=n,s=o-l|0,(l|0)<0?(n=n-l|0,r[f>>2]=s,r[d>>2]=n,r[t>>2]=0,l=0):s=o,(s|0)<0&&(l=l-s|0,r[t>>2]=l,n=n-s|0,r[d>>2]=n,r[f>>2]=0,s=0),u=l-n|0,o=s-n|0,(n|0)<0?(r[t>>2]=u,r[f>>2]=o,r[d>>2]=0,l=u,n=0):o=s,s=(o|0)<(l|0)?o:l,s=(n|0)<(s|0)?n:s,!((s|0)<=0)&&(r[t>>2]=l-s,r[f>>2]=o-s,r[d>>2]=n-s)}function $n(t,n){t=t|0,n=n|0;var s=0,o=0,l=0,u=0,f=0,d=0;return f=(r[t>>2]|0)-(r[n>>2]|0)|0,d=(f|0)<0,o=(r[t+4>>2]|0)-(r[n+4>>2]|0)-(d?f:0)|0,u=(o|0)<0,l=(d?0-f|0:0)+(r[t+8>>2]|0)-(r[n+8>>2]|0)+(u?0-o|0:0)|0,t=(l|0)<0,n=t?0:l,s=(u?0:o)-(t?l:0)|0,l=(d?0:f)-(u?o:0)-(t?l:0)|0,t=(s|0)<(l|0)?s:l,t=(n|0)<(t|0)?n:t,o=(t|0)>0,n=n-(o?t:0)|0,s=s-(o?t:0)|0,t=l-(o?t:0)|0,t=(t|0)>-1?t:0-t|0,s=(s|0)>-1?s:0-s|0,n=(n|0)>-1?n:0-n|0,n=(s|0)>(n|0)?s:n,((t|0)>(n|0)?t:n)|0}function hf(t,n){t=t|0,n=n|0;var s=0;s=r[t+8>>2]|0,r[n>>2]=(r[t>>2]|0)-s,r[n+4>>2]=(r[t+4>>2]|0)-s}function df(t,n){t=t|0,n=n|0;var s=0,o=0,l=0,u=0,f=0,d=0;return o=r[t>>2]|0,r[n>>2]=o,l=r[t+4>>2]|0,f=n+4|0,r[f>>2]=l,d=n+8|0,r[d>>2]=0,s=(l|0)<(o|0),t=s?o:l,s=s?l:o,(s|0)<0&&((s|0)==-2147483648||((t|0)>0?(2147483647-t|0)<(s|0):(-2147483648-t|0)>(s|0))||((t|0)>-1?(t|-2147483648|0)>=(s|0):(t^-2147483648|0)<(s|0)))?(n=1,n|0):(t=l-o|0,(o|0)<0?(s=0-o|0,r[f>>2]=t,r[d>>2]=s,r[n>>2]=0,o=0):(t=l,s=0),(t|0)<0&&(o=o-t|0,r[n>>2]=o,s=s-t|0,r[d>>2]=s,r[f>>2]=0,t=0),u=o-s|0,l=t-s|0,(s|0)<0?(r[n>>2]=u,r[f>>2]=l,r[d>>2]=0,t=l,l=u,s=0):l=o,o=(t|0)<(l|0)?t:l,o=(s|0)<(o|0)?s:o,(o|0)<=0?(n=0,n|0):(r[n>>2]=l-o,r[f>>2]=t-o,r[d>>2]=s-o,n=0,n|0))}function ws(t){t=t|0;var n=0,s=0,o=0,l=0;n=t+8|0,l=r[n>>2]|0,s=l-(r[t>>2]|0)|0,r[t>>2]=s,o=t+4|0,t=(r[o>>2]|0)-l|0,r[o>>2]=t,r[n>>2]=0-(t+s)}function gf(t){t=t|0;var n=0,s=0,o=0,l=0,u=0,f=0,d=0;s=r[t>>2]|0,n=0-s|0,r[t>>2]=n,f=t+8|0,r[f>>2]=0,d=t+4|0,o=r[d>>2]|0,l=o+s|0,(s|0)>0?(r[d>>2]=l,r[f>>2]=s,r[t>>2]=0,n=0,o=l):s=0,(o|0)<0?(u=n-o|0,r[t>>2]=u,s=s-o|0,r[f>>2]=s,r[d>>2]=0,l=u-s|0,n=0-s|0,(s|0)<0?(r[t>>2]=l,r[d>>2]=n,r[f>>2]=0,o=n,s=0):(o=0,l=u)):l=n,n=(o|0)<(l|0)?o:l,n=(s|0)<(n|0)?s:n,!((n|0)<=0)&&(r[t>>2]=l-n,r[d>>2]=o-n,r[f>>2]=s-n)}function pf(t,n,s,o,l){t=t|0,n=n|0,s=s|0,o=o|0,l=l|0;var u=0,f=0,d=0,p=0,w=0,T=0,M=0;if(M=E,E=E+64|0,T=M,d=M+56|0,!(!0&(n&2013265920|0)==134217728&(!0&(o&2013265920|0)==134217728)))return l=5,E=M,l|0;if((t|0)==(s|0)&(n|0)==(o|0))return r[l>>2]=0,l=0,E=M,l|0;if(f=AA(t|0,n|0,52)|0,S()|0,f=f&15,w=AA(s|0,o|0,52)|0,S()|0,(f|0)!=(w&15|0))return l=12,E=M,l|0;if(u=f+-1|0,f>>>0>1){n0(t,n,u,T)|0,n0(s,o,u,d)|0,w=T,p=r[w>>2]|0,w=r[w+4>>2]|0;A:do if((p|0)==(r[d>>2]|0)&&(w|0)==(r[d+4>>2]|0)){f=(f^15)*3|0,u=AA(t|0,n|0,f|0)|0,S()|0,u=u&7,f=AA(s|0,o|0,f|0)|0,S()|0,f=f&7;do if((u|0)==0|(f|0)==0)r[l>>2]=1,u=0;else if((u|0)==7)u=5;else{if((u|0)==1|(f|0)==1&&JA(p,w)|0){u=5;break}if((r[15536+(u<<2)>>2]|0)!=(f|0)&&(r[15568+(u<<2)>>2]|0)!=(f|0))break A;r[l>>2]=1,u=0}while(!1);return l=u,E=M,l|0}while(!1)}u=T,f=u+56|0;do r[u>>2]=0,u=u+4|0;while((u|0)<(f|0));return es(t,n,1,T)|0,n=T,!((r[n>>2]|0)==(s|0)&&(r[n+4>>2]|0)==(o|0))&&(n=T+8|0,!((r[n>>2]|0)==(s|0)&&(r[n+4>>2]|0)==(o|0)))&&(n=T+16|0,!((r[n>>2]|0)==(s|0)&&(r[n+4>>2]|0)==(o|0)))&&(n=T+24|0,!((r[n>>2]|0)==(s|0)&&(r[n+4>>2]|0)==(o|0)))&&(n=T+32|0,!((r[n>>2]|0)==(s|0)&&(r[n+4>>2]|0)==(o|0)))&&(n=T+40|0,!((r[n>>2]|0)==(s|0)&&(r[n+4>>2]|0)==(o|0)))?(u=T+48|0,u=((r[u>>2]|0)==(s|0)?(r[u+4>>2]|0)==(o|0):0)&1):u=1,r[l>>2]=u,l=0,E=M,l|0}function mf(t,n,s,o,l){return t=t|0,n=n|0,s=s|0,o=o|0,l=l|0,s=jn(t,n,s,o)|0,(s|0)==7?(l=11,l|0):(o=oA(s|0,0,56)|0,n=n&-2130706433|(S()|0)|268435456,r[l>>2]=t|o,r[l+4>>2]=n,l=0,l|0)}function wf(t,n,s){return t=t|0,n=n|0,s=s|0,!0&(n&2013265920|0)==268435456?(r[s>>2]=t,r[s+4>>2]=n&-2130706433|134217728,s=0,s|0):(s=6,s|0)}function yf(t,n,s){t=t|0,n=n|0,s=s|0;var o=0,l=0,u=0;return l=E,E=E+16|0,o=l,r[o>>2]=0,!0&(n&2013265920|0)==268435456?(u=AA(t|0,n|0,56)|0,S()|0,o=ae(t,n&-2130706433|134217728,u&7,o,s)|0,E=l,o|0):(o=6,E=l,o|0)}function Tf(t,n){t=t|0,n=n|0;var s=0;switch(s=AA(t|0,n|0,56)|0,S()|0,s&7){case 0:case 7:return s=0,s|0}return s=n&-2130706433|134217728,!(!0&(n&2013265920|0)==268435456)||!0&(n&117440512|0)==16777216&(JA(t,s)|0)!=0?(s=0,s|0):(s=t0(t,s)|0,s|0)}function vf(t,n,s){t=t|0,n=n|0,s=s|0;var o=0,l=0,u=0,f=0;return l=E,E=E+16|0,o=l,!0&(n&2013265920|0)==268435456?(u=n&-2130706433|134217728,f=s,r[f>>2]=t,r[f+4>>2]=u,r[o>>2]=0,n=AA(t|0,n|0,56)|0,S()|0,o=ae(t,u,n&7,o,s+8|0)|0,E=l,o|0):(o=6,E=l,o|0)}function _f(t,n,s){t=t|0,n=n|0,s=s|0;var o=0,l=0;return l=(JA(t,n)|0)==0,n=n&-2130706433,o=s,r[o>>2]=l?t:0,r[o+4>>2]=l?n|285212672:0,o=s+8|0,r[o>>2]=t,r[o+4>>2]=n|301989888,o=s+16|0,r[o>>2]=t,r[o+4>>2]=n|318767104,o=s+24|0,r[o>>2]=t,r[o+4>>2]=n|335544320,o=s+32|0,r[o>>2]=t,r[o+4>>2]=n|352321536,s=s+40|0,r[s>>2]=t,r[s+4>>2]=n|369098752,0}function Or(t,n,s){t=t|0,n=n|0,s=s|0;var o=0,l=0,u=0,f=0;return f=E,E=E+16|0,l=f,u=n&-2130706433|134217728,!0&(n&2013265920|0)==268435456?(o=AA(t|0,n|0,56)|0,S()|0,o=yh(t,u,o&7)|0,(o|0)==-1?(r[s>>2]=0,u=6,E=f,u|0):(Ut(t,u,l)|0&&bA(27795,26932,282,26947),n=AA(t|0,n|0,52)|0,S()|0,n=n&15,JA(t,u)|0?A0(l,n,o,2,s):e0(l,n,o,2,s),u=0,E=f,u|0)):(u=6,E=f,u|0)}function bf(t,n,s){t=t|0,n=n|0,s=s|0;var o=0,l=0;o=E,E=E+16|0,l=o,Ef(t,n,s,l),lf(l,s+4|0),E=o}function Ef(t,n,s,o){t=t|0,n=n|0,s=s|0,o=o|0;var l=0,u=0,f=0,d=0,p=0;if(d=E,E=E+16|0,p=d,Mf(t,s,p),u=+xr(+(1-+b[p>>3]*.5)),u<1e-16){r[o>>2]=0,r[o+4>>2]=0,r[o+8>>2]=0,r[o+12>>2]=0,E=d;return}if(p=r[s>>2]|0,l=+b[15920+(p*24|0)>>3],l=+hr(l-+hr(+zf(15600+(p<<4)|0,t))),Oe(n)|0?f=+hr(l+-.3334731722518321):f=l,l=+Re(+u)*2.618033988749896,(n|0)>0){t=0;do l=l*2.6457513110645907,t=t+1|0;while((t|0)!=(n|0))}u=+GA(+f)*l,b[o>>3]=u,f=+RA(+f)*l,b[o+8>>3]=f,E=d}function Mf(t,n,s){t=t|0,n=n|0,s=s|0;var o=0,l=0,u=0;if(u=E,E=E+32|0,l=u,wh(t,l),r[n>>2]=0,b[s>>3]=5,o=+ne(16400,l),o<+b[s>>3]&&(r[n>>2]=0,b[s>>3]=o),o=+ne(16424,l),o<+b[s>>3]&&(r[n>>2]=1,b[s>>3]=o),o=+ne(16448,l),o<+b[s>>3]&&(r[n>>2]=2,b[s>>3]=o),o=+ne(16472,l),o<+b[s>>3]&&(r[n>>2]=3,b[s>>3]=o),o=+ne(16496,l),o<+b[s>>3]&&(r[n>>2]=4,b[s>>3]=o),o=+ne(16520,l),o<+b[s>>3]&&(r[n>>2]=5,b[s>>3]=o),o=+ne(16544,l),o<+b[s>>3]&&(r[n>>2]=6,b[s>>3]=o),o=+ne(16568,l),o<+b[s>>3]&&(r[n>>2]=7,b[s>>3]=o),o=+ne(16592,l),o<+b[s>>3]&&(r[n>>2]=8,b[s>>3]=o),o=+ne(16616,l),o<+b[s>>3]&&(r[n>>2]=9,b[s>>3]=o),o=+ne(16640,l),o<+b[s>>3]&&(r[n>>2]=10,b[s>>3]=o),o=+ne(16664,l),o<+b[s>>3]&&(r[n>>2]=11,b[s>>3]=o),o=+ne(16688,l),o<+b[s>>3]&&(r[n>>2]=12,b[s>>3]=o),o=+ne(16712,l),o<+b[s>>3]&&(r[n>>2]=13,b[s>>3]=o),o=+ne(16736,l),o<+b[s>>3]&&(r[n>>2]=14,b[s>>3]=o),o=+ne(16760,l),o<+b[s>>3]&&(r[n>>2]=15,b[s>>3]=o),o=+ne(16784,l),o<+b[s>>3]&&(r[n>>2]=16,b[s>>3]=o),o=+ne(16808,l),o<+b[s>>3]&&(r[n>>2]=17,b[s>>3]=o),o=+ne(16832,l),o<+b[s>>3]&&(r[n>>2]=18,b[s>>3]=o),o=+ne(16856,l),!(o<+b[s>>3])){E=u;return}r[n>>2]=19,b[s>>3]=o,E=u}function cr(t,n,s,o,l){t=t|0,n=n|0,s=s|0,o=o|0,l=l|0;var u=0,f=0,d=0;if(u=+mh(t),u<1e-16){n=15600+(n<<4)|0,r[l>>2]=r[n>>2],r[l+4>>2]=r[n+4>>2],r[l+8>>2]=r[n+8>>2],r[l+12>>2]=r[n+12>>2];return}if(f=+De(+ +b[t+8>>3],+ +b[t>>3]),(s|0)>0){t=0;do u=u*.37796447300922725,t=t+1|0;while((t|0)!=(s|0))}d=u*.3333333333333333,o?(s=(Oe(s)|0)==0,u=+qn(+((s?d:d*.37796447300922725)*.381966011250105))):(u=+qn(+(u*.381966011250105)),Oe(s)|0&&(f=+hr(f+.3334731722518321))),Gf(15600+(n<<4)|0,+hr(+b[15920+(n*24|0)>>3]-f),u,l)}function Cf(t,n,s){t=t|0,n=n|0,s=s|0;var o=0,l=0;o=E,E=E+16|0,l=o,yt(t+4|0,l),cr(l,r[t>>2]|0,n,0,s),E=o}function A0(t,n,s,o,l){t=t|0,n=n|0,s=s|0,o=o|0,l=l|0;var u=0,f=0,d=0,p=0,w=0,T=0,M=0,I=0,B=0,L=0,D=0,F=0,q=0,V=0,Q=0,O=0,sA=0,gA=0,fA=0,SA=0,BA=0,DA=0,_A=0,pA=0,iA=0,xA=0,YA=0,PA=0;if(xA=E,E=E+272|0,u=xA+256|0,V=xA+240|0,_A=xA,pA=xA+224|0,iA=xA+208|0,Q=xA+176|0,O=xA+160|0,sA=xA+192|0,gA=xA+144|0,fA=xA+128|0,SA=xA+112|0,BA=xA+96|0,DA=xA+80|0,r[u>>2]=n,r[V>>2]=r[t>>2],r[V+4>>2]=r[t+4>>2],r[V+8>>2]=r[t+8>>2],r[V+12>>2]=r[t+12>>2],ys(V,u,_A),r[l>>2]=0,V=o+s+((o|0)==5&1)|0,(V|0)<=(s|0)){E=xA;return}p=r[u>>2]|0,w=pA+4|0,T=Q+4|0,M=s+5|0,I=16880+(p<<2)|0,B=16960+(p<<2)|0,L=fA+8|0,D=SA+8|0,F=BA+8|0,q=iA+4|0,d=s;A:for(;;){f=_A+(((d|0)%5|0)<<4)|0,r[iA>>2]=r[f>>2],r[iA+4>>2]=r[f+4>>2],r[iA+8>>2]=r[f+8>>2],r[iA+12>>2]=r[f+12>>2];do;while((Ft(iA,p,0,1)|0)==2);if((d|0)>(s|0)&(Oe(n)|0)!=0){if(r[Q>>2]=r[iA>>2],r[Q+4>>2]=r[iA+4>>2],r[Q+8>>2]=r[iA+8>>2],r[Q+12>>2]=r[iA+12>>2],yt(w,O),o=r[Q>>2]|0,u=r[17040+(o*80|0)+(r[pA>>2]<<2)>>2]|0,r[Q>>2]=r[18640+(o*80|0)+(u*20|0)>>2],f=r[18640+(o*80|0)+(u*20|0)+16>>2]|0,(f|0)>0){t=0;do gs(T),t=t+1|0;while((t|0)<(f|0))}switch(f=18640+(o*80|0)+(u*20|0)+4|0,r[sA>>2]=r[f>>2],r[sA+4>>2]=r[f+4>>2],r[sA+8>>2]=r[f+8>>2],fs(sA,(r[I>>2]|0)*3|0),Te(T,sA,T),pe(T),yt(T,gA),YA=+(r[B>>2]|0),b[fA>>3]=YA*3,b[L>>3]=0,PA=YA*-1.5,b[SA>>3]=PA,b[D>>3]=YA*2.598076211353316,b[BA>>3]=PA,b[F>>3]=YA*-2.598076211353316,r[17040+((r[Q>>2]|0)*80|0)+(r[iA>>2]<<2)>>2]|0){case 1:{t=SA,o=fA;break}case 3:{t=BA,o=SA;break}case 2:{t=fA,o=BA;break}default:{t=12;break A}}Ds(O,gA,o,t,DA),cr(DA,r[Q>>2]|0,p,1,l+8+(r[l>>2]<<4)|0),r[l>>2]=(r[l>>2]|0)+1}if((d|0)<(M|0)&&(yt(q,Q),cr(Q,r[iA>>2]|0,p,1,l+8+(r[l>>2]<<4)|0),r[l>>2]=(r[l>>2]|0)+1),r[pA>>2]=r[iA>>2],r[pA+4>>2]=r[iA+4>>2],r[pA+8>>2]=r[iA+8>>2],r[pA+12>>2]=r[iA+12>>2],d=d+1|0,(d|0)>=(V|0)){t=3;break}}if((t|0)==3){E=xA;return}else(t|0)==12&&bA(26970,27017,572,27027)}function ys(t,n,s){t=t|0,n=n|0,s=s|0;var o=0,l=0,u=0,f=0,d=0,p=0;p=E,E=E+128|0,o=p+64|0,l=p,u=o,f=20240,d=u+60|0;do r[u>>2]=r[f>>2],u=u+4|0,f=f+4|0;while((u|0)<(d|0));u=l,f=20304,d=u+60|0;do r[u>>2]=r[f>>2],u=u+4|0,f=f+4|0;while((u|0)<(d|0));d=(Oe(r[n>>2]|0)|0)==0,o=d?o:l,l=t+4|0,ps(l),ms(l),Oe(r[n>>2]|0)|0&&(Tt(l),r[n>>2]=(r[n>>2]|0)+1),r[s>>2]=r[t>>2],n=s+4|0,Te(l,o,n),pe(n),r[s+16>>2]=r[t>>2],n=s+20|0,Te(l,o+12|0,n),pe(n),r[s+32>>2]=r[t>>2],n=s+36|0,Te(l,o+24|0,n),pe(n),r[s+48>>2]=r[t>>2],n=s+52|0,Te(l,o+36|0,n),pe(n),r[s+64>>2]=r[t>>2],s=s+68|0,Te(l,o+48|0,s),pe(s),E=p}function Ft(t,n,s,o){t=t|0,n=n|0,s=s|0,o=o|0;var l=0,u=0,f=0,d=0,p=0,w=0,T=0,M=0,I=0,B=0,L=0;if(L=E,E=E+32|0,I=L+12|0,d=L,B=t+4|0,M=r[16960+(n<<2)>>2]|0,T=(o|0)!=0,M=T?M*3|0:M,l=r[B>>2]|0,w=t+8|0,f=r[w>>2]|0,T){if(u=t+12|0,o=r[u>>2]|0,l=f+l+o|0,(l|0)==(M|0))return B=1,E=L,B|0;p=u}else p=t+12|0,o=r[p>>2]|0,l=f+l+o|0;if((l|0)<=(M|0))return B=0,E=L,B|0;do if((o|0)>0){if(o=r[t>>2]|0,(f|0)>0){u=18640+(o*80|0)+60|0,o=t;break}o=18640+(o*80|0)+40|0,s?(af(I,M,0,0),Kn(B,I,d),Dr(d),Te(d,I,B),u=o,o=t):(u=o,o=t)}else u=18640+((r[t>>2]|0)*80|0)+20|0,o=t;while(!1);if(r[o>>2]=r[u>>2],l=u+16|0,(r[l>>2]|0)>0){o=0;do gs(B),o=o+1|0;while((o|0)<(r[l>>2]|0))}return t=u+4|0,r[I>>2]=r[t>>2],r[I+4>>2]=r[t+4>>2],r[I+8>>2]=r[t+8>>2],n=r[16880+(n<<2)>>2]|0,fs(I,T?n*3|0:n),Te(B,I,B),pe(B),T?o=((r[w>>2]|0)+(r[B>>2]|0)+(r[p>>2]|0)|0)==(M|0)?1:2:o=2,B=o,E=L,B|0}function Sf(t,n){t=t|0,n=n|0;var s=0;do s=Ft(t,n,0,1)|0;while((s|0)==2);return s|0}function e0(t,n,s,o,l){t=t|0,n=n|0,s=s|0,o=o|0,l=l|0;var u=0,f=0,d=0,p=0,w=0,T=0,M=0,I=0,B=0,L=0,D=0,F=0,q=0,V=0,Q=0,O=0,sA=0,gA=0,fA=0,SA=0,BA=0,DA=0,_A=0;if(BA=E,E=E+240|0,u=BA+224|0,sA=BA+208|0,gA=BA,fA=BA+192|0,SA=BA+176|0,F=BA+160|0,q=BA+144|0,V=BA+128|0,Q=BA+112|0,O=BA+96|0,r[u>>2]=n,r[sA>>2]=r[t>>2],r[sA+4>>2]=r[t+4>>2],r[sA+8>>2]=r[t+8>>2],r[sA+12>>2]=r[t+12>>2],Ts(sA,u,gA),r[l>>2]=0,D=o+s+((o|0)==6&1)|0,(D|0)<=(s|0)){E=BA;return}p=r[u>>2]|0,w=s+6|0,T=16960+(p<<2)|0,M=q+8|0,I=V+8|0,B=Q+8|0,L=fA+4|0,f=0,d=s,o=-1;A:for(;;){if(u=(d|0)%6|0,t=gA+(u<<4)|0,r[fA>>2]=r[t>>2],r[fA+4>>2]=r[t+4>>2],r[fA+8>>2]=r[t+8>>2],r[fA+12>>2]=r[t+12>>2],t=f,f=Ft(fA,p,0,1)|0,(d|0)>(s|0)&(Oe(n)|0)!=0&&(t|0)!=1&&(r[fA>>2]|0)!=(o|0)){switch(yt(gA+(((u+5|0)%6|0)<<4)+4|0,SA),yt(gA+(u<<4)+4|0,F),DA=+(r[T>>2]|0),b[q>>3]=DA*3,b[M>>3]=0,_A=DA*-1.5,b[V>>3]=_A,b[I>>3]=DA*2.598076211353316,b[Q>>3]=_A,b[B>>3]=DA*-2.598076211353316,u=r[sA>>2]|0,r[17040+(u*80|0)+(((o|0)==(u|0)?r[fA>>2]|0:o)<<2)>>2]|0){case 1:{t=V,o=q;break}case 3:{t=Q,o=V;break}case 2:{t=q,o=Q;break}default:{t=8;break A}}Ds(SA,F,o,t,O),!(Os(SA,O)|0)&&!(Os(F,O)|0)&&(cr(O,r[sA>>2]|0,p,1,l+8+(r[l>>2]<<4)|0),r[l>>2]=(r[l>>2]|0)+1)}if((d|0)<(w|0)&&(yt(L,SA),cr(SA,r[fA>>2]|0,p,1,l+8+(r[l>>2]<<4)|0),r[l>>2]=(r[l>>2]|0)+1),d=d+1|0,(d|0)>=(D|0)){t=3;break}else o=r[fA>>2]|0}if((t|0)==3){E=BA;return}else(t|0)==8&&bA(27054,27017,737,27099)}function Ts(t,n,s){t=t|0,n=n|0,s=s|0;var o=0,l=0,u=0,f=0,d=0,p=0;p=E,E=E+160|0,o=p+80|0,l=p,u=o,f=20368,d=u+72|0;do r[u>>2]=r[f>>2],u=u+4|0,f=f+4|0;while((u|0)<(d|0));u=l,f=20448,d=u+72|0;do r[u>>2]=r[f>>2],u=u+4|0,f=f+4|0;while((u|0)<(d|0));d=(Oe(r[n>>2]|0)|0)==0,o=d?o:l,l=t+4|0,ps(l),ms(l),Oe(r[n>>2]|0)|0&&(Tt(l),r[n>>2]=(r[n>>2]|0)+1),r[s>>2]=r[t>>2],n=s+4|0,Te(l,o,n),pe(n),r[s+16>>2]=r[t>>2],n=s+20|0,Te(l,o+12|0,n),pe(n),r[s+32>>2]=r[t>>2],n=s+36|0,Te(l,o+24|0,n),pe(n),r[s+48>>2]=r[t>>2],n=s+52|0,Te(l,o+36|0,n),pe(n),r[s+64>>2]=r[t>>2],n=s+68|0,Te(l,o+48|0,n),pe(n),r[s+80>>2]=r[t>>2],s=s+84|0,Te(l,o+60|0,s),pe(s),E=p}function If(t,n){return t=t|0,n=n|0,n=AA(t|0,n|0,52)|0,S()|0,n&15|0}function vs(t,n){return t=t|0,n=n|0,n=AA(t|0,n|0,45)|0,S()|0,n&127|0}function t0(t,n){t=t|0,n=n|0;var s=0,o=0,l=0,u=0,f=0;return!(!0&(n&-16777216|0)==134217728)||(o=AA(t|0,n|0,52)|0,S()|0,o=o&15,s=AA(t|0,n|0,45)|0,S()|0,s=s&127,s>>>0>121)?(t=0,t|0):(f=(o^15)*3|0,l=AA(t|0,n|0,f|0)|0,f=oA(l|0,S()|0,f|0)|0,l=S()|0,u=fe(-1227133514,-1171,f|0,l|0)|0,!((f&613566756&u|0)==0&(l&4681&(S()|0)|0)==0)||(f=(o*3|0)+19|0,u=oA(~t|0,~n|0,f|0)|0,f=AA(u|0,S()|0,f|0)|0,!((o|0)==15|(f|0)==0&(S()|0)==0))?(f=0,f|0):!(eA[20528+s>>0]|0)||(n=n&8191,(t|0)==0&(n|0)==0)?(f=1,f|0):(f=Gs(t|0,n|0)|0,S()|0,((63-f|0)%3|0|0)!=0|0))}function r0(t,n,s,o){t=t|0,n=n|0,s=s|0,o=o|0;var l=0,u=0,f=0,d=0;if(l=oA(n|0,0,52)|0,u=S()|0,s=oA(s|0,0,45)|0,s=u|(S()|0)|134225919,(n|0)<1){u=-1,o=s,n=t,r[n>>2]=u,t=t+4|0,r[t>>2]=o;return}for(u=1,l=-1;f=(15-u|0)*3|0,d=oA(7,0,f|0)|0,s=s&~(S()|0),f=oA(o|0,0,f|0)|0,l=l&~d|f,s=s|(S()|0),(u|0)!=(n|0);)u=u+1|0;d=t,f=d,r[f>>2]=l,d=d+4|0,r[d>>2]=s}function n0(t,n,s,o){t=t|0,n=n|0,s=s|0,o=o|0;var l=0,u=0;if(u=AA(t|0,n|0,52)|0,S()|0,u=u&15,s>>>0>15)return o=4,o|0;if((u|0)<(s|0))return o=12,o|0;if((u|0)==(s|0))return r[o>>2]=t,r[o+4>>2]=n,o=0,o|0;if(l=oA(s|0,0,52)|0,l=l|t,t=S()|0|n&-15728641,(u|0)>(s|0))do n=oA(7,0,(14-s|0)*3|0)|0,s=s+1|0,l=n|l,t=S()|0|t;while((s|0)<(u|0));return r[o>>2]=l,r[o+4>>2]=t,o=0,o|0}function fr(t,n,s,o){t=t|0,n=n|0,s=s|0,o=o|0;var l=0,u=0,f=0;if(u=AA(t|0,n|0,52)|0,S()|0,u=u&15,!((s|0)<16&(u|0)<=(s|0)))return o=4,o|0;l=s-u|0,s=AA(t|0,n|0,45)|0,S()|0;A:do if(!(ee(s&127)|0))s=ut(7,0,l,((l|0)<0)<<31>>31)|0,l=S()|0;else{e:do if(u|0){for(s=1;f=oA(7,0,(15-s|0)*3|0)|0,!!((f&t|0)==0&((S()|0)&n|0)==0);)if(s>>>0<u>>>0)s=s+1|0;else break e;s=ut(7,0,l,((l|0)<0)<<31>>31)|0,l=S()|0;break A}while(!1);s=ut(7,0,l,((l|0)<0)<<31>>31)|0,s=le(s|0,S()|0,5,0)|0,s=wA(s|0,S()|0,-5,-1)|0,s=ft(s|0,S()|0,6,0)|0,s=wA(s|0,S()|0,1,0)|0,l=S()|0}while(!1);return f=o,r[f>>2]=s,r[f+4>>2]=l,f=0,f|0}function JA(t,n){t=t|0,n=n|0;var s=0,o=0,l=0;if(l=AA(t|0,n|0,45)|0,S()|0,!(ee(l&127)|0))return l=0,l|0;l=AA(t|0,n|0,52)|0,S()|0,l=l&15;A:do if(!l)s=0;else for(o=1;;){if(s=AA(t|0,n|0,(15-o|0)*3|0)|0,S()|0,s=s&7,s|0)break A;if(o>>>0<l>>>0)o=o+1|0;else{s=0;break}}while(!1);return l=(s|0)==0&1,l|0}function Bf(t,n,s,o){t=t|0,n=n|0,s=s|0,o=o|0;var l=0,u=0,f=0,d=0;if(f=E,E=E+16|0,u=f,u0(u,t,n,s),n=u,t=r[n>>2]|0,n=r[n+4>>2]|0,(t|0)==0&(n|0)==0)return E=f,0;l=0,s=0;do d=o+(l<<3)|0,r[d>>2]=t,r[d+4>>2]=n,l=wA(l|0,s|0,1,0)|0,s=S()|0,c0(u),d=u,t=r[d>>2]|0,n=r[d+4>>2]|0;while(!((t|0)==0&(n|0)==0));return E=f,0}function _s(t,n,s,o){return t=t|0,n=n|0,s=s|0,o=o|0,(o|0)<(s|0)?(s=n,o=t,IA(s|0),o|0):(s=oA(-1,-1,((o-s|0)*3|0)+3|0)|0,o=oA(~s|0,~(S()|0)|0,(15-o|0)*3|0)|0,s=~(S()|0)&n,o=~o&t,IA(s|0),o|0)}function bs(t,n,s,o){t=t|0,n=n|0,s=s|0,o=o|0;var l=0;return l=AA(t|0,n|0,52)|0,S()|0,l=l&15,(s|0)<16&(l|0)<=(s|0)?((l|0)<(s|0)&&(l=oA(-1,-1,((s+-1-l|0)*3|0)+3|0)|0,l=oA(~l|0,~(S()|0)|0,(15-s|0)*3|0)|0,n=~(S()|0)&n,t=~l&t),l=oA(s|0,0,52)|0,s=n&-15728641|(S()|0),r[o>>2]=t|l,r[o+4>>2]=s,o=0,o|0):(o=4,o|0)}function Lf(t,n,s,o){t=t|0,n=n|0,s=s|0,o=o|0;var l=0,u=0,f=0,d=0,p=0,w=0,T=0,M=0,I=0,B=0,L=0,D=0,F=0,q=0,V=0,Q=0,O=0,sA=0,gA=0,fA=0,SA=0,BA=0,DA=0,_A=0,pA=0,iA=0;if((s|0)==0&(o|0)==0)return iA=0,iA|0;if(l=t,u=r[l>>2]|0,l=r[l+4>>2]|0,!0&(l&15728640|0)==0){if(!((o|0)>0|(o|0)==0&s>>>0>0)||(iA=n,r[iA>>2]=u,r[iA+4>>2]=l,(s|0)==1&(o|0)==0))return iA=0,iA|0;l=1,u=0;do _A=t+(l<<3)|0,pA=r[_A+4>>2]|0,iA=n+(l<<3)|0,r[iA>>2]=r[_A>>2],r[iA+4>>2]=pA,l=wA(l|0,u|0,1,0)|0,u=S()|0;while((u|0)<(o|0)|(u|0)==(o|0)&l>>>0<s>>>0);return l=0,l|0}if(DA=s<<3,pA=Ye(DA)|0,!pA)return iA=13,iA|0;if(qt(pA|0,t|0,DA|0)|0,_A=Me(s,8)|0,!_A)return TA(pA),iA=13,iA|0;A:for(;;){l=pA,w=r[l>>2]|0,l=r[l+4>>2]|0,SA=AA(w|0,l|0,52)|0,S()|0,SA=SA&15,BA=SA+-1|0,fA=(SA|0)!=0,gA=(o|0)>0|(o|0)==0&s>>>0>0;e:do if(fA&gA){if(V=oA(BA|0,0,52)|0,Q=S()|0,BA>>>0>15){if(!((w|0)==0&(l|0)==0)){iA=16;break A}for(u=0,t=0;;){if(u=wA(u|0,t|0,1,0)|0,t=S()|0,!((t|0)<(o|0)|(t|0)==(o|0)&u>>>0<s>>>0))break e;if(f=pA+(u<<3)|0,sA=r[f>>2]|0,f=r[f+4>>2]|0,!((sA|0)==0&(f|0)==0)){l=f,iA=16;break A}}}for(d=w,t=l,u=0,f=0;;){if(!((d|0)==0&(t|0)==0)){if(!(!0&(t&117440512|0)==0)){iA=21;break A}if(T=AA(d|0,t|0,52)|0,S()|0,T=T&15,(T|0)<(BA|0)){l=12,iA=27;break A}if((T|0)!=(BA|0)&&(d=d|V,t=t&-15728641|Q,T>>>0>=SA>>>0)){p=BA;do sA=oA(7,0,(14-p|0)*3|0)|0,p=p+1|0,d=sA|d,t=S()|0|t;while(p>>>0<T>>>0)}if(I=Gt(d|0,t|0,s|0,o|0)|0,B=S()|0,p=_A+(I<<3)|0,T=p,M=r[T>>2]|0,T=r[T+4>>2]|0,!((M|0)==0&(T|0)==0)){F=0,q=0;do{if((F|0)>(o|0)|(F|0)==(o|0)&q>>>0>s>>>0){iA=31;break A}if((M|0)==(d|0)&(T&-117440513|0)==(t|0)){L=AA(M|0,T|0,56)|0,S()|0,L=L&7,D=L+1|0,sA=AA(M|0,T|0,45)|0,S()|0;t:do if(!(ee(sA&127)|0))T=7;else{if(M=AA(M|0,T|0,52)|0,S()|0,M=M&15,!M){T=6;break}for(T=1;;){if(sA=oA(7,0,(15-T|0)*3|0)|0,!((sA&d|0)==0&((S()|0)&t|0)==0)){T=7;break t}if(T>>>0<M>>>0)T=T+1|0;else{T=6;break}}}while(!1);if((L+2|0)>>>0>T>>>0){iA=41;break A}sA=oA(D|0,0,56)|0,t=S()|0|t&-117440513,O=p,r[O>>2]=0,r[O+4>>2]=0,d=sA|d}else I=wA(I|0,B|0,1,0)|0,I=zt(I|0,S()|0,s|0,o|0)|0,B=S()|0;q=wA(q|0,F|0,1,0)|0,F=S()|0,p=_A+(I<<3)|0,T=p,M=r[T>>2]|0,T=r[T+4>>2]|0}while(!((M|0)==0&(T|0)==0))}sA=p,r[sA>>2]=d,r[sA+4>>2]=t}if(u=wA(u|0,f|0,1,0)|0,f=S()|0,!((f|0)<(o|0)|(f|0)==(o|0)&u>>>0<s>>>0))break e;t=pA+(u<<3)|0,d=r[t>>2]|0,t=r[t+4>>2]|0}}while(!1);if(sA=wA(s|0,o|0,5,0)|0,O=S()|0,O>>>0<0|(O|0)==0&sA>>>0<11){iA=85;break}if(sA=ft(s|0,o|0,6,0)|0,S()|0,sA=Me(sA,8)|0,!sA){iA=48;break}do if(gA){for(D=0,t=0,L=0,F=0;;){if(T=_A+(D<<3)|0,f=T,u=r[f>>2]|0,f=r[f+4>>2]|0,(u|0)==0&(f|0)==0)O=L;else{M=AA(u|0,f|0,56)|0,S()|0,M=M&7,d=M+1|0,I=f&-117440513,O=AA(u|0,f|0,45)|0,S()|0;e:do if(ee(O&127)|0){if(B=AA(u|0,f|0,52)|0,S()|0,B=B&15,B|0)for(p=1;;){if(O=oA(7,0,(15-p|0)*3|0)|0,!((u&O|0)==0&(I&(S()|0)|0)==0))break e;if(p>>>0<B>>>0)p=p+1|0;else break}f=oA(d|0,0,56)|0,u=f|u,f=S()|0|I,d=T,r[d>>2]=u,r[d+4>>2]=f,d=M+2|0}while(!1);(d|0)==7?(O=sA+(t<<3)|0,r[O>>2]=u,r[O+4>>2]=f&-117440513,t=wA(t|0,L|0,1,0)|0,O=S()|0):O=L}if(D=wA(D|0,F|0,1,0)|0,F=S()|0,(F|0)<(o|0)|(F|0)==(o|0)&D>>>0<s>>>0)L=O;else break}if(gA){if(q=BA>>>0>15,V=oA(BA|0,0,52)|0,Q=S()|0,!fA){for(u=0,p=0,d=0,f=0;(w|0)==0&(l|0)==0||(BA=n+(u<<3)|0,r[BA>>2]=w,r[BA+4>>2]=l,u=wA(u|0,p|0,1,0)|0,p=S()|0),d=wA(d|0,f|0,1,0)|0,f=S()|0,!!((f|0)<(o|0)|(f|0)==(o|0)&d>>>0<s>>>0);)l=pA+(d<<3)|0,w=r[l>>2]|0,l=r[l+4>>2]|0;l=O;break}for(u=0,p=0,f=0,d=0;;){do if(!((w|0)==0&(l|0)==0)){if(B=AA(w|0,l|0,52)|0,S()|0,B=B&15,q|(B|0)<(BA|0)){iA=80;break A}if((B|0)!=(BA|0)){if(T=w|V,M=l&-15728641|Q,B>>>0>=SA>>>0){I=BA;do fA=oA(7,0,(14-I|0)*3|0)|0,I=I+1|0,T=fA|T,M=S()|0|M;while(I>>>0<B>>>0)}}else T=w,M=l;L=Gt(T|0,M|0,s|0,o|0)|0,I=0,B=0,F=S()|0;do{if((I|0)>(o|0)|(I|0)==(o|0)&B>>>0>s>>>0){iA=81;break A}if(fA=_A+(L<<3)|0,D=r[fA+4>>2]|0,(D&-117440513|0)==(M|0)&&(r[fA>>2]|0)==(T|0)){iA=65;break}fA=wA(L|0,F|0,1,0)|0,L=zt(fA|0,S()|0,s|0,o|0)|0,F=S()|0,B=wA(B|0,I|0,1,0)|0,I=S()|0,fA=_A+(L<<3)|0}while(!((r[fA>>2]|0)==(T|0)&&(r[fA+4>>2]|0)==(M|0)));if((iA|0)==65&&(iA=0,!0&(D&117440512|0)==100663296))break;fA=n+(u<<3)|0,r[fA>>2]=w,r[fA+4>>2]=l,u=wA(u|0,p|0,1,0)|0,p=S()|0}while(!1);if(f=wA(f|0,d|0,1,0)|0,d=S()|0,!((d|0)<(o|0)|(d|0)==(o|0)&f>>>0<s>>>0))break;l=pA+(f<<3)|0,w=r[l>>2]|0,l=r[l+4>>2]|0}l=O}else u=0,l=O}else u=0,t=0,l=0;while(!1);if(ht(_A|0,0,DA|0)|0,qt(pA|0,sA|0,t<<3|0)|0,TA(sA),(t|0)==0&(l|0)==0){iA=89;break}else n=n+(u<<3)|0,o=l,s=t}if((iA|0)==16)!0&(l&117440512|0)==0?(l=4,iA=27):iA=21;else if((iA|0)==31)bA(27795,27122,529,27132);else{if((iA|0)==41)return TA(pA),TA(_A),iA=10,iA|0;if((iA|0)==48)return TA(pA),TA(_A),iA=13,iA|0;(iA|0)==80?bA(27795,27122,620,27132):(iA|0)==81?bA(27795,27122,632,27132):(iA|0)==85&&(qt(n|0,pA|0,s<<3|0)|0,iA=89)}return(iA|0)==21?(TA(pA),TA(_A),iA=5,iA|0):(iA|0)==27?(TA(pA),TA(_A),iA=l,iA|0):(iA|0)==89?(TA(pA),TA(_A),iA=0,iA|0):0}function Pf(t,n,s,o,l,u,f){t=t|0,n=n|0,s=s|0,o=o|0,l=l|0,u=u|0,f=f|0;var d=0,p=0,w=0,T=0,M=0,I=0,B=0,L=0,D=0;if(D=E,E=E+16|0,L=D,!((s|0)>0|(s|0)==0&n>>>0>0))return L=0,E=D,L|0;if((f|0)>=16)return L=12,E=D,L|0;I=0,B=0,M=0,d=0;A:for(;;){if(w=t+(I<<3)|0,p=r[w>>2]|0,w=r[w+4>>2]|0,T=AA(p|0,w|0,52)|0,S()|0,(T&15|0)>(f|0)){d=12,p=11;break}if(u0(L,p,w,f),T=L,w=r[T>>2]|0,T=r[T+4>>2]|0,(w|0)==0&(T|0)==0)p=M;else{p=M;do{if(!((d|0)<(u|0)|(d|0)==(u|0)&p>>>0<l>>>0)){p=10;break A}M=o+(p<<3)|0,r[M>>2]=w,r[M+4>>2]=T,p=wA(p|0,d|0,1,0)|0,d=S()|0,c0(L),M=L,w=r[M>>2]|0,T=r[M+4>>2]|0}while(!((w|0)==0&(T|0)==0))}if(I=wA(I|0,B|0,1,0)|0,B=S()|0,(B|0)<(s|0)|(B|0)==(s|0)&I>>>0<n>>>0)M=p;else{d=0,p=11;break}}return(p|0)==10?(L=14,E=D,L|0):(p|0)==11?(E=D,d|0):0}function xf(t,n,s,o,l){t=t|0,n=n|0,s=s|0,o=o|0,l=l|0;var u=0,f=0,d=0,p=0,w=0,T=0,M=0,I=0;I=E,E=E+16|0,M=I;A:do if((s|0)>0|(s|0)==0&n>>>0>0){for(w=0,f=0,u=0,T=0;;){if(p=t+(w<<3)|0,d=r[p>>2]|0,p=r[p+4>>2]|0,!((d|0)==0&(p|0)==0)&&(p=(fr(d,p,o,M)|0)==0,d=M,f=wA(r[d>>2]|0,r[d+4>>2]|0,f|0,u|0)|0,u=S()|0,!p)){u=12;break}if(w=wA(w|0,T|0,1,0)|0,T=S()|0,!((T|0)<(s|0)|(T|0)==(s|0)&w>>>0<n>>>0))break A}return E=I,u|0}else f=0,u=0;while(!1);return r[l>>2]=f,r[l+4>>2]=u,l=0,E=I,l|0}function Nf(t,n){return t=t|0,n=n|0,n=AA(t|0,n|0,52)|0,S()|0,n&1|0}function Ee(t,n){t=t|0,n=n|0;var s=0,o=0,l=0;if(l=AA(t|0,n|0,52)|0,S()|0,l=l&15,!l)return l=0,l|0;for(o=1;;){if(s=AA(t|0,n|0,(15-o|0)*3|0)|0,S()|0,s=s&7,s|0){o=5;break}if(o>>>0<l>>>0)o=o+1|0;else{s=0,o=5;break}}return(o|0)==5?s|0:0}function i0(t,n){t=t|0,n=n|0;var s=0,o=0,l=0,u=0,f=0,d=0,p=0;if(p=AA(t|0,n|0,52)|0,S()|0,p=p&15,!p)return d=n,p=t,IA(d|0),p|0;for(d=1,s=0;;){u=(15-d|0)*3|0,o=oA(7,0,u|0)|0,l=S()|0,f=AA(t|0,n|0,u|0)|0,S()|0,u=oA(vt(f&7)|0,0,u|0)|0,f=S()|0,t=u|t&~o,n=f|n&~l;A:do if(!s)if((u&o|0)==0&(f&l|0)==0)s=0;else if(o=AA(t|0,n|0,52)|0,S()|0,o=o&15,!o)s=1;else{s=1;e:for(;;){switch(f=AA(t|0,n|0,(15-s|0)*3|0)|0,S()|0,f&7){case 1:break e;case 0:break;default:{s=1;break A}}if(s>>>0<o>>>0)s=s+1|0;else{s=1;break A}}for(s=1;;)if(f=(15-s|0)*3|0,l=AA(t|0,n|0,f|0)|0,S()|0,u=oA(7,0,f|0)|0,n=n&~(S()|0),f=oA(vt(l&7)|0,0,f|0)|0,t=t&~u|f,n=n|(S()|0),s>>>0<o>>>0)s=s+1|0;else{s=1;break}}while(!1);if(d>>>0<p>>>0)d=d+1|0;else break}return IA(n|0),t|0}function _t(t,n){t=t|0,n=n|0;var s=0,o=0,l=0,u=0,f=0;if(o=AA(t|0,n|0,52)|0,S()|0,o=o&15,!o)return s=n,o=t,IA(s|0),o|0;for(s=1;u=(15-s|0)*3|0,f=AA(t|0,n|0,u|0)|0,S()|0,l=oA(7,0,u|0)|0,n=n&~(S()|0),u=oA(vt(f&7)|0,0,u|0)|0,t=u|t&~l,n=S()|0|n,s>>>0<o>>>0;)s=s+1|0;return IA(n|0),t|0}function Rf(t,n){t=t|0,n=n|0;var s=0,o=0,l=0,u=0,f=0,d=0,p=0;if(p=AA(t|0,n|0,52)|0,S()|0,p=p&15,!p)return d=n,p=t,IA(d|0),p|0;for(d=1,s=0;;){u=(15-d|0)*3|0,o=oA(7,0,u|0)|0,l=S()|0,f=AA(t|0,n|0,u|0)|0,S()|0,u=oA(lt(f&7)|0,0,u|0)|0,f=S()|0,t=u|t&~o,n=f|n&~l;A:do if(!s)if((u&o|0)==0&(f&l|0)==0)s=0;else if(o=AA(t|0,n|0,52)|0,S()|0,o=o&15,!o)s=1;else{s=1;e:for(;;){switch(f=AA(t|0,n|0,(15-s|0)*3|0)|0,S()|0,f&7){case 1:break e;case 0:break;default:{s=1;break A}}if(s>>>0<o>>>0)s=s+1|0;else{s=1;break A}}for(s=1;;)if(l=(15-s|0)*3|0,u=oA(7,0,l|0)|0,f=n&~(S()|0),n=AA(t|0,n|0,l|0)|0,S()|0,n=oA(lt(n&7)|0,0,l|0)|0,t=t&~u|n,n=f|(S()|0),s>>>0<o>>>0)s=s+1|0;else{s=1;break}}while(!1);if(d>>>0<p>>>0)d=d+1|0;else break}return IA(n|0),t|0}function s0(t,n){t=t|0,n=n|0;var s=0,o=0,l=0,u=0,f=0;if(o=AA(t|0,n|0,52)|0,S()|0,o=o&15,!o)return s=n,o=t,IA(s|0),o|0;for(s=1;f=(15-s|0)*3|0,u=oA(7,0,f|0)|0,l=n&~(S()|0),n=AA(t|0,n|0,f|0)|0,S()|0,n=oA(lt(n&7)|0,0,f|0)|0,t=n|t&~u,n=S()|0|l,s>>>0<o>>>0;)s=s+1|0;return IA(n|0),t|0}function Df(t,n){t=t|0,n=n|0;var s=0,o=0,l=0,u=0,f=0,d=0,p=0,w=0,T=0;if(p=E,E=E+64|0,d=p+40|0,o=p+24|0,l=p+12|0,u=p,oA(n|0,0,52)|0,s=S()|0|134225919,!n)return(r[t+4>>2]|0)>2||(r[t+8>>2]|0)>2||(r[t+12>>2]|0)>2?(f=0,d=0,IA(f|0),E=p,d|0):(oA(ss(t)|0,0,45)|0,f=S()|0|s,d=-1,IA(f|0),E=p,d|0);if(r[d>>2]=r[t>>2],r[d+4>>2]=r[t+4>>2],r[d+8>>2]=r[t+8>>2],r[d+12>>2]=r[t+12>>2],f=d+4|0,(n|0)>0)for(t=-1;r[o>>2]=r[f>>2],r[o+4>>2]=r[f+4>>2],r[o+8>>2]=r[f+8>>2],n&1?(ff(f),r[l>>2]=r[f>>2],r[l+4>>2]=r[f+4>>2],r[l+8>>2]=r[f+8>>2],Rr(l)):(hs(f),r[l>>2]=r[f>>2],r[l+4>>2]=r[f+4>>2],r[l+8>>2]=r[f+8>>2],Tt(l)),Kn(o,l,u),pe(u),T=(15-n|0)*3|0,w=oA(7,0,T|0)|0,s=s&~(S()|0),T=oA(Nr(u)|0,0,T|0)|0,t=T|t&~w,s=S()|0|s,(n|0)>1;)n=n+-1|0;else t=-1;A:do if((r[f>>2]|0)<=2&&(r[d+8>>2]|0)<=2&&(r[d+12>>2]|0)<=2){if(o=ss(d)|0,n=oA(o|0,0,45)|0,n=n|t,t=S()|0|s&-1040385,u=Jc(d)|0,!(ee(o)|0)){if((u|0)<=0)break;for(l=0;;){if(o=AA(n|0,t|0,52)|0,S()|0,o=o&15,o)for(s=1;T=(15-s|0)*3|0,d=AA(n|0,t|0,T|0)|0,S()|0,w=oA(7,0,T|0)|0,t=t&~(S()|0),T=oA(vt(d&7)|0,0,T|0)|0,n=n&~w|T,t=t|(S()|0),s>>>0<o>>>0;)s=s+1|0;if(l=l+1|0,(l|0)==(u|0))break A}}l=AA(n|0,t|0,52)|0,S()|0,l=l&15;e:do if(l){s=1;t:for(;;){switch(T=AA(n|0,t|0,(15-s|0)*3|0)|0,S()|0,T&7){case 1:break t;case 0:break;default:break e}if(s>>>0<l>>>0)s=s+1|0;else break e}if(os(o,r[d>>2]|0)|0)for(s=1;d=(15-s|0)*3|0,w=oA(7,0,d|0)|0,T=t&~(S()|0),t=AA(n|0,t|0,d|0)|0,S()|0,t=oA(lt(t&7)|0,0,d|0)|0,n=n&~w|t,t=T|(S()|0),s>>>0<l>>>0;)s=s+1|0;else for(s=1;T=(15-s|0)*3|0,d=AA(n|0,t|0,T|0)|0,S()|0,w=oA(7,0,T|0)|0,t=t&~(S()|0),T=oA(vt(d&7)|0,0,T|0)|0,n=n&~w|T,t=t|(S()|0),s>>>0<l>>>0;)s=s+1|0}while(!1);if((u|0)>0){s=0;do n=i0(n,t)|0,t=S()|0,s=s+1|0;while((s|0)!=(u|0))}}else n=0,t=0;while(!1);return w=t,T=n,IA(w|0),E=p,T|0}function Oe(t){return t=t|0,(t|0)%2|0|0}function o0(t,n,s){t=t|0,n=n|0,s=s|0;var o=0,l=0;return l=E,E=E+16|0,o=l,n>>>0>15?(o=4,E=l,o|0):(r[t+4>>2]&2146435072|0)==2146435072||(r[t+8+4>>2]&2146435072|0)==2146435072?(o=3,E=l,o|0):(bf(t,n,o),n=Df(o,n)|0,o=S()|0,r[s>>2]=n,r[s+4>>2]=o,(n|0)==0&(o|0)==0&&bA(27795,27122,959,27145),o=0,E=l,o|0)}function a0(t,n,s){t=t|0,n=n|0,s=s|0;var o=0,l=0,u=0,f=0;if(l=s+4|0,u=AA(t|0,n|0,52)|0,S()|0,u=u&15,f=AA(t|0,n|0,45)|0,S()|0,o=(u|0)==0,ee(f&127)|0){if(o)return f=1,f|0;o=1}else{if(o)return f=0,f|0;(r[l>>2]|0)==0&&(r[s+8>>2]|0)==0?o=(r[s+12>>2]|0)!=0&1:o=1}for(s=1;s&1?Rr(l):Tt(l),f=AA(t|0,n|0,(15-s|0)*3|0)|0,S()|0,ds(l,f&7),s>>>0<u>>>0;)s=s+1|0;return o|0}function Ut(t,n,s){t=t|0,n=n|0,s=s|0;var o=0,l=0,u=0,f=0,d=0,p=0,w=0,T=0;if(T=E,E=E+16|0,p=T,w=AA(t|0,n|0,45)|0,S()|0,w=w&127,w>>>0>121)return r[s>>2]=0,r[s+4>>2]=0,r[s+8>>2]=0,r[s+12>>2]=0,w=5,E=T,w|0;A:do if((ee(w)|0)!=0&&(u=AA(t|0,n|0,52)|0,S()|0,u=u&15,(u|0)!=0)){o=1;e:for(;;){switch(d=AA(t|0,n|0,(15-o|0)*3|0)|0,S()|0,d&7){case 5:break e;case 0:break;default:{o=n;break A}}if(o>>>0<u>>>0)o=o+1|0;else{o=n;break A}}for(l=1,o=n;n=(15-l|0)*3|0,f=oA(7,0,n|0)|0,d=o&~(S()|0),o=AA(t|0,o|0,n|0)|0,S()|0,o=oA(lt(o&7)|0,0,n|0)|0,t=t&~f|o,o=d|(S()|0),l>>>0<u>>>0;)l=l+1|0}else o=n;while(!1);if(d=7696+(w*28|0)|0,r[s>>2]=r[d>>2],r[s+4>>2]=r[d+4>>2],r[s+8>>2]=r[d+8>>2],r[s+12>>2]=r[d+12>>2],!(a0(t,o,s)|0))return w=0,E=T,w|0;if(f=s+4|0,r[p>>2]=r[f>>2],r[p+4>>2]=r[f+4>>2],r[p+8>>2]=r[f+8>>2],u=AA(t|0,o|0,52)|0,S()|0,d=u&15,u&1?(Tt(f),u=d+1|0):u=d,!(ee(w)|0))o=0;else{A:do if(!d)o=0;else for(n=1;;){if(l=AA(t|0,o|0,(15-n|0)*3|0)|0,S()|0,l=l&7,l|0){o=l;break A}if(n>>>0<d>>>0)n=n+1|0;else{o=0;break}}while(!1);o=(o|0)==4&1}if(!(Ft(s,u,o,0)|0))(u|0)!=(d|0)&&(r[f>>2]=r[p>>2],r[f+4>>2]=r[p+4>>2],r[f+8>>2]=r[p+8>>2]);else{if(ee(w)|0)do;while((Ft(s,u,0,0)|0)!=0);(u|0)!=(d|0)&&hs(f)}return w=0,E=T,w|0}function bt(t,n,s){t=t|0,n=n|0,s=s|0;var o=0,l=0,u=0;return u=E,E=E+16|0,o=u,l=Ut(t,n,o)|0,l|0?(E=u,l|0):(l=AA(t|0,n|0,52)|0,S()|0,Cf(o,l&15,s),l=0,E=u,l|0)}function Qt(t,n,s){t=t|0,n=n|0,s=s|0;var o=0,l=0,u=0,f=0,d=0;if(f=E,E=E+16|0,u=f,o=Ut(t,n,u)|0,o|0)return u=o,E=f,u|0;o=AA(t|0,n|0,45)|0,S()|0,o=(ee(o&127)|0)==0,l=AA(t|0,n|0,52)|0,S()|0,l=l&15;A:do if(!o){if(l|0)for(o=1;;){if(d=oA(7,0,(15-o|0)*3|0)|0,!((d&t|0)==0&((S()|0)&n|0)==0))break A;if(o>>>0<l>>>0)o=o+1|0;else break}return A0(u,l,0,5,s),d=0,E=f,d|0}while(!1);return e0(u,l,0,6,s),d=0,E=f,d|0}function Of(t,n,s){t=t|0,n=n|0,s=s|0;var o=0,l=0,u=0;if(l=AA(t|0,n|0,45)|0,S()|0,!(ee(l&127)|0))return l=2,r[s>>2]=l,0;if(l=AA(t|0,n|0,52)|0,S()|0,l=l&15,!l)return l=5,r[s>>2]=l,0;for(o=1;;){if(u=oA(7,0,(15-o|0)*3|0)|0,!((u&t|0)==0&((S()|0)&n|0)==0)){o=2,t=6;break}if(o>>>0<l>>>0)o=o+1|0;else{o=5,t=6;break}}return(t|0)==6&&(r[s>>2]=o),0}function Es(t,n,s){t=t|0,n=n|0,s=s|0;var o=0,l=0,u=0,f=0,d=0,p=0,w=0,T=0,M=0;M=E,E=E+128|0,w=M+112|0,u=M+96|0,T=M,l=AA(t|0,n|0,52)|0,S()|0,d=l&15,r[w>>2]=d,f=AA(t|0,n|0,45)|0,S()|0,f=f&127;A:do if(ee(f)|0){if(d|0)for(o=1;;){if(p=oA(7,0,(15-o|0)*3|0)|0,!((p&t|0)==0&((S()|0)&n|0)==0)){l=0;break A}if(o>>>0<d>>>0)o=o+1|0;else break}if(l&1)l=1;else return p=oA(d+1|0,0,52)|0,T=S()|0|n&-15728641,w=oA(7,0,(14-d|0)*3|0)|0,T=Es((p|t)&~w,T&~(S()|0),s)|0,E=M,T|0}else l=0;while(!1);if(o=Ut(t,n,u)|0,!o){l?(ys(u,w,T),p=5):(Ts(u,w,T),p=6);A:do if(ee(f)|0)if(!d)t=5;else for(o=1;;){if(f=oA(7,0,(15-o|0)*3|0)|0,!((f&t|0)==0&((S()|0)&n|0)==0)){t=2;break A}if(o>>>0<d>>>0)o=o+1|0;else{t=5;break}}else t=2;while(!1);ht(s|0,-1,t<<2|0)|0;A:do if(l)for(u=0;;){if(f=T+(u<<4)|0,Sf(f,r[w>>2]|0)|0,f=r[f>>2]|0,d=r[s>>2]|0,(d|0)==-1|(d|0)==(f|0))o=s;else{l=0;do{if(l=l+1|0,l>>>0>=t>>>0){o=1;break A}o=s+(l<<2)|0,d=r[o>>2]|0}while(!((d|0)==-1|(d|0)==(f|0)))}if(r[o>>2]=f,u=u+1|0,u>>>0>=p>>>0){o=0;break}}else for(u=0;;){if(f=T+(u<<4)|0,Ft(f,r[w>>2]|0,0,1)|0,f=r[f>>2]|0,d=r[s>>2]|0,(d|0)==-1|(d|0)==(f|0))o=s;else{l=0;do{if(l=l+1|0,l>>>0>=t>>>0){o=1;break A}o=s+(l<<2)|0,d=r[o>>2]|0}while(!((d|0)==-1|(d|0)==(f|0)))}if(r[o>>2]=f,u=u+1|0,u>>>0>=p>>>0){o=0;break}}while(!1)}return T=o,E=M,T|0}function kf(){return 12}function l0(t,n){t=t|0,n=n|0;var s=0,o=0,l=0,u=0,f=0,d=0,p=0;if(t>>>0>15)return d=4,d|0;if(oA(t|0,0,52)|0,d=S()|0|134225919,!t){s=0,o=0;do ee(o)|0&&(oA(o|0,0,45)|0,f=d|(S()|0),t=n+(s<<3)|0,r[t>>2]=-1,r[t+4>>2]=f,s=s+1|0),o=o+1|0;while((o|0)!=122);return s=0,s|0}s=0,f=0;do{if(ee(f)|0){for(oA(f|0,0,45)|0,o=1,l=-1,u=d|(S()|0);p=oA(7,0,(15-o|0)*3|0)|0,l=l&~p,u=u&~(S()|0),(o|0)!=(t|0);)o=o+1|0;p=n+(s<<3)|0,r[p>>2]=l,r[p+4>>2]=u,s=s+1|0}f=f+1|0}while((f|0)!=122);return s=0,s|0}function Ff(t,n,s,o){t=t|0,n=n|0,s=s|0,o=o|0;var l=0,u=0,f=0,d=0,p=0,w=0,T=0,M=0,I=0,B=0,L=0,D=0,F=0,q=0,V=0;if(V=E,E=E+16|0,F=V,q=AA(t|0,n|0,52)|0,S()|0,q=q&15,s>>>0>15)return q=4,E=V,q|0;if((q|0)<(s|0))return q=12,E=V,q|0;if((q|0)!=(s|0))if(u=oA(s|0,0,52)|0,u=u|t,d=S()|0|n&-15728641,(q|0)>(s|0)){p=s;do D=oA(7,0,(14-p|0)*3|0)|0,p=p+1|0,u=D|u,d=S()|0|d;while((p|0)<(q|0));D=u}else D=u;else D=t,d=n;L=AA(D|0,d|0,45)|0,S()|0;A:do if(ee(L&127)|0){if(p=AA(D|0,d|0,52)|0,S()|0,p=p&15,p|0)for(u=1;;){if(L=oA(7,0,(15-u|0)*3|0)|0,!((L&D|0)==0&((S()|0)&d|0)==0)){w=33;break A}if(u>>>0<p>>>0)u=u+1|0;else break}if(L=o,r[L>>2]=0,r[L+4>>2]=0,(q|0)>(s|0)){for(L=n&-15728641,B=q;;){if(I=B,B=B+-1|0,B>>>0>15|(q|0)<(B|0)){w=19;break}if((q|0)!=(B|0))if(u=oA(B|0,0,52)|0,u=u|t,p=S()|0|L,(q|0)<(I|0))M=u;else{w=B;do M=oA(7,0,(14-w|0)*3|0)|0,w=w+1|0,u=M|u,p=S()|0|p;while((w|0)<(q|0));M=u}else M=t,p=n;if(T=AA(M|0,p|0,45)|0,S()|0,!(ee(T&127)|0))u=0;else{T=AA(M|0,p|0,52)|0,S()|0,T=T&15;e:do if(!T)u=0;else for(w=1;;){if(u=AA(M|0,p|0,(15-w|0)*3|0)|0,S()|0,u=u&7,u|0)break e;if(w>>>0<T>>>0)w=w+1|0;else{u=0;break}}while(!1);u=(u|0)==0&1}if(p=AA(t|0,n|0,(15-I|0)*3|0)|0,S()|0,p=p&7,(p|0)==7){l=5,w=42;break}if(u=(u|0)!=0,(p|0)==1&u){l=5,w=42;break}if(M=p+(((p|0)!=0&u)<<31>>31)|0,M|0&&(w=q-I|0,w=ut(7,0,w,((w|0)<0)<<31>>31)|0,T=S()|0,u?(u=le(w|0,T|0,5,0)|0,u=wA(u|0,S()|0,-5,-1)|0,u=ft(u|0,S()|0,6,0)|0,u=wA(u|0,S()|0,1,0)|0,p=S()|0):(u=w,p=T),I=M+-1|0,I=le(w|0,T|0,I|0,((I|0)<0)<<31>>31|0)|0,I=wA(u|0,p|0,I|0,S()|0)|0,M=S()|0,T=o,T=wA(I|0,M|0,r[T>>2]|0,r[T+4>>2]|0)|0,M=S()|0,I=o,r[I>>2]=T,r[I+4>>2]=M),(B|0)<=(s|0)){w=37;break}}if((w|0)==19)bA(27795,27122,1276,27158);else if((w|0)==37){f=o,l=r[f+4>>2]|0,f=r[f>>2]|0;break}else if((w|0)==42)return E=V,l|0}else l=0,f=0}else w=33;while(!1);A:do if((w|0)==33)if(L=o,r[L>>2]=0,r[L+4>>2]=0,(q|0)>(s|0)){for(u=q;;){if(l=AA(t|0,n|0,(15-u|0)*3|0)|0,S()|0,l=l&7,(l|0)==7){l=5;break}if(f=q-u|0,f=ut(7,0,f,((f|0)<0)<<31>>31)|0,l=le(f|0,S()|0,l|0,0)|0,f=S()|0,L=o,f=wA(r[L>>2]|0,r[L+4>>2]|0,l|0,f|0)|0,l=S()|0,L=o,r[L>>2]=f,r[L+4>>2]=l,u=u+-1|0,(u|0)<=(s|0))break A}return E=V,l|0}else l=0,f=0;while(!1);return fr(D,d,q,F)|0&&bA(27795,27122,1236,27173),q=F,F=r[q+4>>2]|0,((l|0)>-1|(l|0)==-1&f>>>0>4294967295)&((F|0)>(l|0)|((F|0)==(l|0)?(r[q>>2]|0)>>>0>f>>>0:0))?(q=0,E=V,q|0):(bA(27795,27122,1316,27158),0)}function Uf(t,n,s,o,l,u){t=t|0,n=n|0,s=s|0,o=o|0,l=l|0,u=u|0;var f=0,d=0,p=0,w=0,T=0,M=0,I=0,B=0,L=0,D=0;if(M=E,E=E+16|0,f=M,l>>>0>15)return u=4,E=M,u|0;if(d=AA(s|0,o|0,52)|0,S()|0,d=d&15,(d|0)>(l|0))return u=12,E=M,u|0;if(fr(s,o,l,f)|0&&bA(27795,27122,1236,27173),T=f,w=r[T+4>>2]|0,!(((n|0)>-1|(n|0)==-1&t>>>0>4294967295)&((w|0)>(n|0)|((w|0)==(n|0)?(r[T>>2]|0)>>>0>t>>>0:0))))return u=2,E=M,u|0;T=l-d|0,l=oA(l|0,0,52)|0,p=S()|0|o&-15728641,w=u,r[w>>2]=l|s,r[w+4>>2]=p,w=AA(s|0,o|0,45)|0,S()|0;A:do if(ee(w&127)|0){if(d|0)for(f=1;;){if(w=oA(7,0,(15-f|0)*3|0)|0,!((w&s|0)==0&((S()|0)&o|0)==0))break A;if(f>>>0<d>>>0)f=f+1|0;else break}if((T|0)<1)return u=0,E=M,u|0;for(w=d^15,o=-1,p=1,f=1;;){d=T-p|0,d=ut(7,0,d,((d|0)<0)<<31>>31)|0,s=S()|0;do if(f)if(f=le(d|0,s|0,5,0)|0,f=wA(f|0,S()|0,-5,-1)|0,f=ft(f|0,S()|0,6,0)|0,l=S()|0,(n|0)>(l|0)|(n|0)==(l|0)&t>>>0>f>>>0){n=wA(t|0,n|0,-1,-1)|0,n=fe(n|0,S()|0,f|0,l|0)|0,f=S()|0,I=u,L=r[I>>2]|0,I=r[I+4>>2]|0,D=(w+o|0)*3|0,B=oA(7,0,D|0)|0,I=I&~(S()|0),o=ft(n|0,f|0,d|0,s|0)|0,t=S()|0,l=wA(o|0,t|0,2,0)|0,D=oA(l|0,S()|0,D|0)|0,I=S()|0|I,l=u,r[l>>2]=D|L&~B,r[l+4>>2]=I,t=le(o|0,t|0,d|0,s|0)|0,t=fe(n|0,f|0,t|0,S()|0)|0,f=0,n=S()|0;break}else{D=u,B=r[D>>2]|0,D=r[D+4>>2]|0,L=oA(7,0,(w+o|0)*3|0)|0,D=D&~(S()|0),f=u,r[f>>2]=B&~L,r[f+4>>2]=D,f=1;break}else B=u,l=r[B>>2]|0,B=r[B+4>>2]|0,o=(w+o|0)*3|0,I=oA(7,0,o|0)|0,B=B&~(S()|0),D=ft(t|0,n|0,d|0,s|0)|0,f=S()|0,o=oA(D|0,f|0,o|0)|0,B=S()|0|B,L=u,r[L>>2]=o|l&~I,r[L+4>>2]=B,f=le(D|0,f|0,d|0,s|0)|0,t=fe(t|0,n|0,f|0,S()|0)|0,f=0,n=S()|0;while(!1);if((T|0)>(p|0))o=~p,p=p+1|0;else{n=0;break}}return E=M,n|0}while(!1);if((T|0)<1)return D=0,E=M,D|0;for(l=d^15,f=1;;)if(L=T-f|0,L=ut(7,0,L,((L|0)<0)<<31>>31)|0,D=S()|0,p=u,s=r[p>>2]|0,p=r[p+4>>2]|0,d=(l-f|0)*3|0,o=oA(7,0,d|0)|0,p=p&~(S()|0),I=ft(t|0,n|0,L|0,D|0)|0,B=S()|0,d=oA(I|0,B|0,d|0)|0,p=S()|0|p,w=u,r[w>>2]=d|s&~o,r[w+4>>2]=p,D=le(I|0,B|0,L|0,D|0)|0,t=fe(t|0,n|0,D|0,S()|0)|0,n=S()|0,(T|0)<=(f|0)){n=0;break}else f=f+1|0;return E=M,n|0}function u0(t,n,s,o){t=t|0,n=n|0,s=s|0,o=o|0;var l=0,u=0,f=0;l=AA(n|0,s|0,52)|0,S()|0,l=l&15,(n|0)==0&(s|0)==0|((o|0)>15|(l|0)>(o|0))?(u=-1,n=-1,s=0,l=0):(n=_s(n,s,l+1|0,o)|0,f=(S()|0)&-15728641,s=oA(o|0,0,52)|0,s=n|s,f=f|(S()|0),n=(JA(s,f)|0)==0,u=l,n=n?-1:o,l=f),f=t,r[f>>2]=s,r[f+4>>2]=l,r[t+8>>2]=u,r[t+12>>2]=n}function Ms(t,n,s,o){t=t|0,n=n|0,s=s|0,o=o|0;var l=0,u=0;if(l=AA(t|0,n|0,52)|0,S()|0,l=l&15,u=o+8|0,r[u>>2]=l,(t|0)==0&(n|0)==0|((s|0)>15|(l|0)>(s|0))){s=o,r[s>>2]=0,r[s+4>>2]=0,r[u>>2]=-1,r[o+12>>2]=-1;return}if(t=_s(t,n,l+1|0,s)|0,u=(S()|0)&-15728641,l=oA(s|0,0,52)|0,l=t|l,u=u|(S()|0),t=o,r[t>>2]=l,r[t+4>>2]=u,t=o+12|0,JA(l,u)|0){r[t>>2]=s;return}else{r[t>>2]=-1;return}}function c0(t){t=t|0;var n=0,s=0,o=0,l=0,u=0,f=0,d=0,p=0,w=0;if(s=t,n=r[s>>2]|0,s=r[s+4>>2]|0,!((n|0)==0&(s|0)==0)&&(o=AA(n|0,s|0,52)|0,S()|0,o=o&15,d=oA(1,0,(o^15)*3|0)|0,n=wA(d|0,S()|0,n|0,s|0)|0,s=S()|0,d=t,r[d>>2]=n,r[d+4>>2]=s,d=t+8|0,f=r[d>>2]|0,!((o|0)<(f|0)))){for(p=t+12|0,u=o;;){if((u|0)==(f|0)){o=5;break}if(w=(u|0)==(r[p>>2]|0),l=(15-u|0)*3|0,o=AA(n|0,s|0,l|0)|0,S()|0,o=o&7,w&((o|0)==1&!0)){o=7;break}if(!((o|0)==7&!0)){o=10;break}if(w=oA(1,0,l|0)|0,n=wA(n|0,s|0,w|0,S()|0)|0,s=S()|0,w=t,r[w>>2]=n,r[w+4>>2]=s,(u|0)>(f|0))u=u+-1|0;else{o=10;break}}if((o|0)==5){w=t,r[w>>2]=0,r[w+4>>2]=0,r[d>>2]=-1,r[p>>2]=-1;return}else if((o|0)==7){f=oA(1,0,l|0)|0,f=wA(n|0,s|0,f|0,S()|0)|0,d=S()|0,w=t,r[w>>2]=f,r[w+4>>2]=d,r[p>>2]=u+-1;return}else if((o|0)==10)return}}function hr(t){t=+t;var n=0;return n=t<0?t+6.283185307179586:t,+(t>=6.283185307179586?n+-6.283185307179586:n)}function Vt(t,n){return t=t|0,n=n|0,+NA(+(+b[t>>3]-+b[n>>3]))<17453292519943298e-27?(n=+NA(+(+b[t+8>>3]-+b[n+8>>3]))<17453292519943298e-27,n|0):(n=0,n|0)}function Be(t,n){switch(t=+t,n=n|0,n|0){case 1:{t=t<0?t+6.283185307179586:t;break}case 2:{t=t>0?t+-6.283185307179586:t;break}}return+t}function Qf(t,n){t=t|0,n=n|0;var s=0,o=0,l=0,u=0;return l=+b[n>>3],o=+b[t>>3],u=+RA(+((l-o)*.5)),s=+RA(+((+b[n+8>>3]-+b[t+8>>3])*.5)),s=u*u+s*(+GA(+l)*+GA(+o)*s),+(+De(+ +FA(+s),+ +FA(+(1-s)))*2)}function dr(t,n){t=t|0,n=n|0;var s=0,o=0,l=0,u=0;return l=+b[n>>3],o=+b[t>>3],u=+RA(+((l-o)*.5)),s=+RA(+((+b[n+8>>3]-+b[t+8>>3])*.5)),s=u*u+s*(+GA(+l)*+GA(+o)*s),+(+De(+ +FA(+s),+ +FA(+(1-s)))*2*6371.007180918475)}function Vf(t,n){t=t|0,n=n|0;var s=0,o=0,l=0,u=0;return l=+b[n>>3],o=+b[t>>3],u=+RA(+((l-o)*.5)),s=+RA(+((+b[n+8>>3]-+b[t+8>>3])*.5)),s=u*u+s*(+GA(+l)*+GA(+o)*s),+(+De(+ +FA(+s),+ +FA(+(1-s)))*2*6371.007180918475*1e3)}function zf(t,n){t=t|0,n=n|0;var s=0,o=0,l=0,u=0,f=0;return u=+b[n>>3],o=+GA(+u),l=+b[n+8>>3]-+b[t+8>>3],f=o*+RA(+l),s=+b[t>>3],+ +De(+f,+(+RA(+u)*+GA(+s)-+GA(+l)*(o*+RA(+s))))}function Gf(t,n,s,o){t=t|0,n=+n,s=+s,o=o|0;var l=0,u=0,f=0,d=0;if(s<1e-16){r[o>>2]=r[t>>2],r[o+4>>2]=r[t+4>>2],r[o+8>>2]=r[t+8>>2],r[o+12>>2]=r[t+12>>2];return}u=n<0?n+6.283185307179586:n,u=n>=6.283185307179586?u+-6.283185307179586:u;do if(u<1e-16)n=+b[t>>3]+s,b[o>>3]=n,l=o;else{if(l=+NA(+(u+-3.141592653589793))<1e-16,n=+b[t>>3],l){n=n-s,b[o>>3]=n,l=o;break}if(f=+GA(+s),s=+RA(+s),n=f*+RA(+n)+ +GA(+u)*(s*+GA(+n)),n=n>1?1:n,n=+Nc(+(n<-1?-1:n)),b[o>>3]=n,+NA(+(n+-1.5707963267948966))<1e-16){b[o>>3]=1.5707963267948966,b[o+8>>3]=0;return}if(+NA(+(n+1.5707963267948966))<1e-16){b[o>>3]=-1.5707963267948966,b[o+8>>3]=0;return}if(d=1/+GA(+n),u=s*+RA(+u)*d,s=+b[t>>3],n=d*((f-+RA(+n)*+RA(+s))/+GA(+s)),f=u>1?1:u,n=n>1?1:n,n=+b[t+8>>3]+ +De(+(f<-1?-1:f),+(n<-1?-1:n)),n>3.141592653589793)do n=n+-6.283185307179586;while(n>3.141592653589793);if(n<-3.141592653589793)do n=n+6.283185307179586;while(n<-3.141592653589793);b[o+8>>3]=n;return}while(!1);if(+NA(+(n+-1.5707963267948966))<1e-16){b[l>>3]=1.5707963267948966,b[o+8>>3]=0;return}if(+NA(+(n+1.5707963267948966))<1e-16){b[l>>3]=-1.5707963267948966,b[o+8>>3]=0;return}if(n=+b[t+8>>3],n>3.141592653589793)do n=n+-6.283185307179586;while(n>3.141592653589793);if(n<-3.141592653589793)do n=n+6.283185307179586;while(n<-3.141592653589793);b[o+8>>3]=n}function Cs(t,n){return t=t|0,n=n|0,t>>>0>15?(n=4,n|0):(b[n>>3]=+b[20656+(t<<3)>>3],n=0,n|0)}function qf(t,n){return t=t|0,n=n|0,t>>>0>15?(n=4,n|0):(b[n>>3]=+b[20784+(t<<3)>>3],n=0,n|0)}function Hf(t,n){return t=t|0,n=n|0,t>>>0>15?(n=4,n|0):(b[n>>3]=+b[20912+(t<<3)>>3],n=0,n|0)}function jf(t,n){return t=t|0,n=n|0,t>>>0>15?(n=4,n|0):(b[n>>3]=+b[21040+(t<<3)>>3],n=0,n|0)}function kr(t,n){t=t|0,n=n|0;var s=0;return t>>>0>15?(n=4,n|0):(s=ut(7,0,t,((t|0)<0)<<31>>31)|0,s=le(s|0,S()|0,120,0)|0,t=S()|0,r[n>>2]=s|2,r[n+4>>2]=t,n=0,n|0)}function Ss(t,n,s){t=t|0,n=n|0,s=s|0;var o=0,l=0,u=0,f=0,d=0,p=0,w=0,T=0,M=0,I=0;return I=+b[n>>3],T=+b[t>>3],p=+RA(+((I-T)*.5)),u=+b[n+8>>3],w=+b[t+8>>3],f=+RA(+((u-w)*.5)),d=+GA(+T),M=+GA(+I),f=p*p+f*(M*d*f),f=+De(+ +FA(+f),+ +FA(+(1-f)))*2,p=+b[s>>3],I=+RA(+((p-I)*.5)),o=+b[s+8>>3],u=+RA(+((o-u)*.5)),l=+GA(+p),u=I*I+u*(M*l*u),u=+De(+ +FA(+u),+ +FA(+(1-u)))*2,p=+RA(+((T-p)*.5)),o=+RA(+((w-o)*.5)),o=p*p+o*(d*l*o),o=+De(+ +FA(+o),+ +FA(+(1-o)))*2,l=(f+u+o)*.5,+(+qn(+ +FA(+(+Re(+(l*.5))*+Re(+((l-f)*.5))*+Re(+((l-u)*.5))*+Re(+((l-o)*.5)))))*4)}function f0(t,n,s){t=t|0,n=n|0,s=s|0;var o=0,l=0,u=0,f=0,d=0;if(d=E,E=E+192|0,u=d+168|0,f=d,l=bt(t,n,u)|0,l|0)return s=l,E=d,s|0;if(Qt(t,n,f)|0&&bA(27795,27190,415,27199),n=r[f>>2]|0,(n|0)>0){if(o=+Ss(f+8|0,f+8+(((n|0)!=1&1)<<4)|0,u)+0,(n|0)!=1){t=1;do l=t,t=t+1|0,o=o+ +Ss(f+8+(l<<4)|0,f+8+(((t|0)%(n|0)|0)<<4)|0,u);while((t|0)<(n|0))}}else o=0;return b[s>>3]=o,s=0,E=d,s|0}function Wf(t,n,s){return t=t|0,n=n|0,s=s|0,t=f0(t,n,s)|0,t|0||(b[s>>3]=+b[s>>3]*6371.007180918475*6371.007180918475),t|0}function Yf(t,n,s){return t=t|0,n=n|0,s=s|0,t=f0(t,n,s)|0,t|0||(b[s>>3]=+b[s>>3]*6371.007180918475*6371.007180918475*1e3*1e3),t|0}function Zf(t,n,s){t=t|0,n=n|0,s=s|0;var o=0,l=0,u=0,f=0,d=0,p=0,w=0,T=0;if(d=E,E=E+176|0,f=d,t=Or(t,n,f)|0,t|0)return f=t,E=d,f|0;if(b[s>>3]=0,t=r[f>>2]|0,(t|0)<=1)return f=0,E=d,f|0;n=t+-1|0,t=0,o=+b[f+8>>3],l=+b[f+16>>3],u=0;do t=t+1|0,w=o,o=+b[f+8+(t<<4)>>3],T=+RA(+((o-w)*.5)),p=l,l=+b[f+8+(t<<4)+8>>3],p=+RA(+((l-p)*.5)),p=T*T+p*(+GA(+o)*+GA(+w)*p),u=u+ +De(+ +FA(+p),+ +FA(+(1-p)))*2;while((t|0)<(n|0));return b[s>>3]=u,f=0,E=d,f|0}function Xf(t,n,s){t=t|0,n=n|0,s=s|0;var o=0,l=0,u=0,f=0,d=0,p=0,w=0,T=0;if(d=E,E=E+176|0,f=d,t=Or(t,n,f)|0,t|0)return f=t,u=+b[s>>3],u=u*6371.007180918475,b[s>>3]=u,E=d,f|0;if(b[s>>3]=0,t=r[f>>2]|0,(t|0)<=1)return f=0,u=0,u=u*6371.007180918475,b[s>>3]=u,E=d,f|0;n=t+-1|0,t=0,o=+b[f+8>>3],l=+b[f+16>>3],u=0;do t=t+1|0,w=o,o=+b[f+8+(t<<4)>>3],T=+RA(+((o-w)*.5)),p=l,l=+b[f+8+(t<<4)+8>>3],p=+RA(+((l-p)*.5)),p=T*T+p*(+GA(+w)*+GA(+o)*p),u=u+ +De(+ +FA(+p),+ +FA(+(1-p)))*2;while((t|0)!=(n|0));return b[s>>3]=u,f=0,T=u,T=T*6371.007180918475,b[s>>3]=T,E=d,f|0}function Jf(t,n,s){t=t|0,n=n|0,s=s|0;var o=0,l=0,u=0,f=0,d=0,p=0,w=0,T=0;if(d=E,E=E+176|0,f=d,t=Or(t,n,f)|0,t|0)return f=t,u=+b[s>>3],u=u*6371.007180918475,u=u*1e3,b[s>>3]=u,E=d,f|0;if(b[s>>3]=0,t=r[f>>2]|0,(t|0)<=1)return f=0,u=0,u=u*6371.007180918475,u=u*1e3,b[s>>3]=u,E=d,f|0;n=t+-1|0,t=0,o=+b[f+8>>3],l=+b[f+16>>3],u=0;do t=t+1|0,w=o,o=+b[f+8+(t<<4)>>3],T=+RA(+((o-w)*.5)),p=l,l=+b[f+8+(t<<4)+8>>3],p=+RA(+((l-p)*.5)),p=T*T+p*(+GA(+w)*+GA(+o)*p),u=u+ +De(+ +FA(+p),+ +FA(+(1-p)))*2;while((t|0)!=(n|0));return b[s>>3]=u,f=0,T=u,T=T*6371.007180918475,T=T*1e3,b[s>>3]=T,E=d,f|0}function Kf(t){t=t|0;var n=0,s=0,o=0;return n=Me(1,12)|0,n||bA(27280,27235,49,27293),s=t+4|0,o=r[s>>2]|0,o|0?(o=o+8|0,r[o>>2]=n,r[s>>2]=n,n|0):(r[t>>2]|0&&bA(27310,27235,61,27333),o=t,r[o>>2]=n,r[s>>2]=n,n|0)}function $f(t,n){t=t|0,n=n|0;var s=0,o=0;return o=Ye(24)|0,o||bA(27347,27235,78,27361),r[o>>2]=r[n>>2],r[o+4>>2]=r[n+4>>2],r[o+8>>2]=r[n+8>>2],r[o+12>>2]=r[n+12>>2],r[o+16>>2]=0,n=t+4|0,s=r[n>>2]|0,s|0?(r[s+16>>2]=o,r[n>>2]=o,o|0):(r[t>>2]|0&&bA(27376,27235,82,27361),r[t>>2]=o,r[n>>2]=o,o|0)}function Is(t){t=t|0;var n=0,s=0,o=0,l=0;if(t)for(o=1;;){if(n=r[t>>2]|0,n|0)do{if(s=r[n>>2]|0,s|0)do l=s,s=r[s+16>>2]|0,TA(l);while((s|0)!=0);l=n,n=r[n+8>>2]|0,TA(l)}while((n|0)!=0);if(n=t,t=r[t+8>>2]|0,o||TA(n),t)o=0;else break}}function Ah(t){t=t|0;var n=0,s=0,o=0,l=0,u=0,f=0,d=0,p=0,w=0,T=0,M=0,I=0,B=0,L=0,D=0,F=0,q=0,V=0,Q=0,O=0,sA=0,gA=0,fA=0,SA=0,BA=0,DA=0,_A=0,pA=0,iA=0,xA=0,YA=0,PA=0;if(l=t+8|0,r[l>>2]|0)return PA=1,PA|0;if(o=r[t>>2]|0,!o)return PA=0,PA|0;n=o,s=0;do s=s+1|0,n=r[n+8>>2]|0;while((n|0)!=0);if(s>>>0<2)return PA=0,PA|0;xA=Ye(s<<2)|0,xA||bA(27396,27235,317,27415),iA=Ye(s<<5)|0,iA||bA(27437,27235,321,27415),r[t>>2]=0,gA=t+4|0,r[gA>>2]=0,r[l>>2]=0,s=0,pA=0,sA=0,M=0;A:for(;;){if(T=r[o>>2]|0,T){u=0,f=T;do{if(p=+b[f+8>>3],n=f,f=r[f+16>>2]|0,w=(f|0)==0,l=w?T:f,d=+b[l+8>>3],+NA(+(p-d))>3.141592653589793){PA=14;break}u=u+(d-p)*(+b[n>>3]+ +b[l>>3])}while(!w);if((PA|0)==14){PA=0,u=0,n=T;do O=+b[n+8>>3],_A=n+16|0,DA=r[_A>>2]|0,DA=(DA|0)==0?T:DA,Q=+b[DA+8>>3],u=u+(+b[n>>3]+ +b[DA>>3])*((Q<0?Q+6.283185307179586:Q)-(O<0?O+6.283185307179586:O)),n=r[((n|0)==0?o:_A)>>2]|0;while((n|0)!=0)}u>0?(r[xA+(pA<<2)>>2]=o,pA=pA+1|0,l=sA,n=M):PA=19}else PA=19;if((PA|0)==19){PA=0;do if(s){if(n=s+8|0,r[n>>2]|0){PA=21;break A}if(s=Me(1,12)|0,!s){PA=23;break A}r[n>>2]=s,l=s+4|0,f=s,n=M}else if(M){l=gA,f=M+8|0,n=o,s=t;break}else if(r[t>>2]|0){PA=27;break A}else{l=gA,f=t,n=o,s=t;break}while(!1);if(r[f>>2]=o,r[l>>2]=o,f=iA+(sA<<5)|0,w=r[o>>2]|0,w){for(T=iA+(sA<<5)+8|0,b[T>>3]=17976931348623157e292,M=iA+(sA<<5)+24|0,b[M>>3]=17976931348623157e292,b[f>>3]=-17976931348623157e292,I=iA+(sA<<5)+16|0,b[I>>3]=-17976931348623157e292,q=17976931348623157e292,V=-17976931348623157e292,l=0,B=w,p=17976931348623157e292,D=17976931348623157e292,F=-17976931348623157e292,d=-17976931348623157e292;u=+b[B>>3],O=+b[B+8>>3],B=r[B+16>>2]|0,L=(B|0)==0,Q=+b[(L?w:B)+8>>3],u<p&&(b[T>>3]=u,p=u),O<D&&(b[M>>3]=O,D=O),u>F?b[f>>3]=u:u=F,O>d&&(b[I>>3]=O,d=O),q=O>0&O<q?O:q,V=O<0&O>V?O:V,l=l|+NA(+(O-Q))>3.141592653589793,!L;)F=u;l&&(b[I>>3]=V,b[M>>3]=q)}else r[f>>2]=0,r[f+4>>2]=0,r[f+8>>2]=0,r[f+12>>2]=0,r[f+16>>2]=0,r[f+20>>2]=0,r[f+24>>2]=0,r[f+28>>2]=0;l=sA+1|0}if(_A=o+8|0,o=r[_A>>2]|0,r[_A>>2]=0,o)sA=l,M=n;else{PA=45;break}}if((PA|0)==21)bA(27213,27235,35,27247);else if((PA|0)==23)bA(27267,27235,37,27247);else if((PA|0)==27)bA(27310,27235,61,27333);else if((PA|0)==45){A:do if((pA|0)>0){for(_A=(l|0)==0,BA=l<<2,DA=(t|0)==0,SA=0,n=0;;){if(fA=r[xA+(SA<<2)>>2]|0,_A)PA=73;else{if(sA=Ye(BA)|0,!sA){PA=50;break}if(gA=Ye(BA)|0,!gA){PA=52;break}e:do if(DA)s=0;else{for(l=0,s=0,f=t;o=iA+(l<<5)|0,Bs(r[f>>2]|0,o,r[fA>>2]|0)|0?(r[sA+(s<<2)>>2]=f,r[gA+(s<<2)>>2]=o,L=s+1|0):L=s,f=r[f+8>>2]|0,f;)l=l+1|0,s=L;if((L|0)>0)if(o=r[sA>>2]|0,(L|0)==1)s=o;else for(I=0,B=-1,s=o,M=o;;){for(w=r[M>>2]|0,o=0,f=0;l=r[r[sA+(f<<2)>>2]>>2]|0,(l|0)==(w|0)?T=o:T=o+((Bs(l,r[gA+(f<<2)>>2]|0,r[w>>2]|0)|0)&1)|0,f=f+1|0,(f|0)!=(L|0);)o=T;if(l=(T|0)>(B|0),s=l?M:s,o=I+1|0,(o|0)==(L|0))break e;I=o,B=l?T:B,M=r[sA+(o<<2)>>2]|0}else s=0}while(!1);if(TA(sA),TA(gA),s){if(l=s+4|0,o=r[l>>2]|0,o)s=o+8|0;else if(r[s>>2]|0){PA=70;break}r[s>>2]=fA,r[l>>2]=fA}else PA=73}if((PA|0)==73){if(PA=0,n=r[fA>>2]|0,n|0)do gA=n,n=r[n+16>>2]|0,TA(gA);while((n|0)!=0);TA(fA),n=1}if(SA=SA+1|0,(SA|0)>=(pA|0)){YA=n;break A}}(PA|0)==50?bA(27452,27235,249,27471):(PA|0)==52?bA(27490,27235,252,27471):(PA|0)==70&&bA(27310,27235,61,27333)}else YA=0;while(!1);return TA(xA),TA(iA),PA=YA,PA|0}return 0}function Bs(t,n,s){t=t|0,n=n|0,s=s|0;var o=0,l=0,u=0,f=0,d=0,p=0,w=0,T=0;if(!(Xn(n,s)|0)||(n=as(n)|0,o=+b[s>>3],l=+b[s+8>>3],l=n&l<0?l+6.283185307179586:l,t=r[t>>2]|0,!t))return t=0,t|0;if(n){n=0,w=l,s=t;A:for(;;){for(;f=+b[s>>3],l=+b[s+8>>3],s=s+16|0,T=r[s>>2]|0,T=(T|0)==0?t:T,u=+b[T>>3],d=+b[T+8>>3],f>u?(p=f,f=d):(p=u,u=f,f=l,l=d),o=o==u|o==p?o+2220446049250313e-31:o,!!(o<u|o>p);)if(s=r[s>>2]|0,!s){s=22;break A}if(d=f<0?f+6.283185307179586:f,f=l<0?l+6.283185307179586:l,w=d==w|f==w?w+-2220446049250313e-31:w,p=d+(f-d)*((o-u)/(p-u)),(p<0?p+6.283185307179586:p)>w&&(n=n^1),s=r[s>>2]|0,!s){s=22;break}}if((s|0)==22)return n|0}else{n=0,w=l,s=t;A:for(;;){for(;f=+b[s>>3],l=+b[s+8>>3],s=s+16|0,T=r[s>>2]|0,T=(T|0)==0?t:T,u=+b[T>>3],d=+b[T+8>>3],f>u?(p=f,f=d):(p=u,u=f,f=l,l=d),o=o==u|o==p?o+2220446049250313e-31:o,!!(o<u|o>p);)if(s=r[s>>2]|0,!s){s=22;break A}if(w=f==w|l==w?w+-2220446049250313e-31:w,f+(l-f)*((o-u)/(p-u))>w&&(n=n^1),s=r[s>>2]|0,!s){s=22;break}}if((s|0)==22)return n|0}return 0}function tt(t,n,s,o,l){t=t|0,n=n|0,s=s|0,o=o|0,l=l|0;var u=0,f=0,d=0,p=0,w=0,T=0,M=0,I=0,B=0,L=0,D=0,F=0,q=0,V=0;if(V=E,E=E+32|0,q=V+16|0,F=V,u=AA(t|0,n|0,52)|0,S()|0,u=u&15,B=AA(s|0,o|0,52)|0,S()|0,(u|0)!=(B&15|0))return q=12,E=V,q|0;if(w=AA(t|0,n|0,45)|0,S()|0,w=w&127,T=AA(s|0,o|0,45)|0,S()|0,T=T&127,w>>>0>121|T>>>0>121)return q=5,E=V,q|0;if(B=(w|0)!=(T|0),B){if(d=Zn(w,T)|0,(d|0)==7)return q=1,E=V,q|0;p=Zn(T,w)|0,(p|0)==7?bA(27514,27538,161,27548):(L=d,f=p)}else L=0,f=0;M=ee(w)|0,I=ee(T)|0,r[q>>2]=0,r[q+4>>2]=0,r[q+8>>2]=0,r[q+12>>2]=0;do if(L){if(T=r[4272+(w*28|0)+(L<<2)>>2]|0,d=(T|0)>0,I)if(d){w=0,p=s,d=o;do p=Rf(p,d)|0,d=S()|0,f=lt(f)|0,(f|0)==1&&(f=lt(1)|0),w=w+1|0;while((w|0)!=(T|0));T=f,w=p,p=d}else T=f,w=s,p=o;else if(d){w=0,p=s,d=o;do p=s0(p,d)|0,d=S()|0,f=lt(f)|0,w=w+1|0;while((w|0)!=(T|0));T=f,w=p,p=d}else T=f,w=s,p=o;if(a0(w,p,q)|0,B||bA(27563,27538,191,27548),d=(M|0)!=0,f=(I|0)!=0,d&f&&bA(27590,27538,192,27548),d){if(f=Ee(t,n)|0,(f|0)==7){u=5;break}if(eA[22e3+(f*7|0)+L>>0]|0){u=1;break}p=r[21168+(f*28|0)+(L<<2)>>2]|0,w=p}else if(f){if(f=Ee(w,p)|0,(f|0)==7){u=5;break}if(eA[22e3+(f*7|0)+T>>0]|0){u=1;break}w=0,p=r[21168+(T*28|0)+(f<<2)>>2]|0}else w=0,p=0;if((w|p|0)<0)u=5;else{if((p|0)>0){d=q+4|0,f=0;do Dr(d),f=f+1|0;while((f|0)!=(p|0))}if(r[F>>2]=0,r[F+4>>2]=0,r[F+8>>2]=0,ds(F,L),u|0)for(;Oe(u)|0?Rr(F):Tt(F),(u|0)>1;)u=u+-1|0;if((w|0)>0){u=0;do Dr(F),u=u+1|0;while((u|0)!=(w|0))}D=q+4|0,Te(D,F,D),pe(D),D=51}}else if(a0(s,o,q)|0,(M|0)!=0&(I|0)!=0)if((T|0)!=(w|0)&&bA(27621,27538,261,27548),f=Ee(t,n)|0,u=Ee(s,o)|0,(f|0)==7|(u|0)==7)u=5;else if(eA[22e3+(f*7|0)+u>>0]|0)u=1;else if(f=r[21168+(f*28|0)+(u<<2)>>2]|0,(f|0)>0){d=q+4|0,u=0;do Dr(d),u=u+1|0;while((u|0)!=(f|0));D=51}else D=51;else D=51;while(!1);return(D|0)==51&&(u=q+4|0,r[l>>2]=r[u>>2],r[l+4>>2]=r[u+4>>2],r[l+8>>2]=r[u+8>>2],u=0),q=u,E=V,q|0}function Ls(t,n,s,o){t=t|0,n=n|0,s=s|0,o=o|0;var l=0,u=0,f=0,d=0,p=0,w=0,T=0,M=0,I=0,B=0,L=0,D=0,F=0,q=0,V=0,Q=0;if(D=E,E=E+48|0,w=D+36|0,f=D+24|0,d=D+12|0,p=D,l=AA(t|0,n|0,52)|0,S()|0,l=l&15,I=AA(t|0,n|0,45)|0,S()|0,I=I&127,I>>>0>121)return o=5,E=D,o|0;if(T=ee(I)|0,oA(l|0,0,52)|0,F=S()|0|134225919,u=o,r[u>>2]=-1,r[u+4>>2]=F,!l)return l=Nr(s)|0,(l|0)==7||(l=Yn(I,l)|0,(l|0)==127)?(F=1,E=D,F|0):(B=oA(l|0,0,45)|0,L=S()|0,I=o,L=r[I+4>>2]&-1040385|L,F=o,r[F>>2]=r[I>>2]|B,r[F+4>>2]=L,F=0,E=D,F|0);for(r[w>>2]=r[s>>2],r[w+4>>2]=r[s+4>>2],r[w+8>>2]=r[s+8>>2],s=l;;){if(u=s,s=s+-1|0,r[f>>2]=r[w>>2],r[f+4>>2]=r[w+4>>2],r[f+8>>2]=r[w+8>>2],Oe(u)|0){if(l=uf(w)|0,l|0){s=13;break}r[d>>2]=r[w>>2],r[d+4>>2]=r[w+4>>2],r[d+8>>2]=r[w+8>>2],Rr(d)}else{if(l=cf(w)|0,l|0){s=13;break}r[d>>2]=r[w>>2],r[d+4>>2]=r[w+4>>2],r[d+8>>2]=r[w+8>>2],Tt(d)}if(Kn(f,d,p),pe(p),l=o,V=r[l>>2]|0,l=r[l+4>>2]|0,Q=(15-u|0)*3|0,q=oA(7,0,Q|0)|0,l=l&~(S()|0),Q=oA(Nr(p)|0,0,Q|0)|0,l=S()|0|l,F=o,r[F>>2]=Q|V&~q,r[F+4>>2]=l,(u|0)<=1){s=14;break}}A:do if((s|0)!=13&&(s|0)==14)if((r[w>>2]|0)<=1&&(r[w+4>>2]|0)<=1&&(r[w+8>>2]|0)<=1){s=Nr(w)|0,l=Yn(I,s)|0,(l|0)==127?p=0:p=ee(l)|0;e:do if(s){if(T){if(l=Ee(t,n)|0,(l|0)==7){l=5;break A}if(u=r[21376+(l*28|0)+(s<<2)>>2]|0,(u|0)>0){l=s,s=0;do l=vt(l)|0,s=s+1|0;while((s|0)!=(u|0))}else l=s;if((l|0)==1){l=9;break A}s=Yn(I,l)|0,(s|0)==127&&bA(27648,27538,411,27678),ee(s)|0?bA(27693,27538,412,27678):(L=s,B=u,M=l)}else L=l,B=0,M=s;if(d=r[4272+(I*28|0)+(M<<2)>>2]|0,(d|0)<=-1&&bA(27724,27538,419,27678),!p){if((B|0)<0){l=5;break A}if(B|0){u=o,l=0,s=r[u>>2]|0,u=r[u+4>>2]|0;do s=_t(s,u)|0,u=S()|0,Q=o,r[Q>>2]=s,r[Q+4>>2]=u,l=l+1|0;while((l|0)<(B|0))}if((d|0)<=0){l=L,s=58;break}for(u=o,l=0,s=r[u>>2]|0,u=r[u+4>>2]|0;;)if(s=_t(s,u)|0,u=S()|0,Q=o,r[Q>>2]=s,r[Q+4>>2]=u,l=l+1|0,(l|0)==(d|0)){l=L,s=58;break e}}if(f=Zn(L,I)|0,(f|0)==7&&bA(27514,27538,428,27678),l=o,s=r[l>>2]|0,l=r[l+4>>2]|0,(d|0)>0){u=0;do s=_t(s,l)|0,l=S()|0,Q=o,r[Q>>2]=s,r[Q+4>>2]=l,u=u+1|0;while((u|0)!=(d|0))}if(l=Ee(s,l)|0,(l|0)==7&&bA(27795,27538,440,27678),s=Wn(L)|0,s=r[(s?21792:21584)+(f*28|0)+(l<<2)>>2]|0,(s|0)<0&&bA(27795,27538,454,27678),!s)l=L,s=58;else{f=o,l=0,u=r[f>>2]|0,f=r[f+4>>2]|0;do u=i0(u,f)|0,f=S()|0,Q=o,r[Q>>2]=u,r[Q+4>>2]=f,l=l+1|0;while((l|0)<(s|0));l=L,s=58}}else if((T|0)!=0&(p|0)!=0){if(s=Ee(t,n)|0,u=o,u=Ee(r[u>>2]|0,r[u+4>>2]|0)|0,(s|0)==7|(u|0)==7){l=5;break A}if(u=r[21376+(s*28|0)+(u<<2)>>2]|0,(u|0)<0){l=5;break A}if(!u)s=59;else{d=o,s=0,f=r[d>>2]|0,d=r[d+4>>2]|0;do f=_t(f,d)|0,d=S()|0,Q=o,r[Q>>2]=f,r[Q+4>>2]=d,s=s+1|0;while((s|0)<(u|0));s=58}}else s=58;while(!1);if((s|0)==58&&p&&(s=59),(s|0)==59&&(Q=o,(Ee(r[Q>>2]|0,r[Q+4>>2]|0)|0)==1)){l=9;break}Q=o,q=r[Q>>2]|0,Q=r[Q+4>>2]&-1040385,V=oA(l|0,0,45)|0,Q=Q|(S()|0),l=o,r[l>>2]=q|V,r[l+4>>2]=Q,l=0}else l=1;while(!1);return Q=l,E=D,Q|0}function eh(t,n,s,o,l,u){t=t|0,n=n|0,s=s|0,o=o|0,l=l|0,u=u|0;var f=0,d=0;return d=E,E=E+16|0,f=d,l?t=15:(t=tt(t,n,s,o,f)|0,t||(hf(f,u),t=0)),E=d,t|0}function th(t,n,s,o,l){t=t|0,n=n|0,s=s|0,o=o|0,l=l|0;var u=0,f=0;return f=E,E=E+16|0,u=f,o?s=15:(s=df(s,u)|0,s||(s=Ls(t,n,u,l)|0)),E=f,s|0}function rh(t,n,s,o,l){t=t|0,n=n|0,s=s|0,o=o|0,l=l|0;var u=0,f=0,d=0,p=0;return p=E,E=E+32|0,f=p+12|0,d=p,u=tt(t,n,t,n,f)|0,u|0?(d=u,E=p,d|0):(t=tt(t,n,s,o,d)|0,t|0?(d=t,E=p,d|0):(f=$n(f,d)|0,d=l,r[d>>2]=f,r[d+4>>2]=((f|0)<0)<<31>>31,d=0,E=p,d|0))}function nh(t,n,s,o,l){t=t|0,n=n|0,s=s|0,o=o|0,l=l|0;var u=0,f=0,d=0,p=0;return p=E,E=E+32|0,f=p+12|0,d=p,u=tt(t,n,t,n,f)|0,!u&&(u=tt(t,n,s,o,d)|0,!u)?(o=$n(f,d)|0,o=wA(o|0,((o|0)<0)<<31>>31|0,1,0)|0,f=S()|0,d=l,r[d>>2]=o,r[d+4>>2]=f,d=0,E=p,d|0):(d=u,E=p,d|0)}function ih(t,n,s,o,l){t=t|0,n=n|0,s=s|0,o=o|0,l=l|0;var u=0,f=0,d=0,p=0,w=0,T=0,M=0,I=0,B=0,L=0,D=0,F=0,q=0,V=0,Q=0,O=0,sA=0,gA=0,fA=0,SA=0;if(fA=E,E=E+48|0,sA=fA+24|0,f=fA+12|0,gA=fA,u=tt(t,n,t,n,sA)|0,!u&&(u=tt(t,n,s,o,f)|0,!u)){Q=$n(sA,f)|0,O=((Q|0)<0)<<31>>31,r[sA>>2]=0,r[sA+4>>2]=0,r[sA+8>>2]=0,r[f>>2]=0,r[f+4>>2]=0,r[f+8>>2]=0,tt(t,n,t,n,sA)|0&&bA(27795,27538,692,27747),tt(t,n,s,o,f)|0&&bA(27795,27538,697,27747),ws(sA),ws(f),T=(Q|0)==0?0:1/+(Q|0),s=r[sA>>2]|0,D=T*+((r[f>>2]|0)-s|0),F=sA+4|0,o=r[F>>2]|0,q=T*+((r[f+4>>2]|0)-o|0),V=sA+8|0,u=r[V>>2]|0,T=T*+((r[f+8>>2]|0)-u|0),r[gA>>2]=s,M=gA+4|0,r[M>>2]=o,I=gA+8|0,r[I>>2]=u;A:do if((Q|0)<0)u=0;else for(B=0,L=0;;){p=+(L>>>0)+4294967296*+(B|0),SA=D*p+ +(s|0),d=q*p+ +(o|0),p=T*p+ +(u|0),s=~~+Vr(+SA),f=~~+Vr(+d),u=~~+Vr(+p),SA=+NA(+(+(s|0)-SA)),d=+NA(+(+(f|0)-d)),p=+NA(+(+(u|0)-p));do if(SA>d&SA>p)s=0-(f+u)|0,o=f;else if(w=0-s|0,d>p){o=w-u|0;break}else{o=f,u=w-f|0;break}while(!1);if(r[gA>>2]=s,r[M>>2]=o,r[I>>2]=u,gf(gA),u=Ls(t,n,gA,l+(L<<3)|0)|0,u|0)break A;if(!((B|0)<(O|0)|(B|0)==(O|0)&L>>>0<Q>>>0)){u=0;break A}s=wA(L|0,B|0,1,0)|0,o=S()|0,B=o,L=s,s=r[sA>>2]|0,o=r[F>>2]|0,u=r[V>>2]|0}while(!1);return gA=u,E=fA,gA|0}return gA=u,E=fA,gA|0}function ut(t,n,s,o){t=t|0,n=n|0,s=s|0,o=o|0;var l=0,u=0,f=0;if((s|0)==0&(o|0)==0)return l=0,u=1,IA(l|0),u|0;u=t,l=n,t=1,n=0;do f=(s&1|0)==0&!0,t=le((f?1:u)|0,(f?0:l)|0,t|0,n|0)|0,n=S()|0,s=zs(s|0,o|0,1)|0,o=S()|0,u=le(u|0,l|0,u|0,l|0)|0,l=S()|0;while(!((s|0)==0&(o|0)==0));return IA(n|0),t|0}function h0(t,n,s,o){t=t|0,n=n|0,s=s|0,o=o|0;var l=0,u=0,f=0,d=0,p=0,w=0,T=0;d=E,E=E+16|0,u=d,f=AA(t|0,n|0,52)|0,S()|0,f=f&15;do if(f){if(l=bt(t,n,u)|0,!l){w=+b[u>>3],p=1/+GA(+w),T=+b[25968+(f<<3)>>3],b[s>>3]=w+T,b[s+8>>3]=w-T,w=+b[u+8>>3],p=T*p,b[s+16>>3]=p+w,b[s+24>>3]=w-p;break}return f=l,E=d,f|0}else{if(l=AA(t|0,n|0,45)|0,S()|0,l=l&127,l>>>0>121)return f=5,E=d,f|0;u=22064+(l<<5)|0,r[s>>2]=r[u>>2],r[s+4>>2]=r[u+4>>2],r[s+8>>2]=r[u+8>>2],r[s+12>>2]=r[u+12>>2],r[s+16>>2]=r[u+16>>2],r[s+20>>2]=r[u+20>>2],r[s+24>>2]=r[u+24>>2],r[s+28>>2]=r[u+28>>2];break}while(!1);return of(s,o?1.4:1.1),o=26096+(f<<3)|0,(r[o>>2]|0)==(t|0)&&(r[o+4>>2]|0)==(n|0)&&(b[s>>3]=1.5707963267948966),f=26224+(f<<3)|0,(r[f>>2]|0)==(t|0)&&(r[f+4>>2]|0)==(n|0)&&(b[s+8>>3]=-1.5707963267948966),+b[s>>3]!=1.5707963267948966&&+b[s+8>>3]!=-1.5707963267948966?(f=0,E=d,f|0):(b[s+16>>3]=3.141592653589793,b[s+24>>3]=-3.141592653589793,f=0,E=d,f|0)}function sh(t,n,s,o){t=t|0,n=n|0,s=s|0,o=o|0;var l=0,u=0,f=0,d=0,p=0,w=0,T=0;w=E,E=E+48|0,f=w+32|0,u=w+40|0,d=w,r0(f,0,0,0),p=r[f>>2]|0,f=r[f+4>>2]|0;do if(s>>>0<=15){if(l=pr(o)|0,l|0){o=d,r[o>>2]=0,r[o+4>>2]=0,r[d+8>>2]=l,r[d+12>>2]=-1,o=d+16|0,p=d+29|0,r[o>>2]=0,r[o+4>>2]=0,r[o+8>>2]=0,eA[o+12>>0]=0,eA[p>>0]=eA[u>>0]|0,eA[p+1>>0]=eA[u+1>>0]|0,eA[p+2>>0]=eA[u+2>>0]|0;break}if(l=Me((r[n+8>>2]|0)+1|0,32)|0,l){d0(n,l),T=d,r[T>>2]=p,r[T+4>>2]=f,r[d+8>>2]=0,r[d+12>>2]=s,r[d+16>>2]=o,r[d+20>>2]=n,r[d+24>>2]=l,eA[d+28>>0]=0,p=d+29|0,eA[p>>0]=eA[u>>0]|0,eA[p+1>>0]=eA[u+1>>0]|0,eA[p+2>>0]=eA[u+2>>0]|0;break}else{o=d,r[o>>2]=0,r[o+4>>2]=0,r[d+8>>2]=13,r[d+12>>2]=-1,o=d+16|0,p=d+29|0,r[o>>2]=0,r[o+4>>2]=0,r[o+8>>2]=0,eA[o+12>>0]=0,eA[p>>0]=eA[u>>0]|0,eA[p+1>>0]=eA[u+1>>0]|0,eA[p+2>>0]=eA[u+2>>0]|0;break}}else p=d,r[p>>2]=0,r[p+4>>2]=0,r[d+8>>2]=4,r[d+12>>2]=-1,p=d+16|0,T=d+29|0,r[p>>2]=0,r[p+4>>2]=0,r[p+8>>2]=0,eA[p+12>>0]=0,eA[T>>0]=eA[u>>0]|0,eA[T+1>>0]=eA[u+1>>0]|0,eA[T+2>>0]=eA[u+2>>0]|0;while(!1);Fr(d),r[t>>2]=r[d>>2],r[t+4>>2]=r[d+4>>2],r[t+8>>2]=r[d+8>>2],r[t+12>>2]=r[d+12>>2],r[t+16>>2]=r[d+16>>2],r[t+20>>2]=r[d+20>>2],r[t+24>>2]=r[d+24>>2],r[t+28>>2]=r[d+28>>2],E=w}function Fr(t){t=t|0;var n=0,s=0,o=0,l=0,u=0,f=0,d=0,p=0,w=0,T=0,M=0,I=0,B=0,L=0,D=0,F=0,q=0,V=0,Q=0,O=0;if(O=E,E=E+336|0,B=O+168|0,L=O,o=t,s=r[o>>2]|0,o=r[o+4>>2]|0,(s|0)==0&(o|0)==0){E=O;return}if(n=t+28|0,eA[n>>0]|0?(s=Ps(s,o)|0,o=S()|0):eA[n>>0]=1,Q=t+20|0,!(r[r[Q>>2]>>2]|0)){n=t+24|0,s=r[n>>2]|0,s|0&&TA(s),V=t,r[V>>2]=0,r[V+4>>2]=0,r[t+8>>2]=0,r[Q>>2]=0,r[t+12>>2]=-1,r[t+16>>2]=0,r[n>>2]=0,E=O;return}V=t+16|0,n=r[V>>2]|0,l=n&15;A:do if((s|0)==0&(o|0)==0)q=t+24|0;else{D=t+12|0,M=(l|0)==3,T=n&255,p=(l|1|0)==3,I=t+24|0,w=(l+-1|0)>>>0<3,f=(l|2|0)==3,d=L+8|0;e:for(;;){if(u=AA(s|0,o|0,52)|0,S()|0,u=u&15,(u|0)==(r[D>>2]|0)){switch(T&15){case 0:case 2:case 3:{if(l=bt(s,o,B)|0,l|0){F=15;break e}if(g0(r[Q>>2]|0,r[I>>2]|0,B)|0){F=19;break e}break}}if(p&&(l=r[(r[Q>>2]|0)+4>>2]|0,r[B>>2]=r[l>>2],r[B+4>>2]=r[l+4>>2],r[B+8>>2]=r[l+8>>2],r[B+12>>2]=r[l+12>>2],Xn(26832,B)|0)){if(o0(r[(r[Q>>2]|0)+4>>2]|0,u,L)|0){F=25;break}if(l=L,(r[l>>2]|0)==(s|0)&&(r[l+4>>2]|0)==(o|0)){F=29;break}}if(w){if(l=Qt(s,o,B)|0,l|0){F=32;break}if(h0(s,o,L,0)|0){F=36;break}if(f&&Ns(r[Q>>2]|0,r[I>>2]|0,B,L)|0){F=42;break}if(p&&Rs(r[Q>>2]|0,r[I>>2]|0,B,L)|0){F=42;break}}if(M){if(n=h0(s,o,B,1)|0,l=r[I>>2]|0,n|0){F=45;break}if(Jn(l,B)|0){if(us(L,B),ls(B,r[I>>2]|0)|0){F=53;break}if(g0(r[Q>>2]|0,r[I>>2]|0,d)|0){F=53;break}if(Rs(r[Q>>2]|0,r[I>>2]|0,L,B)|0){F=53;break}}}}do if((u|0)<(r[D>>2]|0)){if(n=h0(s,o,B,1)|0,l=r[I>>2]|0,n|0){F=58;break e}if(!(Jn(l,B)|0)){F=73;break}if(ls(r[I>>2]|0,B)|0&&(us(L,B),Ns(r[Q>>2]|0,r[I>>2]|0,L,B)|0)){F=65;break e}if(s=bs(s,o,u+1|0,L)|0,s|0){F=67;break e}o=L,s=r[o>>2]|0,o=r[o+4>>2]|0}else F=73;while(!1);if((F|0)==73&&(F=0,s=Ps(s,o)|0,o=S()|0),(s|0)==0&(o|0)==0){q=I;break A}}switch(F|0){case 15:{n=r[I>>2]|0,n|0&&TA(n),F=t,r[F>>2]=0,r[F+4>>2]=0,r[Q>>2]=0,r[D>>2]=-1,r[V>>2]=0,r[I>>2]=0,r[t+8>>2]=l,F=20;break}case 19:{r[t>>2]=s,r[t+4>>2]=o,F=20;break}case 25:{bA(27795,27761,470,27772);break}case 29:{r[t>>2]=s,r[t+4>>2]=o,E=O;return}case 32:{n=r[I>>2]|0,n|0&&TA(n),q=t,r[q>>2]=0,r[q+4>>2]=0,r[Q>>2]=0,r[D>>2]=-1,r[V>>2]=0,r[I>>2]=0,r[t+8>>2]=l,E=O;return}case 36:{bA(27795,27761,493,27772);break}case 42:{r[t>>2]=s,r[t+4>>2]=o,E=O;return}case 45:{l|0&&TA(l),F=t,r[F>>2]=0,r[F+4>>2]=0,r[Q>>2]=0,r[D>>2]=-1,r[V>>2]=0,r[I>>2]=0,r[t+8>>2]=n,F=55;break}case 53:{r[t>>2]=s,r[t+4>>2]=o,F=55;break}case 58:{l|0&&TA(l),F=t,r[F>>2]=0,r[F+4>>2]=0,r[Q>>2]=0,r[D>>2]=-1,r[V>>2]=0,r[I>>2]=0,r[t+8>>2]=n,F=71;break}case 65:{r[t>>2]=s,r[t+4>>2]=o,F=71;break}case 67:{n=r[I>>2]|0,n|0&&TA(n),q=t,r[q>>2]=0,r[q+4>>2]=0,r[Q>>2]=0,r[D>>2]=-1,r[V>>2]=0,r[I>>2]=0,r[t+8>>2]=s,E=O;return}}if((F|0)==20){E=O;return}else if((F|0)==55){E=O;return}else if((F|0)==71){E=O;return}}while(!1);n=r[q>>2]|0,n|0&&TA(n),F=t,r[F>>2]=0,r[F+4>>2]=0,r[t+8>>2]=0,r[Q>>2]=0,r[t+12>>2]=-1,r[V>>2]=0,r[q>>2]=0,E=O}function Ps(t,n){t=t|0,n=n|0;var s=0,o=0,l=0,u=0,f=0,d=0,p=0,w=0,T=0,M=0;M=E,E=E+16|0,T=M,o=AA(t|0,n|0,52)|0,S()|0,o=o&15,s=AA(t|0,n|0,45)|0,S()|0;do if(o){for(;s=oA(o+4095|0,0,52)|0,l=S()|0|n&-15728641,u=(15-o|0)*3|0,f=oA(7,0,u|0)|0,d=S()|0,s=s|t|f,l=l|d,p=AA(t|0,n|0,u|0)|0,S()|0,p=p&7,o=o+-1|0,!(p>>>0<6);)if(o)n=l,t=s;else{w=4;break}if((w|0)==4){s=AA(s|0,l|0,45)|0,S()|0;break}return T=(p|0)==0&(JA(s,l)|0)!=0,T=oA((T?2:1)+p|0,0,u|0)|0,w=S()|0|n&~d,T=T|t&~f,IA(w|0),E=M,T|0}while(!1);return s=s&127,s>>>0>120?(w=0,T=0,IA(w|0),E=M,T|0):(r0(T,0,s+1|0,0),w=r[T+4>>2]|0,T=r[T>>2]|0,IA(w|0),E=M,T|0)}function oh(t,n,s,o,l,u){t=t|0,n=n|0,s=s|0,o=o|0,l=l|0,u=u|0;var f=0,d=0,p=0,w=0,T=0,M=0,I=0,B=0,L=0,D=0,F=0;F=E,E=E+160|0,M=F+80|0,d=F+64|0,I=F+112|0,D=F,sh(M,t,n,s),w=M,u0(d,r[w>>2]|0,r[w+4>>2]|0,n),w=d,p=r[w>>2]|0,w=r[w+4>>2]|0,f=r[M+8>>2]|0,B=I+4|0,r[B>>2]=r[M>>2],r[B+4>>2]=r[M+4>>2],r[B+8>>2]=r[M+8>>2],r[B+12>>2]=r[M+12>>2],r[B+16>>2]=r[M+16>>2],r[B+20>>2]=r[M+20>>2],r[B+24>>2]=r[M+24>>2],r[B+28>>2]=r[M+28>>2],B=D,r[B>>2]=p,r[B+4>>2]=w,B=D+8|0,r[B>>2]=f,t=D+12|0,n=I,s=t+36|0;do r[t>>2]=r[n>>2],t=t+4|0,n=n+4|0;while((t|0)<(s|0));if(I=D+48|0,r[I>>2]=r[d>>2],r[I+4>>2]=r[d+4>>2],r[I+8>>2]=r[d+8>>2],r[I+12>>2]=r[d+12>>2],(p|0)==0&(w|0)==0)return D=f,E=F,D|0;s=D+16|0,T=D+24|0,M=D+28|0,f=0,d=0,n=p,t=w;do{if(!((f|0)<(l|0)|(f|0)==(l|0)&d>>>0<o>>>0)){L=4;break}if(w=d,d=wA(d|0,f|0,1,0)|0,f=S()|0,w=u+(w<<3)|0,r[w>>2]=n,r[w+4>>2]=t,c0(I),t=I,n=r[t>>2]|0,t=r[t+4>>2]|0,(n|0)==0&(t|0)==0){if(Fr(s),n=s,t=r[n>>2]|0,n=r[n+4>>2]|0,(t|0)==0&(n|0)==0){L=10;break}Ms(t,n,r[M>>2]|0,I),t=I,n=r[t>>2]|0,t=r[t+4>>2]|0}w=D,r[w>>2]=n,r[w+4>>2]=t}while(!((n|0)==0&(t|0)==0));return(L|0)==4?(t=D+40|0,n=r[t>>2]|0,n|0&&TA(n),L=D+16|0,r[L>>2]=0,r[L+4>>2]=0,r[T>>2]=0,r[D+36>>2]=0,r[M>>2]=-1,r[D+32>>2]=0,r[t>>2]=0,Ms(0,0,0,I),r[D>>2]=0,r[D+4>>2]=0,r[B>>2]=0,D=14,E=F,D|0):((L|0)==10&&(r[D>>2]=0,r[D+4>>2]=0,r[B>>2]=r[T>>2]),D=r[B>>2]|0,E=F,D|0)}function ah(t,n,s,o){t=t|0,n=n|0,s=s|0,o=o|0;var l=0,u=0,f=0,d=0,p=0,w=0,T=0,M=0,I=0,B=0;if(M=E,E=E+48|0,p=M+32|0,d=M+40|0,w=M,!(r[t>>2]|0))return T=o,r[T>>2]=0,r[T+4>>2]=0,T=0,E=M,T|0;r0(p,0,0,0),f=p,l=r[f>>2]|0,f=r[f+4>>2]|0;do if(n>>>0>15)T=w,r[T>>2]=0,r[T+4>>2]=0,r[w+8>>2]=4,r[w+12>>2]=-1,T=w+16|0,s=w+29|0,r[T>>2]=0,r[T+4>>2]=0,r[T+8>>2]=0,eA[T+12>>0]=0,eA[s>>0]=eA[d>>0]|0,eA[s+1>>0]=eA[d+1>>0]|0,eA[s+2>>0]=eA[d+2>>0]|0,s=4,T=9;else{if(s=pr(s)|0,s|0){p=w,r[p>>2]=0,r[p+4>>2]=0,r[w+8>>2]=s,r[w+12>>2]=-1,p=w+16|0,T=w+29|0,r[p>>2]=0,r[p+4>>2]=0,r[p+8>>2]=0,eA[p+12>>0]=0,eA[T>>0]=eA[d>>0]|0,eA[T+1>>0]=eA[d+1>>0]|0,eA[T+2>>0]=eA[d+2>>0]|0,T=9;break}if(s=Me((r[t+8>>2]|0)+1|0,32)|0,!s){T=w,r[T>>2]=0,r[T+4>>2]=0,r[w+8>>2]=13,r[w+12>>2]=-1,T=w+16|0,s=w+29|0,r[T>>2]=0,r[T+4>>2]=0,r[T+8>>2]=0,eA[T+12>>0]=0,eA[s>>0]=eA[d>>0]|0,eA[s+1>>0]=eA[d+1>>0]|0,eA[s+2>>0]=eA[d+2>>0]|0,s=13,T=9;break}d0(t,s),B=w,r[B>>2]=l,r[B+4>>2]=f,f=w+8|0,r[f>>2]=0,r[w+12>>2]=n,r[w+20>>2]=t,r[w+24>>2]=s,eA[w+28>>0]=0,l=w+29|0,eA[l>>0]=eA[d>>0]|0,eA[l+1>>0]=eA[d+1>>0]|0,eA[l+2>>0]=eA[d+2>>0]|0,r[w+16>>2]=3,I=+rf(s),I=I*+tf(s),u=+NA(+ +b[s>>3]),u=I/+GA(+ +Qr(+u,+ +NA(+ +b[s+8>>3])))*6371.007180918475*6371.007180918475,l=w+12|0,s=r[l>>2]|0;A:do if((s|0)>0)do{if(Cs(s+-1|0,p)|0,!(u/+b[p>>3]>10))break A;B=r[l>>2]|0,s=B+-1|0,r[l>>2]=s}while((B|0)>1);while(!1);if(Fr(w),l=o,r[l>>2]=0,r[l+4>>2]=0,l=w,s=r[l>>2]|0,l=r[l+4>>2]|0,!((s|0)==0&(l|0)==0))do fr(s,l,n,p)|0,d=p,t=o,d=wA(r[t>>2]|0,r[t+4>>2]|0,r[d>>2]|0,r[d+4>>2]|0)|0,t=S()|0,B=o,r[B>>2]=d,r[B+4>>2]=t,Fr(w),B=w,s=r[B>>2]|0,l=r[B+4>>2]|0;while(!((s|0)==0&(l|0)==0));s=r[f>>2]|0}while(!1);return B=s,E=M,B|0}function gr(t,n,s){t=t|0,n=n|0,s=s|0;var o=0,l=0,u=0,f=0,d=0,p=0,w=0,T=0,M=0,I=0;if(!(Xn(n,s)|0)||(n=as(n)|0,o=+b[s>>3],l=+b[s+8>>3],l=n&l<0?l+6.283185307179586:l,I=r[t>>2]|0,(I|0)<=0))return I=0,I|0;if(M=r[t+4>>2]|0,n){n=0,T=l,s=-1,t=0;A:for(;;){for(w=t;f=+b[M+(w<<4)>>3],l=+b[M+(w<<4)+8>>3],t=(s+2|0)%(I|0)|0,u=+b[M+(t<<4)>>3],d=+b[M+(t<<4)+8>>3],f>u?(p=f,f=d):(p=u,u=f,f=l,l=d),o=o==u|o==p?o+2220446049250313e-31:o,!!(o<u|o>p);)if(s=w+1|0,(s|0)>=(I|0)){s=22;break A}else t=w,w=s,s=t;if(d=f<0?f+6.283185307179586:f,f=l<0?l+6.283185307179586:l,T=d==T|f==T?T+-2220446049250313e-31:T,p=d+(f-d)*((o-u)/(p-u)),(p<0?p+6.283185307179586:p)>T&&(n=n^1),t=w+1|0,(t|0)>=(I|0)){s=22;break}else s=w}if((s|0)==22)return n|0}else{n=0,T=l,s=-1,t=0;A:for(;;){for(w=t;f=+b[M+(w<<4)>>3],l=+b[M+(w<<4)+8>>3],t=(s+2|0)%(I|0)|0,u=+b[M+(t<<4)>>3],d=+b[M+(t<<4)+8>>3],f>u?(p=f,f=d):(p=u,u=f,f=l,l=d),o=o==u|o==p?o+2220446049250313e-31:o,!!(o<u|o>p);)if(s=w+1|0,(s|0)>=(I|0)){s=22;break A}else t=w,w=s,s=t;if(T=f==T|l==T?T+-2220446049250313e-31:T,f+(l-f)*((o-u)/(p-u))>T&&(n=n^1),t=w+1|0,(t|0)>=(I|0)){s=22;break}else s=w}if((s|0)==22)return n|0}return 0}function xs(t,n){t=t|0,n=n|0;var s=0,o=0,l=0,u=0,f=0,d=0,p=0,w=0,T=0,M=0,I=0,B=0,L=0,D=0,F=0,q=0,V=0;if(L=r[t>>2]|0,!L){r[n>>2]=0,r[n+4>>2]=0,r[n+8>>2]=0,r[n+12>>2]=0,r[n+16>>2]=0,r[n+20>>2]=0,r[n+24>>2]=0,r[n+28>>2]=0;return}if(D=n+8|0,b[D>>3]=17976931348623157e292,F=n+24|0,b[F>>3]=17976931348623157e292,b[n>>3]=-17976931348623157e292,q=n+16|0,b[q>>3]=-17976931348623157e292,!((L|0)<=0)){for(I=r[t+4>>2]|0,w=17976931348623157e292,T=-17976931348623157e292,M=0,t=-1,u=17976931348623157e292,f=17976931348623157e292,p=-17976931348623157e292,o=-17976931348623157e292,B=0;s=+b[I+(B<<4)>>3],d=+b[I+(B<<4)+8>>3],t=t+2|0,l=+b[I+(((t|0)==(L|0)?0:t)<<4)+8>>3],s<u&&(b[D>>3]=s,u=s),d<f&&(b[F>>3]=d,f=d),s>p?b[n>>3]=s:s=p,d>o&&(b[q>>3]=d,o=d),w=d>0&d<w?d:w,T=d<0&d>T?d:T,M=M|+NA(+(d-l))>3.141592653589793,t=B+1|0,(t|0)!=(L|0);)V=B,p=s,B=t,t=V;M&&(b[q>>3]=T,b[F>>3]=w)}}function pr(t){return t=t|0,(t>>>0<4?0:15)|0}function d0(t,n){t=t|0,n=n|0;var s=0,o=0,l=0,u=0,f=0,d=0,p=0,w=0,T=0,M=0,I=0,B=0,L=0,D=0,F=0,q=0,V=0,Q=0,O=0,sA=0,gA=0,fA=0;if(L=r[t>>2]|0,L){if(D=n+8|0,b[D>>3]=17976931348623157e292,F=n+24|0,b[F>>3]=17976931348623157e292,b[n>>3]=-17976931348623157e292,q=n+16|0,b[q>>3]=-17976931348623157e292,(L|0)>0){for(l=r[t+4>>2]|0,I=17976931348623157e292,B=-17976931348623157e292,o=0,s=-1,p=17976931348623157e292,w=17976931348623157e292,M=-17976931348623157e292,f=-17976931348623157e292,V=0;u=+b[l+(V<<4)>>3],T=+b[l+(V<<4)+8>>3],gA=s+2|0,d=+b[l+(((gA|0)==(L|0)?0:gA)<<4)+8>>3],u<p&&(b[D>>3]=u,p=u),T<w&&(b[F>>3]=T,w=T),u>M?b[n>>3]=u:u=M,T>f&&(b[q>>3]=T,f=T),I=T>0&T<I?T:I,B=T<0&T>B?T:B,o=o|+NA(+(T-d))>3.141592653589793,s=V+1|0,(s|0)!=(L|0);)gA=V,M=u,V=s,s=gA;o&&(b[q>>3]=B,b[F>>3]=I)}}else r[n>>2]=0,r[n+4>>2]=0,r[n+8>>2]=0,r[n+12>>2]=0,r[n+16>>2]=0,r[n+20>>2]=0,r[n+24>>2]=0,r[n+28>>2]=0;if(gA=t+8|0,s=r[gA>>2]|0,!((s|0)<=0)){sA=t+12|0,O=0;do if(l=r[sA>>2]|0,o=O,O=O+1|0,F=n+(O<<5)|0,q=r[l+(o<<3)>>2]|0,q){if(V=n+(O<<5)+8|0,b[V>>3]=17976931348623157e292,t=n+(O<<5)+24|0,b[t>>3]=17976931348623157e292,b[F>>3]=-17976931348623157e292,Q=n+(O<<5)+16|0,b[Q>>3]=-17976931348623157e292,(q|0)>0){for(L=r[l+(o<<3)+4>>2]|0,I=17976931348623157e292,B=-17976931348623157e292,l=0,o=-1,D=0,p=17976931348623157e292,w=17976931348623157e292,T=-17976931348623157e292,f=-17976931348623157e292;u=+b[L+(D<<4)>>3],M=+b[L+(D<<4)+8>>3],o=o+2|0,d=+b[L+(((o|0)==(q|0)?0:o)<<4)+8>>3],u<p&&(b[V>>3]=u,p=u),M<w&&(b[t>>3]=M,w=M),u>T?b[F>>3]=u:u=T,M>f&&(b[Q>>3]=M,f=M),I=M>0&M<I?M:I,B=M<0&M>B?M:B,l=l|+NA(+(M-d))>3.141592653589793,o=D+1|0,(o|0)!=(q|0);)fA=D,D=o,T=u,o=fA;l&&(b[Q>>3]=B,b[t>>3]=I)}}else r[F>>2]=0,r[F+4>>2]=0,r[F+8>>2]=0,r[F+12>>2]=0,r[F+16>>2]=0,r[F+20>>2]=0,r[F+24>>2]=0,r[F+28>>2]=0,s=r[gA>>2]|0;while((O|0)<(s|0))}}function g0(t,n,s){t=t|0,n=n|0,s=s|0;var o=0,l=0,u=0;if(!(gr(t,n,s)|0))return l=0,l|0;if(l=t+8|0,(r[l>>2]|0)<=0)return l=1,l|0;for(o=t+12|0,t=0;;){if(u=t,t=t+1|0,gr((r[o>>2]|0)+(u<<3)|0,n+(t<<5)|0,s)|0){t=0,o=6;break}if((t|0)>=(r[l>>2]|0)){t=1,o=6;break}}return(o|0)==6?t|0:0}function Ns(t,n,s,o){t=t|0,n=n|0,s=s|0,o=o|0;var l=0,u=0,f=0,d=0,p=0,w=0,T=0;if(w=E,E=E+16|0,d=w,f=s+8|0,!(gr(t,n,f)|0))return p=0,E=w,p|0;p=t+8|0;A:do if((r[p>>2]|0)>0){for(u=t+12|0,l=0;;){if(T=l,l=l+1|0,gr((r[u>>2]|0)+(T<<3)|0,n+(l<<5)|0,f)|0){l=0;break}if((l|0)>=(r[p>>2]|0))break A}return E=w,l|0}while(!1);if(Ur(t,n,s,o)|0)return T=0,E=w,T|0;r[d>>2]=r[s>>2],r[d+4>>2]=f,l=r[p>>2]|0;A:do if((l|0)>0)for(t=t+12|0,f=0,u=l;;){if(l=r[t>>2]|0,(r[l+(f<<3)>>2]|0)>0){if(gr(d,o,r[l+(f<<3)+4>>2]|0)|0){l=0;break A}if(l=f+1|0,Ur((r[t>>2]|0)+(f<<3)|0,n+(l<<5)|0,s,o)|0){l=0;break A}u=r[p>>2]|0}else l=f+1|0;if((l|0)<(u|0))f=l;else{l=1;break}}else l=1;while(!1);return T=l,E=w,T|0}function Ur(t,n,s,o){t=t|0,n=n|0,s=s|0,o=o|0;var l=0,u=0,f=0,d=0,p=0,w=0,T=0,M=0,I=0,B=0,L=0,D=0,F=0,q=0,V=0,Q=0,O=0,sA=0,gA=0,fA=0,SA=0;if(gA=E,E=E+176|0,V=gA+172|0,l=gA+168|0,Q=gA,!(Jn(n,o)|0))return t=0,E=gA,t|0;if(nf(n,o,V,l),qt(Q|0,s|0,168)|0,(r[s>>2]|0)>0){n=0;do fA=Q+8+(n<<4)+8|0,q=+Be(+b[fA>>3],r[l>>2]|0),b[fA>>3]=q,n=n+1|0;while((n|0)<(r[s>>2]|0))}D=+b[o>>3],F=+b[o+8>>3],q=+Be(+b[o+16>>3],r[l>>2]|0),B=+Be(+b[o+24>>3],r[l>>2]|0);A:do if((r[t>>2]|0)>0){if(o=t+4|0,l=r[Q>>2]|0,(l|0)<=0){for(n=0;;)if(n=n+1|0,(n|0)>=(r[t>>2]|0)){n=0;break A}}for(s=0;;){if(n=r[o>>2]|0,I=+b[n+(s<<4)>>3],L=+Be(+b[n+(s<<4)+8>>3],r[V>>2]|0),n=r[o>>2]|0,s=s+1|0,fA=(s|0)%(r[t>>2]|0)|0,u=+b[n+(fA<<4)>>3],f=+Be(+b[n+(fA<<4)+8>>3],r[V>>2]|0),!(I>=D)|!(u>=D)&&!(I<=F)|!(u<=F)&&!(L<=B)|!(f<=B)&&!(L>=q)|!(f>=q)){M=u-I,w=f-L,n=0;do if(SA=n,n=n+1|0,fA=(n|0)==(l|0)?0:n,u=+b[Q+8+(SA<<4)+8>>3],f=+b[Q+8+(fA<<4)+8>>3]-u,d=+b[Q+8+(SA<<4)>>3],p=+b[Q+8+(fA<<4)>>3]-d,T=M*f-w*p,T!=0&&(O=L-u,sA=I-d,p=(O*p-f*sA)/T,!(p<0|p>1))&&(T=(M*O-w*sA)/T,T>=0&T<=1)){n=1;break A}while((n|0)<(l|0))}if((s|0)>=(r[t>>2]|0)){n=0;break}}}else n=0;while(!1);return SA=n,E=gA,SA|0}function Rs(t,n,s,o){t=t|0,n=n|0,s=s|0,o=o|0;var l=0,u=0,f=0;if(Ur(t,n,s,o)|0)return u=1,u|0;if(u=t+8|0,(r[u>>2]|0)<=0)return u=0,u|0;for(l=t+12|0,t=0;;){if(f=t,t=t+1|0,Ur((r[l>>2]|0)+(f<<3)|0,n+(t<<5)|0,s,o)|0){t=1,l=6;break}if((t|0)>=(r[u>>2]|0)){t=0,l=6;break}}return(l|0)==6?t|0:0}function lh(){return 8}function uh(){return 16}function ch(){return 168}function fh(){return 8}function hh(){return 16}function dh(){return 12}function gh(){return 8}function ph(t){return t=t|0,+(+((r[t>>2]|0)>>>0)+4294967296*+(r[t+4>>2]|0))}function mh(t){t=t|0;var n=0,s=0;return s=+b[t>>3],n=+b[t+8>>3],+ +FA(+(s*s+n*n))}function Ds(t,n,s,o,l){t=t|0,n=n|0,s=s|0,o=o|0,l=l|0;var u=0,f=0,d=0,p=0,w=0,T=0,M=0,I=0;w=+b[t>>3],p=+b[n>>3]-w,d=+b[t+8>>3],f=+b[n+8>>3]-d,M=+b[s>>3],u=+b[o>>3]-M,I=+b[s+8>>3],T=+b[o+8>>3]-I,u=(u*(d-I)-(w-M)*T)/(p*T-f*u),b[l>>3]=w+p*u,b[l+8>>3]=d+f*u}function Os(t,n){return t=t|0,n=n|0,+NA(+(+b[t>>3]-+b[n>>3]))<11920928955078125e-23?(n=+NA(+(+b[t+8>>3]-+b[n+8>>3]))<11920928955078125e-23,n|0):(n=0,n|0)}function ne(t,n){t=t|0,n=n|0;var s=0,o=0,l=0;return l=+b[t>>3]-+b[n>>3],o=+b[t+8>>3]-+b[n+8>>3],s=+b[t+16>>3]-+b[n+16>>3],+(l*l+o*o+s*s)}function wh(t,n){t=t|0,n=n|0;var s=0,o=0,l=0;s=+b[t>>3],o=+GA(+s),s=+RA(+s),b[n+16>>3]=s,s=+b[t+8>>3],l=o*+GA(+s),b[n>>3]=l,s=o*+RA(+s),b[n+8>>3]=s}function yh(t,n,s){t=t|0,n=n|0,s=s|0;var o=0,l=0,u=0;if(u=E,E=E+16|0,l=u,o=JA(t,n)|0,(s+-1|0)>>>0>5||(o=(o|0)!=0,(s|0)==1&o))return l=-1,E=u,l|0;do if(mr(t,n,l)|0)o=-1;else if(o){o=((r[26352+(s<<2)>>2]|0)+5-(r[l>>2]|0)|0)%5|0;break}else{o=((r[26384+(s<<2)>>2]|0)+6-(r[l>>2]|0)|0)%6|0;break}while(!1);return l=o,E=u,l|0}function mr(t,n,s){t=t|0,n=n|0,s=s|0;var o=0,l=0,u=0,f=0,d=0,p=0,w=0;if(w=E,E=E+32|0,f=w+16|0,d=w,o=Ut(t,n,f)|0,o|0)return s=o,E=w,s|0;u=vs(t,n)|0,p=Ee(t,n)|0,Kc(u,d),o=$c(u,r[f>>2]|0)|0;A:do if(ee(u)|0){do switch(u|0){case 4:{t=0;break}case 14:{t=1;break}case 24:{t=2;break}case 38:{t=3;break}case 49:{t=4;break}case 58:{t=5;break}case 63:{t=6;break}case 72:{t=7;break}case 83:{t=8;break}case 97:{t=9;break}case 107:{t=10;break}case 117:{t=11;break}default:{o=1;break A}}while(!1);if(l=r[26416+(t*24|0)+8>>2]|0,n=r[26416+(t*24|0)+16>>2]|0,t=r[f>>2]|0,(t|0)!=(r[d>>2]|0)&&(d=Wn(u)|0,t=r[f>>2]|0,d|(t|0)==(n|0)&&(o=(o+1|0)%6|0)),(p|0)==3&(t|0)==(n|0)){o=(o+5|0)%6|0,l=22;break}(p|0)==5&(t|0)==(l|0)&&(o=(o+1|0)%6|0),l=22}else l=22;while(!1);return(l|0)==22&&(r[s>>2]=o,o=0),s=o,E=w,s|0}function ke(t,n,s,o){t=t|0,n=n|0,s=s|0,o=o|0;var l=0,u=0,f=0,d=0,p=0,w=0,T=0,M=0,I=0,B=0,L=0,D=0,F=0,q=0,V=0,Q=0;if(Q=E,E=E+32|0,V=Q+24|0,F=Q+20|0,L=Q+8|0,B=Q+16|0,I=Q,p=(JA(t,n)|0)==0,p=p?6:5,T=AA(t|0,n|0,52)|0,S()|0,T=T&15,p>>>0<=s>>>0)return o=2,E=Q,o|0;M=(T|0)==0,!M&&(D=oA(7,0,(T^15)*3|0)|0,(D&t|0)==0&((S()|0)&n|0)==0)?l=s:u=4;A:do if((u|0)==4){if(l=(JA(t,n)|0)!=0,((l?4:5)|0)<(s|0)||mr(t,n,V)|0||(u=(r[V>>2]|0)+s|0,l?l=26704+(((u|0)%5|0)<<2)|0:l=26736+(((u|0)%6|0)<<2)|0,D=r[l>>2]|0,(D|0)==7))return o=1,E=Q,o|0;r[F>>2]=0,l=ae(t,n,D,F,L)|0;do if(!l){if(d=L,w=r[d>>2]|0,d=r[d+4>>2]|0,f=d>>>0<n>>>0|(d|0)==(n|0)&w>>>0<t>>>0,u=f?w:t,f=f?d:n,!M&&(M=oA(7,0,(T^15)*3|0)|0,(w&M|0)==0&(d&(S()|0)|0)==0))l=s;else{if(d=(s+-1+p|0)%(p|0)|0,l=JA(t,n)|0,(d|0)<0&&bA(27795,27797,246,27806),p=(l|0)!=0,((p?4:5)|0)<(d|0)&&bA(27795,27797,246,27806),mr(t,n,V)|0&&bA(27795,27797,246,27806),l=(r[V>>2]|0)+d|0,p?l=26704+(((l|0)%5|0)<<2)|0:l=26736+(((l|0)%6|0)<<2)|0,d=r[l>>2]|0,(d|0)==7&&bA(27795,27797,246,27806),r[B>>2]=0,l=ae(t,n,d,B,I)|0,l|0)break;w=I,p=r[w>>2]|0,w=r[w+4>>2]|0;do if(w>>>0<f>>>0|(w|0)==(f|0)&p>>>0<u>>>0){if(JA(p,w)|0?u=jn(p,w,t,n)|0:u=r[26800+((((r[B>>2]|0)+(r[26768+(d<<2)>>2]|0)|0)%6|0)<<2)>>2]|0,l=JA(p,w)|0,(u+-1|0)>>>0>5){l=-1,u=p,f=w;break}if(l=(l|0)!=0,(u|0)==1&l){l=-1,u=p,f=w;break}do if(mr(p,w,V)|0)l=-1;else if(l){l=((r[26352+(u<<2)>>2]|0)+5-(r[V>>2]|0)|0)%5|0;break}else{l=((r[26384+(u<<2)>>2]|0)+6-(r[V>>2]|0)|0)%6|0;break}while(!1);u=p,f=w}else l=s;while(!1);d=L,w=r[d>>2]|0,d=r[d+4>>2]|0}if((u|0)==(w|0)&(f|0)==(d|0)){if(p=(JA(w,d)|0)!=0,p?t=jn(w,d,t,n)|0:t=r[26800+((((r[F>>2]|0)+(r[26768+(D<<2)>>2]|0)|0)%6|0)<<2)>>2]|0,l=JA(w,d)|0,(t+-1|0)>>>0<=5&&(q=(l|0)!=0,!((t|0)==1&q)))do if(mr(w,d,V)|0)l=-1;else if(q){l=((r[26352+(t<<2)>>2]|0)+5-(r[V>>2]|0)|0)%5|0;break}else{l=((r[26384+(t<<2)>>2]|0)+6-(r[V>>2]|0)|0)%6|0;break}while(!1);else l=-1;l=l+1|0,l=(l|0)==6|p&(l|0)==5?0:l}n=f,t=u;break A}while(!1);return o=l,E=Q,o|0}while(!1);return q=oA(l|0,0,56)|0,V=S()|0|n&-2130706433|536870912,r[o>>2]=q|t,r[o+4>>2]=V,o=0,E=Q,o|0}function Th(t,n,s){t=t|0,n=n|0,s=s|0;var o=0,l=0,u=0;return u=(JA(t,n)|0)==0,o=ke(t,n,0,s)|0,l=(o|0)==0,u?!l||(o=ke(t,n,1,s+8|0)|0,o|0)||(o=ke(t,n,2,s+16|0)|0,o|0)||(o=ke(t,n,3,s+24|0)|0,o|0)||(o=ke(t,n,4,s+32|0)|0,o)?(u=o,u|0):ke(t,n,5,s+40|0)|0:!l||(o=ke(t,n,1,s+8|0)|0,o|0)||(o=ke(t,n,2,s+16|0)|0,o|0)||(o=ke(t,n,3,s+24|0)|0,o|0)||(o=ke(t,n,4,s+32|0)|0,o|0)?(u=o,u|0):(u=s+40|0,r[u>>2]=0,r[u+4>>2]=0,u=0,u|0)}function vh(t,n,s){t=t|0,n=n|0,s=s|0;var o=0,l=0,u=0,f=0,d=0,p=0;return p=E,E=E+192|0,l=p,u=p+168|0,f=AA(t|0,n|0,56)|0,S()|0,f=f&7,d=n&-2130706433|134217728,o=Ut(t,d,u)|0,o|0?(d=o,E=p,d|0):(n=AA(t|0,n|0,52)|0,S()|0,n=n&15,JA(t,d)|0?A0(u,n,f,1,l):e0(u,n,f,1,l),d=l+8|0,r[s>>2]=r[d>>2],r[s+4>>2]=r[d+4>>2],r[s+8>>2]=r[d+8>>2],r[s+12>>2]=r[d+12>>2],d=0,E=p,d|0)}function _h(t,n){t=t|0,n=n|0;var s=0,o=0,l=0,u=0;return l=E,E=E+16|0,s=l,!(!0&(n&2013265920|0)==536870912)||(o=n&-2130706433|134217728,!(t0(t,o)|0))?(o=0,E=l,o|0):(u=AA(t|0,n|0,56)|0,S()|0,u=(ke(t,o,u&7,s)|0)==0,o=s,o=u&((r[o>>2]|0)==(t|0)?(r[o+4>>2]|0)==(n|0):0)&1,E=l,o|0)}function ks(t,n,s){t=t|0,n=n|0,s=s|0;var o=0;(n|0)>0?(o=Me(n,4)|0,r[t>>2]=o,o||bA(27819,27842,40,27856)):r[t>>2]=0,r[t+4>>2]=n,r[t+8>>2]=0,r[t+12>>2]=s}function Fs(t){t=t|0;var n=0,s=0,o=0,l=0,u=0,f=0,d=0;l=t+4|0,u=t+12|0,f=t+8|0;A:for(;;){for(s=r[l>>2]|0,n=0;;){if((n|0)>=(s|0))break A;if(o=r[t>>2]|0,d=r[o+(n<<2)>>2]|0,!d)n=n+1|0;else break}n=o+(~~(+NA(+(+at(10,+ +(15-(r[u>>2]|0)|0))*(+b[d>>3]+ +b[d+8>>3])))%+(s|0))>>>0<<2)|0,s=r[n>>2]|0;e:do if(s|0){if(o=d+32|0,(s|0)==(d|0))r[n>>2]=r[o>>2];else{if(s=s+32|0,n=r[s>>2]|0,!n)break;for(;(n|0)!=(d|0);)if(s=n+32|0,n=r[s>>2]|0,!n)break e;r[s>>2]=r[o>>2]}TA(d),r[f>>2]=(r[f>>2]|0)+-1}while(!1)}TA(r[t>>2]|0)}function Us(t){t=t|0;var n=0,s=0,o=0;for(o=r[t+4>>2]|0,s=0;;){if((s|0)>=(o|0)){n=0,s=4;break}if(n=r[(r[t>>2]|0)+(s<<2)>>2]|0,!n)s=s+1|0;else{s=4;break}}return(s|0)==4?n|0:0}function Qs(t,n){t=t|0,n=n|0;var s=0,o=0,l=0,u=0;if(s=~~(+NA(+(+at(10,+ +(15-(r[t+12>>2]|0)|0))*(+b[n>>3]+ +b[n+8>>3])))%+(r[t+4>>2]|0))>>>0,s=(r[t>>2]|0)+(s<<2)|0,o=r[s>>2]|0,!o)return u=1,u|0;u=n+32|0;do if((o|0)!=(n|0)){if(s=r[o+32>>2]|0,!s)return u=1,u|0;for(l=s;;){if((l|0)==(n|0)){l=8;break}if(s=r[l+32>>2]|0,s)o=l,l=s;else{s=1,l=10;break}}if((l|0)==8){r[o+32>>2]=r[u>>2];break}else if((l|0)==10)return s|0}else r[s>>2]=r[u>>2];while(!1);return TA(n),u=t+8|0,r[u>>2]=(r[u>>2]|0)+-1,u=0,u|0}function bh(t,n,s){t=t|0,n=n|0,s=s|0;var o=0,l=0,u=0,f=0;u=Ye(40)|0,u||bA(27872,27842,98,27885),r[u>>2]=r[n>>2],r[u+4>>2]=r[n+4>>2],r[u+8>>2]=r[n+8>>2],r[u+12>>2]=r[n+12>>2],l=u+16|0,r[l>>2]=r[s>>2],r[l+4>>2]=r[s+4>>2],r[l+8>>2]=r[s+8>>2],r[l+12>>2]=r[s+12>>2],r[u+32>>2]=0,l=~~(+NA(+(+at(10,+ +(15-(r[t+12>>2]|0)|0))*(+b[n>>3]+ +b[n+8>>3])))%+(r[t+4>>2]|0))>>>0,l=(r[t>>2]|0)+(l<<2)|0,o=r[l>>2]|0;do if(!o)r[l>>2]=u;else{for(;!(Vt(o,n)|0&&Vt(o+16|0,s)|0);)if(l=r[o+32>>2]|0,o=(l|0)==0?o:l,!(r[o+32>>2]|0)){f=10;break}if((f|0)==10){r[o+32>>2]=u;break}return TA(u),f=o,f|0}while(!1);return f=t+8|0,r[f>>2]=(r[f>>2]|0)+1,f=u,f|0}function Eh(t,n,s){t=t|0,n=n|0,s=s|0;var o=0,l=0;if(l=~~(+NA(+(+at(10,+ +(15-(r[t+12>>2]|0)|0))*(+b[n>>3]+ +b[n+8>>3])))%+(r[t+4>>2]|0))>>>0,l=r[(r[t>>2]|0)+(l<<2)>>2]|0,!l)return s=0,s|0;if(!s){for(t=l;;){if(Vt(t,n)|0){o=10;break}if(t=r[t+32>>2]|0,!t){t=0,o=10;break}}if((o|0)==10)return t|0}for(t=l;;){if(Vt(t,n)|0&&Vt(t+16|0,s)|0){o=10;break}if(t=r[t+32>>2]|0,!t){t=0,o=10;break}}return(o|0)==10?t|0:0}function Mh(t,n){t=t|0,n=n|0;var s=0;if(s=~~(+NA(+(+at(10,+ +(15-(r[t+12>>2]|0)|0))*(+b[n>>3]+ +b[n+8>>3])))%+(r[t+4>>2]|0))>>>0,t=r[(r[t>>2]|0)+(s<<2)>>2]|0,!t)return s=0,s|0;for(;;){if(Vt(t,n)|0){n=5;break}if(t=r[t+32>>2]|0,!t){t=0,n=5;break}}return(n|0)==5?t|0:0}function Ch(){return 27904}function ct(t){return t=+t,~~+Hs(+t)|0}function Ye(t){t=t|0;var n=0,s=0,o=0,l=0,u=0,f=0,d=0,p=0,w=0,T=0,M=0,I=0,B=0,L=0,D=0,F=0,q=0,V=0,Q=0,O=0,sA=0;sA=E,E=E+16|0,I=sA;do if(t>>>0<245){if(w=t>>>0<11?16:t+11&-8,t=w>>>3,M=r[6977]|0,s=M>>>t,s&3|0)return n=(s&1^1)+t|0,t=27948+(n<<1<<2)|0,s=t+8|0,o=r[s>>2]|0,l=o+8|0,u=r[l>>2]|0,(u|0)==(t|0)?r[6977]=M&~(1<<n):(r[u+12>>2]=t,r[s>>2]=u),O=n<<3,r[o+4>>2]=O|3,O=o+O+4|0,r[O>>2]=r[O>>2]|1,O=l,E=sA,O|0;if(T=r[6979]|0,w>>>0>T>>>0){if(s|0)return n=2<<t,n=s<<t&(n|0-n),n=(n&0-n)+-1|0,d=n>>>12&16,n=n>>>d,s=n>>>5&8,n=n>>>s,u=n>>>2&4,n=n>>>u,t=n>>>1&2,n=n>>>t,o=n>>>1&1,o=(s|d|u|t|o)+(n>>>o)|0,n=27948+(o<<1<<2)|0,t=n+8|0,u=r[t>>2]|0,d=u+8|0,s=r[d>>2]|0,(s|0)==(n|0)?(t=M&~(1<<o),r[6977]=t):(r[s+12>>2]=n,r[t>>2]=s,t=M),O=o<<3,f=O-w|0,r[u+4>>2]=w|3,l=u+w|0,r[l+4>>2]=f|1,r[u+O>>2]=f,T|0&&(o=r[6982]|0,n=T>>>3,s=27948+(n<<1<<2)|0,n=1<<n,t&n?(t=s+8|0,n=r[t>>2]|0):(r[6977]=t|n,n=s,t=s+8|0),r[t>>2]=o,r[n+12>>2]=o,r[o+8>>2]=n,r[o+12>>2]=s),r[6979]=f,r[6982]=l,O=d,E=sA,O|0;if(u=r[6978]|0,u){for(s=(u&0-u)+-1|0,l=s>>>12&16,s=s>>>l,o=s>>>5&8,s=s>>>o,f=s>>>2&4,s=s>>>f,d=s>>>1&2,s=s>>>d,p=s>>>1&1,p=r[28212+((o|l|f|d|p)+(s>>>p)<<2)>>2]|0,s=p,d=p,p=(r[p+4>>2]&-8)-w|0;t=r[s+16>>2]|0,!(!t&&(t=r[s+20>>2]|0,!t));)f=(r[t+4>>2]&-8)-w|0,l=f>>>0<p>>>0,s=t,d=l?t:d,p=l?f:p;if(f=d+w|0,f>>>0>d>>>0){l=r[d+24>>2]|0,n=r[d+12>>2]|0;do if((n|0)==(d|0)){if(t=d+20|0,n=r[t>>2]|0,!n&&(t=d+16|0,n=r[t>>2]|0,!n)){s=0;break}for(;;)if(o=n+20|0,s=r[o>>2]|0,s)n=s,t=o;else if(o=n+16|0,s=r[o>>2]|0,s)n=s,t=o;else break;r[t>>2]=0,s=n}else s=r[d+8>>2]|0,r[s+12>>2]=n,r[n+8>>2]=s,s=n;while(!1);do if(l|0){if(n=r[d+28>>2]|0,t=28212+(n<<2)|0,(d|0)==(r[t>>2]|0)){if(r[t>>2]=s,!s){r[6978]=u&~(1<<n);break}}else if(O=l+16|0,r[((r[O>>2]|0)==(d|0)?O:l+20|0)>>2]=s,!s)break;r[s+24>>2]=l,n=r[d+16>>2]|0,n|0&&(r[s+16>>2]=n,r[n+24>>2]=s),n=r[d+20>>2]|0,n|0&&(r[s+20>>2]=n,r[n+24>>2]=s)}while(!1);return p>>>0<16?(O=p+w|0,r[d+4>>2]=O|3,O=d+O+4|0,r[O>>2]=r[O>>2]|1):(r[d+4>>2]=w|3,r[f+4>>2]=p|1,r[f+p>>2]=p,T|0&&(o=r[6982]|0,n=T>>>3,s=27948+(n<<1<<2)|0,n=1<<n,n&M?(t=s+8|0,n=r[t>>2]|0):(r[6977]=n|M,n=s,t=s+8|0),r[t>>2]=o,r[n+12>>2]=o,r[o+8>>2]=n,r[o+12>>2]=s),r[6979]=p,r[6982]=f),O=d+8|0,E=sA,O|0}else M=w}else M=w}else M=w}else if(t>>>0<=4294967231)if(t=t+11|0,w=t&-8,o=r[6978]|0,o){l=0-w|0,t=t>>>8,t?w>>>0>16777215?p=31:(M=(t+1048320|0)>>>16&8,D=t<<M,d=(D+520192|0)>>>16&4,D=D<<d,p=(D+245760|0)>>>16&2,p=14-(d|M|p)+(D<<p>>>15)|0,p=w>>>(p+7|0)&1|p<<1):p=0,s=r[28212+(p<<2)>>2]|0;A:do if(!s)s=0,t=0,D=61;else for(t=0,d=w<<((p|0)==31?0:25-(p>>>1)|0),u=0;;){if(f=(r[s+4>>2]&-8)-w|0,f>>>0<l>>>0)if(f)t=s,l=f;else{t=s,l=0,D=65;break A}if(D=r[s+20>>2]|0,s=r[s+16+(d>>>31<<2)>>2]|0,u=(D|0)==0|(D|0)==(s|0)?u:D,s)d=d<<1;else{s=u,D=61;break}}while(!1);if((D|0)==61){if((s|0)==0&(t|0)==0){if(t=2<<p,t=(t|0-t)&o,!t){M=w;break}M=(t&0-t)+-1|0,f=M>>>12&16,M=M>>>f,u=M>>>5&8,M=M>>>u,d=M>>>2&4,M=M>>>d,p=M>>>1&2,M=M>>>p,s=M>>>1&1,t=0,s=r[28212+((u|f|d|p|s)+(M>>>s)<<2)>>2]|0}s?D=65:(d=t,f=l)}if((D|0)==65)for(u=s;;)if(M=(r[u+4>>2]&-8)-w|0,s=M>>>0<l>>>0,l=s?M:l,t=s?u:t,s=r[u+16>>2]|0,s||(s=r[u+20>>2]|0),s)u=s;else{d=t,f=l;break}if((d|0)!=0&&f>>>0<((r[6979]|0)-w|0)>>>0&&(T=d+w|0,T>>>0>d>>>0)){u=r[d+24>>2]|0,n=r[d+12>>2]|0;do if((n|0)==(d|0)){if(t=d+20|0,n=r[t>>2]|0,!n&&(t=d+16|0,n=r[t>>2]|0,!n)){n=0;break}for(;;)if(l=n+20|0,s=r[l>>2]|0,s)n=s,t=l;else if(l=n+16|0,s=r[l>>2]|0,s)n=s,t=l;else break;r[t>>2]=0}else O=r[d+8>>2]|0,r[O+12>>2]=n,r[n+8>>2]=O;while(!1);do if(u){if(t=r[d+28>>2]|0,s=28212+(t<<2)|0,(d|0)==(r[s>>2]|0)){if(r[s>>2]=n,!n){o=o&~(1<<t),r[6978]=o;break}}else if(O=u+16|0,r[((r[O>>2]|0)==(d|0)?O:u+20|0)>>2]=n,!n)break;r[n+24>>2]=u,t=r[d+16>>2]|0,t|0&&(r[n+16>>2]=t,r[t+24>>2]=n),t=r[d+20>>2]|0,t&&(r[n+20>>2]=t,r[t+24>>2]=n)}while(!1);A:do if(f>>>0<16)O=f+w|0,r[d+4>>2]=O|3,O=d+O+4|0,r[O>>2]=r[O>>2]|1;else{if(r[d+4>>2]=w|3,r[T+4>>2]=f|1,r[T+f>>2]=f,n=f>>>3,f>>>0<256){s=27948+(n<<1<<2)|0,t=r[6977]|0,n=1<<n,t&n?(t=s+8|0,n=r[t>>2]|0):(r[6977]=t|n,n=s,t=s+8|0),r[t>>2]=T,r[n+12>>2]=T,r[T+8>>2]=n,r[T+12>>2]=s;break}if(n=f>>>8,n?f>>>0>16777215?s=31:(Q=(n+1048320|0)>>>16&8,O=n<<Q,V=(O+520192|0)>>>16&4,O=O<<V,s=(O+245760|0)>>>16&2,s=14-(V|Q|s)+(O<<s>>>15)|0,s=f>>>(s+7|0)&1|s<<1):s=0,n=28212+(s<<2)|0,r[T+28>>2]=s,t=T+16|0,r[t+4>>2]=0,r[t>>2]=0,t=1<<s,!(o&t)){r[6978]=o|t,r[n>>2]=T,r[T+24>>2]=n,r[T+12>>2]=T,r[T+8>>2]=T;break}n=r[n>>2]|0;e:do if((r[n+4>>2]&-8|0)!=(f|0)){for(o=f<<((s|0)==31?0:25-(s>>>1)|0);s=n+16+(o>>>31<<2)|0,t=r[s>>2]|0,!!t;)if((r[t+4>>2]&-8|0)==(f|0)){n=t;break e}else o=o<<1,n=t;r[s>>2]=T,r[T+24>>2]=n,r[T+12>>2]=T,r[T+8>>2]=T;break A}while(!1);Q=n+8|0,O=r[Q>>2]|0,r[O+12>>2]=T,r[Q>>2]=T,r[T+8>>2]=O,r[T+12>>2]=n,r[T+24>>2]=0}while(!1);return O=d+8|0,E=sA,O|0}else M=w}else M=w;else M=-1;while(!1);if(s=r[6979]|0,s>>>0>=M>>>0)return n=s-M|0,t=r[6982]|0,n>>>0>15?(O=t+M|0,r[6982]=O,r[6979]=n,r[O+4>>2]=n|1,r[t+s>>2]=n,r[t+4>>2]=M|3):(r[6979]=0,r[6982]=0,r[t+4>>2]=s|3,O=t+s+4|0,r[O>>2]=r[O>>2]|1),O=t+8|0,E=sA,O|0;if(f=r[6980]|0,f>>>0>M>>>0)return V=f-M|0,r[6980]=V,O=r[6983]|0,Q=O+M|0,r[6983]=Q,r[Q+4>>2]=V|1,r[O+4>>2]=M|3,O=O+8|0,E=sA,O|0;if(r[7095]|0?t=r[7097]|0:(r[7097]=4096,r[7096]=4096,r[7098]=-1,r[7099]=-1,r[7100]=0,r[7088]=0,r[7095]=I&-16^1431655768,t=4096),d=M+48|0,p=M+47|0,u=t+p|0,l=0-t|0,w=u&l,w>>>0<=M>>>0||(t=r[7087]|0,t|0&&(T=r[7085]|0,I=T+w|0,I>>>0<=T>>>0|I>>>0>t>>>0)))return O=0,E=sA,O|0;A:do if(r[7088]&4)n=0,D=143;else{s=r[6983]|0;e:do if(s){for(o=28356;I=r[o>>2]|0,!(I>>>0<=s>>>0&&(I+(r[o+4>>2]|0)|0)>>>0>s>>>0);)if(t=r[o+8>>2]|0,t)o=t;else{D=128;break e}if(n=u-f&l,n>>>0<2147483647)if(t=dt(n|0)|0,(t|0)==((r[o>>2]|0)+(r[o+4>>2]|0)|0)){if((t|0)!=-1){f=n,u=t,D=145;break A}}else o=t,D=136;else n=0}else D=128;while(!1);do if((D|0)==128)if(s=dt(0)|0,(s|0)!=-1&&(n=s,B=r[7096]|0,L=B+-1|0,n=((L&n|0)==0?0:(L+n&0-B)-n|0)+w|0,B=r[7085]|0,L=n+B|0,n>>>0>M>>>0&n>>>0<2147483647)){if(I=r[7087]|0,I|0&&L>>>0<=B>>>0|L>>>0>I>>>0){n=0;break}if(t=dt(n|0)|0,(t|0)==(s|0)){f=n,u=s,D=145;break A}else o=t,D=136}else n=0;while(!1);do if((D|0)==136){if(s=0-n|0,!(d>>>0>n>>>0&(n>>>0<2147483647&(o|0)!=-1)))if((o|0)==-1){n=0;break}else{f=n,u=o,D=145;break A}if(t=r[7097]|0,t=p-n+t&0-t,t>>>0>=2147483647){f=n,u=o,D=145;break A}if((dt(t|0)|0)==-1){dt(s|0)|0,n=0;break}else{f=t+n|0,u=o,D=145;break A}}while(!1);r[7088]=r[7088]|4,D=143}while(!1);if((D|0)==143&&w>>>0<2147483647&&(V=dt(w|0)|0,L=dt(0)|0,F=L-V|0,q=F>>>0>(M+40|0)>>>0,!((V|0)==-1|q^1|V>>>0<L>>>0&((V|0)!=-1&(L|0)!=-1)^1))&&(f=q?F:n,u=V,D=145),(D|0)==145){n=(r[7085]|0)+f|0,r[7085]=n,n>>>0>(r[7086]|0)>>>0&&(r[7086]=n),p=r[6983]|0;A:do if(p){for(n=28356;;){if(t=r[n>>2]|0,s=r[n+4>>2]|0,(u|0)==(t+s|0)){D=154;break}if(o=r[n+8>>2]|0,o)n=o;else break}if((D|0)==154&&(Q=n+4|0,(r[n+12>>2]&8|0)==0)&&u>>>0>p>>>0&t>>>0<=p>>>0){r[Q>>2]=s+f,O=(r[6980]|0)+f|0,V=p+8|0,V=(V&7|0)==0?0:0-V&7,Q=p+V|0,V=O-V|0,r[6983]=Q,r[6980]=V,r[Q+4>>2]=V|1,r[p+O+4>>2]=40,r[6984]=r[7099];break}for(u>>>0<(r[6981]|0)>>>0&&(r[6981]=u),s=u+f|0,n=28356;;){if((r[n>>2]|0)==(s|0)){D=162;break}if(t=r[n+8>>2]|0,t)n=t;else break}if((D|0)==162&&(r[n+12>>2]&8|0)==0){r[n>>2]=u,T=n+4|0,r[T>>2]=(r[T>>2]|0)+f,T=u+8|0,T=u+((T&7|0)==0?0:0-T&7)|0,n=s+8|0,n=s+((n&7|0)==0?0:0-n&7)|0,w=T+M|0,d=n-T-M|0,r[T+4>>2]=M|3;e:do if((p|0)==(n|0))O=(r[6980]|0)+d|0,r[6980]=O,r[6983]=w,r[w+4>>2]=O|1;else{if((r[6982]|0)==(n|0)){O=(r[6979]|0)+d|0,r[6979]=O,r[6982]=w,r[w+4>>2]=O|1,r[w+O>>2]=O;break}if(t=r[n+4>>2]|0,(t&3|0)==1){f=t&-8,o=t>>>3;t:do if(t>>>0<256)if(t=r[n+8>>2]|0,s=r[n+12>>2]|0,(s|0)==(t|0)){r[6977]=r[6977]&~(1<<o);break}else{r[t+12>>2]=s,r[s+8>>2]=t;break}else{u=r[n+24>>2]|0,t=r[n+12>>2]|0;do if((t|0)==(n|0)){if(s=n+16|0,o=s+4|0,t=r[o>>2]|0,t)s=o;else if(t=r[s>>2]|0,!t){t=0;break}for(;;)if(l=t+20|0,o=r[l>>2]|0,o)t=o,s=l;else if(l=t+16|0,o=r[l>>2]|0,o)t=o,s=l;else break;r[s>>2]=0}else O=r[n+8>>2]|0,r[O+12>>2]=t,r[t+8>>2]=O;while(!1);if(!u)break;s=r[n+28>>2]|0,o=28212+(s<<2)|0;do if((r[o>>2]|0)!=(n|0)){if(O=u+16|0,r[((r[O>>2]|0)==(n|0)?O:u+20|0)>>2]=t,!t)break t}else{if(r[o>>2]=t,t|0)break;r[6978]=r[6978]&~(1<<s);break t}while(!1);if(r[t+24>>2]=u,s=n+16|0,o=r[s>>2]|0,o|0&&(r[t+16>>2]=o,r[o+24>>2]=t),s=r[s+4>>2]|0,!s)break;r[t+20>>2]=s,r[s+24>>2]=t}while(!1);n=n+f|0,l=f+d|0}else l=d;if(n=n+4|0,r[n>>2]=r[n>>2]&-2,r[w+4>>2]=l|1,r[w+l>>2]=l,n=l>>>3,l>>>0<256){s=27948+(n<<1<<2)|0,t=r[6977]|0,n=1<<n,t&n?(t=s+8|0,n=r[t>>2]|0):(r[6977]=t|n,n=s,t=s+8|0),r[t>>2]=w,r[n+12>>2]=w,r[w+8>>2]=n,r[w+12>>2]=s;break}n=l>>>8;do if(!n)o=0;else{if(l>>>0>16777215){o=31;break}Q=(n+1048320|0)>>>16&8,O=n<<Q,V=(O+520192|0)>>>16&4,O=O<<V,o=(O+245760|0)>>>16&2,o=14-(V|Q|o)+(O<<o>>>15)|0,o=l>>>(o+7|0)&1|o<<1}while(!1);if(n=28212+(o<<2)|0,r[w+28>>2]=o,t=w+16|0,r[t+4>>2]=0,r[t>>2]=0,t=r[6978]|0,s=1<<o,!(t&s)){r[6978]=t|s,r[n>>2]=w,r[w+24>>2]=n,r[w+12>>2]=w,r[w+8>>2]=w;break}n=r[n>>2]|0;t:do if((r[n+4>>2]&-8|0)!=(l|0)){for(o=l<<((o|0)==31?0:25-(o>>>1)|0);s=n+16+(o>>>31<<2)|0,t=r[s>>2]|0,!!t;)if((r[t+4>>2]&-8|0)==(l|0)){n=t;break t}else o=o<<1,n=t;r[s>>2]=w,r[w+24>>2]=n,r[w+12>>2]=w,r[w+8>>2]=w;break e}while(!1);Q=n+8|0,O=r[Q>>2]|0,r[O+12>>2]=w,r[Q>>2]=w,r[w+8>>2]=O,r[w+12>>2]=n,r[w+24>>2]=0}while(!1);return O=T+8|0,E=sA,O|0}for(n=28356;t=r[n>>2]|0,!(t>>>0<=p>>>0&&(O=t+(r[n+4>>2]|0)|0,O>>>0>p>>>0));)n=r[n+8>>2]|0;l=O+-47|0,t=l+8|0,t=l+((t&7|0)==0?0:0-t&7)|0,l=p+16|0,t=t>>>0<l>>>0?p:t,n=t+8|0,s=f+-40|0,V=u+8|0,V=(V&7|0)==0?0:0-V&7,Q=u+V|0,V=s-V|0,r[6983]=Q,r[6980]=V,r[Q+4>>2]=V|1,r[u+s+4>>2]=40,r[6984]=r[7099],s=t+4|0,r[s>>2]=27,r[n>>2]=r[7089],r[n+4>>2]=r[7090],r[n+8>>2]=r[7091],r[n+12>>2]=r[7092],r[7089]=u,r[7090]=f,r[7092]=0,r[7091]=n,n=t+24|0;do Q=n,n=n+4|0,r[n>>2]=7;while((Q+8|0)>>>0<O>>>0);if((t|0)!=(p|0)){if(u=t-p|0,r[s>>2]=r[s>>2]&-2,r[p+4>>2]=u|1,r[t>>2]=u,n=u>>>3,u>>>0<256){s=27948+(n<<1<<2)|0,t=r[6977]|0,n=1<<n,t&n?(t=s+8|0,n=r[t>>2]|0):(r[6977]=t|n,n=s,t=s+8|0),r[t>>2]=p,r[n+12>>2]=p,r[p+8>>2]=n,r[p+12>>2]=s;break}if(n=u>>>8,n?u>>>0>16777215?o=31:(Q=(n+1048320|0)>>>16&8,O=n<<Q,V=(O+520192|0)>>>16&4,O=O<<V,o=(O+245760|0)>>>16&2,o=14-(V|Q|o)+(O<<o>>>15)|0,o=u>>>(o+7|0)&1|o<<1):o=0,s=28212+(o<<2)|0,r[p+28>>2]=o,r[p+20>>2]=0,r[l>>2]=0,n=r[6978]|0,t=1<<o,!(n&t)){r[6978]=n|t,r[s>>2]=p,r[p+24>>2]=s,r[p+12>>2]=p,r[p+8>>2]=p;break}n=r[s>>2]|0;e:do if((r[n+4>>2]&-8|0)!=(u|0)){for(o=u<<((o|0)==31?0:25-(o>>>1)|0);s=n+16+(o>>>31<<2)|0,t=r[s>>2]|0,!!t;)if((r[t+4>>2]&-8|0)==(u|0)){n=t;break e}else o=o<<1,n=t;r[s>>2]=p,r[p+24>>2]=n,r[p+12>>2]=p,r[p+8>>2]=p;break A}while(!1);Q=n+8|0,O=r[Q>>2]|0,r[O+12>>2]=p,r[Q>>2]=p,r[p+8>>2]=O,r[p+12>>2]=n,r[p+24>>2]=0}}else O=r[6981]|0,(O|0)==0|u>>>0<O>>>0&&(r[6981]=u),r[7089]=u,r[7090]=f,r[7092]=0,r[6986]=r[7095],r[6985]=-1,r[6990]=27948,r[6989]=27948,r[6992]=27956,r[6991]=27956,r[6994]=27964,r[6993]=27964,r[6996]=27972,r[6995]=27972,r[6998]=27980,r[6997]=27980,r[7e3]=27988,r[6999]=27988,r[7002]=27996,r[7001]=27996,r[7004]=28004,r[7003]=28004,r[7006]=28012,r[7005]=28012,r[7008]=28020,r[7007]=28020,r[7010]=28028,r[7009]=28028,r[7012]=28036,r[7011]=28036,r[7014]=28044,r[7013]=28044,r[7016]=28052,r[7015]=28052,r[7018]=28060,r[7017]=28060,r[7020]=28068,r[7019]=28068,r[7022]=28076,r[7021]=28076,r[7024]=28084,r[7023]=28084,r[7026]=28092,r[7025]=28092,r[7028]=28100,r[7027]=28100,r[7030]=28108,r[7029]=28108,r[7032]=28116,r[7031]=28116,r[7034]=28124,r[7033]=28124,r[7036]=28132,r[7035]=28132,r[7038]=28140,r[7037]=28140,r[7040]=28148,r[7039]=28148,r[7042]=28156,r[7041]=28156,r[7044]=28164,r[7043]=28164,r[7046]=28172,r[7045]=28172,r[7048]=28180,r[7047]=28180,r[7050]=28188,r[7049]=28188,r[7052]=28196,r[7051]=28196,O=f+-40|0,V=u+8|0,V=(V&7|0)==0?0:0-V&7,Q=u+V|0,V=O-V|0,r[6983]=Q,r[6980]=V,r[Q+4>>2]=V|1,r[u+O+4>>2]=40,r[6984]=r[7099];while(!1);if(n=r[6980]|0,n>>>0>M>>>0)return V=n-M|0,r[6980]=V,O=r[6983]|0,Q=O+M|0,r[6983]=Q,r[Q+4>>2]=V|1,r[O+4>>2]=M|3,O=O+8|0,E=sA,O|0}return O=Ch()|0,r[O>>2]=12,O=0,E=sA,O|0}function TA(t){t=t|0;var n=0,s=0,o=0,l=0,u=0,f=0,d=0,p=0;if(t){s=t+-8|0,l=r[6981]|0,t=r[t+-4>>2]|0,n=t&-8,p=s+n|0;do if(t&1)d=s,f=s;else{if(o=r[s>>2]|0,!(t&3)||(f=s+(0-o)|0,u=o+n|0,f>>>0<l>>>0))return;if((r[6982]|0)==(f|0)){if(t=p+4|0,n=r[t>>2]|0,(n&3|0)!=3){d=f,n=u;break}r[6979]=u,r[t>>2]=n&-2,r[f+4>>2]=u|1,r[f+u>>2]=u;return}if(s=o>>>3,o>>>0<256)if(t=r[f+8>>2]|0,n=r[f+12>>2]|0,(n|0)==(t|0)){r[6977]=r[6977]&~(1<<s),d=f,n=u;break}else{r[t+12>>2]=n,r[n+8>>2]=t,d=f,n=u;break}l=r[f+24>>2]|0,t=r[f+12>>2]|0;do if((t|0)==(f|0)){if(n=f+16|0,s=n+4|0,t=r[s>>2]|0,t)n=s;else if(t=r[n>>2]|0,!t){t=0;break}for(;;)if(o=t+20|0,s=r[o>>2]|0,s)t=s,n=o;else if(o=t+16|0,s=r[o>>2]|0,s)t=s,n=o;else break;r[n>>2]=0}else d=r[f+8>>2]|0,r[d+12>>2]=t,r[t+8>>2]=d;while(!1);if(l){if(n=r[f+28>>2]|0,s=28212+(n<<2)|0,(r[s>>2]|0)==(f|0)){if(r[s>>2]=t,!t){r[6978]=r[6978]&~(1<<n),d=f,n=u;break}}else if(d=l+16|0,r[((r[d>>2]|0)==(f|0)?d:l+20|0)>>2]=t,!t){d=f,n=u;break}r[t+24>>2]=l,n=f+16|0,s=r[n>>2]|0,s|0&&(r[t+16>>2]=s,r[s+24>>2]=t),n=r[n+4>>2]|0,n?(r[t+20>>2]=n,r[n+24>>2]=t,d=f,n=u):(d=f,n=u)}else d=f,n=u}while(!1);if(!(f>>>0>=p>>>0)&&(t=p+4|0,o=r[t>>2]|0,!!(o&1))){if(o&2)r[t>>2]=o&-2,r[d+4>>2]=n|1,r[f+n>>2]=n,l=n;else{if((r[6983]|0)==(p|0)){if(p=(r[6980]|0)+n|0,r[6980]=p,r[6983]=d,r[d+4>>2]=p|1,(d|0)!=(r[6982]|0))return;r[6982]=0,r[6979]=0;return}if((r[6982]|0)==(p|0)){p=(r[6979]|0)+n|0,r[6979]=p,r[6982]=f,r[d+4>>2]=p|1,r[f+p>>2]=p;return}l=(o&-8)+n|0,s=o>>>3;do if(o>>>0<256)if(n=r[p+8>>2]|0,t=r[p+12>>2]|0,(t|0)==(n|0)){r[6977]=r[6977]&~(1<<s);break}else{r[n+12>>2]=t,r[t+8>>2]=n;break}else{u=r[p+24>>2]|0,t=r[p+12>>2]|0;do if((t|0)==(p|0)){if(n=p+16|0,s=n+4|0,t=r[s>>2]|0,t)n=s;else if(t=r[n>>2]|0,!t){s=0;break}for(;;)if(o=t+20|0,s=r[o>>2]|0,s)t=s,n=o;else if(o=t+16|0,s=r[o>>2]|0,s)t=s,n=o;else break;r[n>>2]=0,s=t}else s=r[p+8>>2]|0,r[s+12>>2]=t,r[t+8>>2]=s,s=t;while(!1);if(u|0){if(t=r[p+28>>2]|0,n=28212+(t<<2)|0,(r[n>>2]|0)==(p|0)){if(r[n>>2]=s,!s){r[6978]=r[6978]&~(1<<t);break}}else if(o=u+16|0,r[((r[o>>2]|0)==(p|0)?o:u+20|0)>>2]=s,!s)break;r[s+24>>2]=u,t=p+16|0,n=r[t>>2]|0,n|0&&(r[s+16>>2]=n,r[n+24>>2]=s),t=r[t+4>>2]|0,t|0&&(r[s+20>>2]=t,r[t+24>>2]=s)}}while(!1);if(r[d+4>>2]=l|1,r[f+l>>2]=l,(d|0)==(r[6982]|0)){r[6979]=l;return}}if(t=l>>>3,l>>>0<256){s=27948+(t<<1<<2)|0,n=r[6977]|0,t=1<<t,n&t?(n=s+8|0,t=r[n>>2]|0):(r[6977]=n|t,t=s,n=s+8|0),r[n>>2]=d,r[t+12>>2]=d,r[d+8>>2]=t,r[d+12>>2]=s;return}t=l>>>8,t?l>>>0>16777215?o=31:(f=(t+1048320|0)>>>16&8,p=t<<f,u=(p+520192|0)>>>16&4,p=p<<u,o=(p+245760|0)>>>16&2,o=14-(u|f|o)+(p<<o>>>15)|0,o=l>>>(o+7|0)&1|o<<1):o=0,t=28212+(o<<2)|0,r[d+28>>2]=o,r[d+20>>2]=0,r[d+16>>2]=0,n=r[6978]|0,s=1<<o;A:do if(!(n&s))r[6978]=n|s,r[t>>2]=d,r[d+24>>2]=t,r[d+12>>2]=d,r[d+8>>2]=d;else{t=r[t>>2]|0;e:do if((r[t+4>>2]&-8|0)!=(l|0)){for(o=l<<((o|0)==31?0:25-(o>>>1)|0);s=t+16+(o>>>31<<2)|0,n=r[s>>2]|0,!!n;)if((r[n+4>>2]&-8|0)==(l|0)){t=n;break e}else o=o<<1,t=n;r[s>>2]=d,r[d+24>>2]=t,r[d+12>>2]=d,r[d+8>>2]=d;break A}while(!1);f=t+8|0,p=r[f>>2]|0,r[p+12>>2]=d,r[f>>2]=d,r[d+8>>2]=p,r[d+12>>2]=t,r[d+24>>2]=0}while(!1);if(p=(r[6985]|0)+-1|0,r[6985]=p,!(p|0)){for(t=28364;t=r[t>>2]|0,t;)t=t+8|0;r[6985]=-1}}}}function Me(t,n){t=t|0,n=n|0;var s=0;return t?(s=je(n,t)|0,(n|t)>>>0>65535&&(s=((s>>>0)/(t>>>0)|0|0)==(n|0)?s:-1)):s=0,t=Ye(s)|0,!t||!(r[t+-4>>2]&3)||ht(t|0,0,s|0)|0,t|0}function wA(t,n,s,o){return t=t|0,n=n|0,s=s|0,o=o|0,s=t+s>>>0,IA(n+o+(s>>>0<t>>>0|0)>>>0|0),s|0|0}function fe(t,n,s,o){return t=t|0,n=n|0,s=s|0,o=o|0,o=n-o-(s>>>0>t>>>0|0)>>>0,IA(o|0),t-s>>>0|0|0}function Vs(t){return t=t|0,(t?31-(et(t^t-1)|0)|0:32)|0}function p0(t,n,s,o,l){t=t|0,n=n|0,s=s|0,o=o|0,l=l|0;var u=0,f=0,d=0,p=0,w=0,T=0,M=0,I=0,B=0,L=0;if(T=t,p=n,w=p,f=s,I=o,d=I,!w)return u=(l|0)!=0,d?u?(r[l>>2]=t|0,r[l+4>>2]=n&0,I=0,l=0,IA(I|0),l|0):(I=0,l=0,IA(I|0),l|0):(u&&(r[l>>2]=(T>>>0)%(f>>>0),r[l+4>>2]=0),I=0,l=(T>>>0)/(f>>>0)>>>0,IA(I|0),l|0);u=(d|0)==0;do if(f){if(!u){if(u=(et(d|0)|0)-(et(w|0)|0)|0,u>>>0<=31){M=u+1|0,d=31-u|0,n=u-31>>31,f=M,t=T>>>(M>>>0)&n|w<<d,n=w>>>(M>>>0)&n,u=0,d=T<<d;break}return l?(r[l>>2]=t|0,r[l+4>>2]=p|n&0,I=0,l=0,IA(I|0),l|0):(I=0,l=0,IA(I|0),l|0)}if(u=f-1|0,u&f|0){d=(et(f|0)|0)+33-(et(w|0)|0)|0,L=64-d|0,M=32-d|0,p=M>>31,B=d-32|0,n=B>>31,f=d,t=M-1>>31&w>>>(B>>>0)|(w<<M|T>>>(d>>>0))&n,n=n&w>>>(d>>>0),u=T<<L&p,d=(w<<L|T>>>(B>>>0))&p|T<<M&d-33>>31;break}return l|0&&(r[l>>2]=u&T,r[l+4>>2]=0),(f|0)==1?(B=p|n&0,L=t|0|0,IA(B|0),L|0):(L=Vs(f|0)|0,B=w>>>(L>>>0)|0,L=w<<32-L|T>>>(L>>>0)|0,IA(B|0),L|0)}else{if(u)return l|0&&(r[l>>2]=(w>>>0)%(f>>>0),r[l+4>>2]=0),B=0,L=(w>>>0)/(f>>>0)>>>0,IA(B|0),L|0;if(!T)return l|0&&(r[l>>2]=0,r[l+4>>2]=(w>>>0)%(d>>>0)),B=0,L=(w>>>0)/(d>>>0)>>>0,IA(B|0),L|0;if(u=d-1|0,!(u&d))return l|0&&(r[l>>2]=t|0,r[l+4>>2]=u&w|n&0),B=0,L=w>>>((Vs(d|0)|0)>>>0),IA(B|0),L|0;if(u=(et(d|0)|0)-(et(w|0)|0)|0,u>>>0<=30){n=u+1|0,d=31-u|0,f=n,t=w<<d|T>>>(n>>>0),n=w>>>(n>>>0),u=0,d=T<<d;break}return l?(r[l>>2]=t|0,r[l+4>>2]=p|n&0,B=0,L=0,IA(B|0),L|0):(B=0,L=0,IA(B|0),L|0)}while(!1);if(!f)w=d,p=0,d=0;else{M=s|0|0,T=I|o&0,w=wA(M|0,T|0,-1,-1)|0,s=S()|0,p=d,d=0;do o=p,p=u>>>31|p<<1,u=d|u<<1,o=t<<1|o>>>31|0,I=t>>>31|n<<1|0,fe(w|0,s|0,o|0,I|0)|0,L=S()|0,B=L>>31|((L|0)<0?-1:0)<<1,d=B&1,t=fe(o|0,I|0,B&M|0,(((L|0)<0?-1:0)>>31|((L|0)<0?-1:0)<<1)&T|0)|0,n=S()|0,f=f-1|0;while((f|0)!=0);w=p,p=0}return f=0,l|0&&(r[l>>2]=t,r[l+4>>2]=n),B=(u|0)>>>31|(w|f)<<1|(f<<1|u>>>31)&0|p,L=(u<<1|0)&-2|d,IA(B|0),L|0}function ft(t,n,s,o){t=t|0,n=n|0,s=s|0,o=o|0;var l=0,u=0,f=0,d=0,p=0,w=0;return w=n>>31|((n|0)<0?-1:0)<<1,p=((n|0)<0?-1:0)>>31|((n|0)<0?-1:0)<<1,u=o>>31|((o|0)<0?-1:0)<<1,l=((o|0)<0?-1:0)>>31|((o|0)<0?-1:0)<<1,d=fe(w^t|0,p^n|0,w|0,p|0)|0,f=S()|0,t=u^w,n=l^p,fe((p0(d,f,fe(u^s|0,l^o|0,u|0,l|0)|0,S()|0,0)|0)^t|0,(S()|0)^n|0,t|0,n|0)|0}function Sh(t,n){t=t|0,n=n|0;var s=0,o=0,l=0,u=0;return u=t&65535,l=n&65535,s=je(l,u)|0,o=t>>>16,t=(s>>>16)+(je(l,o)|0)|0,l=n>>>16,n=je(l,u)|0,IA((t>>>16)+(je(l,o)|0)+(((t&65535)+n|0)>>>16)|0),t+n<<16|s&65535|0|0}function le(t,n,s,o){t=t|0,n=n|0,s=s|0,o=o|0;var l=0,u=0;return l=t,u=s,s=Sh(l,u)|0,t=S()|0,IA((je(n,u)|0)+(je(o,l)|0)+t|t&0|0),s|0|0|0}function zt(t,n,s,o){t=t|0,n=n|0,s=s|0,o=o|0;var l=0,u=0,f=0,d=0,p=0,w=0;return l=E,E=E+16|0,d=l|0,f=n>>31|((n|0)<0?-1:0)<<1,u=((n|0)<0?-1:0)>>31|((n|0)<0?-1:0)<<1,w=o>>31|((o|0)<0?-1:0)<<1,p=((o|0)<0?-1:0)>>31|((o|0)<0?-1:0)<<1,t=fe(f^t|0,u^n|0,f|0,u|0)|0,n=S()|0,p0(t,n,fe(w^s|0,p^o|0,w|0,p|0)|0,S()|0,d)|0,o=fe(r[d>>2]^f|0,r[d+4>>2]^u|0,f|0,u|0)|0,s=S()|0,E=l,IA(s|0),o|0}function Gt(t,n,s,o){t=t|0,n=n|0,s=s|0,o=o|0;var l=0,u=0;return u=E,E=E+16|0,l=u|0,p0(t,n,s,o,l)|0,E=u,IA(r[l+4>>2]|0),r[l>>2]|0|0}function zs(t,n,s){return t=t|0,n=n|0,s=s|0,(s|0)<32?(IA(n>>s|0),t>>>s|(n&(1<<s)-1)<<32-s):(IA(((n|0)<0?-1:0)|0),n>>s-32|0)}function AA(t,n,s){return t=t|0,n=n|0,s=s|0,(s|0)<32?(IA(n>>>s|0),t>>>s|(n&(1<<s)-1)<<32-s):(IA(0),n>>>s-32|0)}function oA(t,n,s){return t=t|0,n=n|0,s=s|0,(s|0)<32?(IA(n<<s|(t&(1<<s)-1<<32-s)>>>32-s|0),t<<s):(IA(t<<s-32|0),0)}function Gs(t,n,s){return t=t|0,n=n|0,n=et(n)|0,(n|0)==32&&(n=n+(et(t)|0)|0),IA(0),n|0}function qs(t,n){return t=+t,n=+n,t!=t?+n:n!=n?+t:+Rc(+t,+n)}function Qr(t,n){return t=+t,n=+n,t!=t?+n:n!=n?+t:+Hn(+t,+n)}function Vr(t){return t=+t,t>=0?+oe(t+.5):+kt(t-.5)}function qt(t,n,s){t=t|0,n=n|0,s=s|0;var o=0,l=0,u=0;if((s|0)>=8192)return Oc(t|0,n|0,s|0)|0,t|0;if(u=t|0,l=t+s|0,(t&3)==(n&3)){for(;t&3;){if(!s)return u|0;eA[t>>0]=eA[n>>0]|0,t=t+1|0,n=n+1|0,s=s-1|0}for(s=l&-4|0,o=s-64|0;(t|0)<=(o|0);)r[t>>2]=r[n>>2],r[t+4>>2]=r[n+4>>2],r[t+8>>2]=r[n+8>>2],r[t+12>>2]=r[n+12>>2],r[t+16>>2]=r[n+16>>2],r[t+20>>2]=r[n+20>>2],r[t+24>>2]=r[n+24>>2],r[t+28>>2]=r[n+28>>2],r[t+32>>2]=r[n+32>>2],r[t+36>>2]=r[n+36>>2],r[t+40>>2]=r[n+40>>2],r[t+44>>2]=r[n+44>>2],r[t+48>>2]=r[n+48>>2],r[t+52>>2]=r[n+52>>2],r[t+56>>2]=r[n+56>>2],r[t+60>>2]=r[n+60>>2],t=t+64|0,n=n+64|0;for(;(t|0)<(s|0);)r[t>>2]=r[n>>2],t=t+4|0,n=n+4|0}else for(s=l-4|0;(t|0)<(s|0);)eA[t>>0]=eA[n>>0]|0,eA[t+1>>0]=eA[n+1>>0]|0,eA[t+2>>0]=eA[n+2>>0]|0,eA[t+3>>0]=eA[n+3>>0]|0,t=t+4|0,n=n+4|0;for(;(t|0)<(l|0);)eA[t>>0]=eA[n>>0]|0,t=t+1|0,n=n+1|0;return u|0}function ht(t,n,s){t=t|0,n=n|0,s=s|0;var o=0,l=0,u=0,f=0;if(u=t+s|0,n=n&255,(s|0)>=67){for(;t&3;)eA[t>>0]=n,t=t+1|0;for(o=u&-4|0,f=n|n<<8|n<<16|n<<24,l=o-64|0;(t|0)<=(l|0);)r[t>>2]=f,r[t+4>>2]=f,r[t+8>>2]=f,r[t+12>>2]=f,r[t+16>>2]=f,r[t+20>>2]=f,r[t+24>>2]=f,r[t+28>>2]=f,r[t+32>>2]=f,r[t+36>>2]=f,r[t+40>>2]=f,r[t+44>>2]=f,r[t+48>>2]=f,r[t+52>>2]=f,r[t+56>>2]=f,r[t+60>>2]=f,t=t+64|0;for(;(t|0)<(o|0);)r[t>>2]=f,t=t+4|0}for(;(t|0)<(u|0);)eA[t>>0]=n,t=t+1|0;return u-s|0}function Hs(t){return t=+t,t>=0?+oe(t+.5):+kt(t-.5)}function dt(t){t=t|0;var n=0,s=0,o=0;return o=Dc()|0,s=r[WA>>2]|0,n=s+t|0,(t|0)>0&(n|0)<(s|0)|(n|0)<0?(Fc(n|0)|0,As(12),-1):(n|0)>(o|0)&&!(kc(n|0)|0)?(As(12),-1):(r[WA>>2]=n,s|0)}return{___divdi3:ft,___muldi3:le,___remdi3:zt,___uremdi3:Gt,_areNeighborCells:pf,_bitshift64Ashr:zs,_bitshift64Lshr:AA,_bitshift64Shl:oA,_calloc:Me,_cellAreaKm2:Wf,_cellAreaM2:Yf,_cellAreaRads2:f0,_cellToBoundary:Qt,_cellToCenterChild:bs,_cellToChildPos:Ff,_cellToChildren:Bf,_cellToChildrenSize:fr,_cellToLatLng:bt,_cellToLocalIj:eh,_cellToParent:n0,_cellToVertex:ke,_cellToVertexes:Th,_cellsToDirectedEdge:mf,_cellsToLinkedMultiPolygon:Xc,_childPosToCell:Uf,_compactCells:Lf,_destroyLinkedMultiPolygon:Is,_directedEdgeToBoundary:Or,_directedEdgeToCells:vf,_edgeLengthKm:Xf,_edgeLengthM:Jf,_edgeLengthRads:Zf,_emscripten_replace_memory:Uc,_free:TA,_getBaseCellNumber:vs,_getDirectedEdgeDestination:yf,_getDirectedEdgeOrigin:wf,_getHexagonAreaAvgKm2:Cs,_getHexagonAreaAvgM2:qf,_getHexagonEdgeLengthAvgKm:Hf,_getHexagonEdgeLengthAvgM:jf,_getIcosahedronFaces:Es,_getNumCells:kr,_getPentagons:l0,_getRes0Cells:ef,_getResolution:If,_greatCircleDistanceKm:dr,_greatCircleDistanceM:Vf,_greatCircleDistanceRads:Qf,_gridDisk:es,_gridDiskDistances:ts,_gridDistance:rh,_gridPathCells:ih,_gridPathCellsSize:nh,_gridRing:Hc,_gridRingUnsafe:ns,_i64Add:wA,_i64Subtract:fe,_isPentagon:JA,_isResClassIII:Nf,_isValidCell:t0,_isValidDirectedEdge:Tf,_isValidVertex:_h,_latLngToCell:o0,_llvm_ctlz_i64:Gs,_llvm_maxnum_f64:qs,_llvm_minnum_f64:Qr,_llvm_round_f64:Vr,_localIjToCell:th,_malloc:Ye,_maxFaceCount:Of,_maxGridDiskSize:qc,_maxPolygonToCellsSize:Wc,_maxPolygonToCellsSizeExperimental:ah,_memcpy:qt,_memset:ht,_originToDirectedEdges:_f,_pentagonCount:kf,_polygonToCells:Yc,_polygonToCellsExperimental:oh,_readInt64AsDoubleFromPointer:ph,_res0CellCount:Af,_round:Hs,_sbrk:dt,_sizeOfCellBoundary:ch,_sizeOfCoordIJ:gh,_sizeOfGeoLoop:fh,_sizeOfGeoPolygon:hh,_sizeOfH3Index:lh,_sizeOfLatLng:uh,_sizeOfLinkedGeoPolygon:dh,_uncompactCells:Pf,_uncompactCellsSize:xf,_vertexToLatLng:vh,establishStackSpace:Gc,stackAlloc:Qc,stackRestore:zc,stackSave:Vc}})(Ic,Bc,x);A.___divdi3=nA.___divdi3,A.___muldi3=nA.___muldi3,A.___remdi3=nA.___remdi3,A.___uremdi3=nA.___uremdi3,A._areNeighborCells=nA._areNeighborCells,A._bitshift64Ashr=nA._bitshift64Ashr,A._bitshift64Lshr=nA._bitshift64Lshr,A._bitshift64Shl=nA._bitshift64Shl,A._calloc=nA._calloc,A._cellAreaKm2=nA._cellAreaKm2,A._cellAreaM2=nA._cellAreaM2,A._cellAreaRads2=nA._cellAreaRads2,A._cellToBoundary=nA._cellToBoundary,A._cellToCenterChild=nA._cellToCenterChild,A._cellToChildPos=nA._cellToChildPos,A._cellToChildren=nA._cellToChildren,A._cellToChildrenSize=nA._cellToChildrenSize,A._cellToLatLng=nA._cellToLatLng,A._cellToLocalIj=nA._cellToLocalIj,A._cellToParent=nA._cellToParent,A._cellToVertex=nA._cellToVertex,A._cellToVertexes=nA._cellToVertexes,A._cellsToDirectedEdge=nA._cellsToDirectedEdge,A._cellsToLinkedMultiPolygon=nA._cellsToLinkedMultiPolygon,A._childPosToCell=nA._childPosToCell,A._compactCells=nA._compactCells,A._destroyLinkedMultiPolygon=nA._destroyLinkedMultiPolygon,A._directedEdgeToBoundary=nA._directedEdgeToBoundary,A._directedEdgeToCells=nA._directedEdgeToCells,A._edgeLengthKm=nA._edgeLengthKm,A._edgeLengthM=nA._edgeLengthM,A._edgeLengthRads=nA._edgeLengthRads;var Lc=A._emscripten_replace_memory=nA._emscripten_replace_memory;A._free=nA._free,A._getBaseCellNumber=nA._getBaseCellNumber,A._getDirectedEdgeDestination=nA._getDirectedEdgeDestination,A._getDirectedEdgeOrigin=nA._getDirectedEdgeOrigin,A._getHexagonAreaAvgKm2=nA._getHexagonAreaAvgKm2,A._getHexagonAreaAvgM2=nA._getHexagonAreaAvgM2,A._getHexagonEdgeLengthAvgKm=nA._getHexagonEdgeLengthAvgKm,A._getHexagonEdgeLengthAvgM=nA._getHexagonEdgeLengthAvgM,A._getIcosahedronFaces=nA._getIcosahedronFaces,A._getNumCells=nA._getNumCells,A._getPentagons=nA._getPentagons,A._getRes0Cells=nA._getRes0Cells,A._getResolution=nA._getResolution,A._greatCircleDistanceKm=nA._greatCircleDistanceKm,A._greatCircleDistanceM=nA._greatCircleDistanceM,A._greatCircleDistanceRads=nA._greatCircleDistanceRads,A._gridDisk=nA._gridDisk,A._gridDiskDistances=nA._gridDiskDistances,A._gridDistance=nA._gridDistance,A._gridPathCells=nA._gridPathCells,A._gridPathCellsSize=nA._gridPathCellsSize,A._gridRing=nA._gridRing,A._gridRingUnsafe=nA._gridRingUnsafe,A._i64Add=nA._i64Add,A._i64Subtract=nA._i64Subtract,A._isPentagon=nA._isPentagon,A._isResClassIII=nA._isResClassIII,A._isValidCell=nA._isValidCell,A._isValidDirectedEdge=nA._isValidDirectedEdge,A._isValidVertex=nA._isValidVertex,A._latLngToCell=nA._latLngToCell,A._llvm_ctlz_i64=nA._llvm_ctlz_i64,A._llvm_maxnum_f64=nA._llvm_maxnum_f64,A._llvm_minnum_f64=nA._llvm_minnum_f64,A._llvm_round_f64=nA._llvm_round_f64,A._localIjToCell=nA._localIjToCell,A._malloc=nA._malloc,A._maxFaceCount=nA._maxFaceCount,A._maxGridDiskSize=nA._maxGridDiskSize,A._maxPolygonToCellsSize=nA._maxPolygonToCellsSize,A._maxPolygonToCellsSizeExperimental=nA._maxPolygonToCellsSizeExperimental,A._memcpy=nA._memcpy,A._memset=nA._memset,A._originToDirectedEdges=nA._originToDirectedEdges,A._pentagonCount=nA._pentagonCount,A._polygonToCells=nA._polygonToCells,A._polygonToCellsExperimental=nA._polygonToCellsExperimental,A._readInt64AsDoubleFromPointer=nA._readInt64AsDoubleFromPointer,A._res0CellCount=nA._res0CellCount,A._round=nA._round,A._sbrk=nA._sbrk,A._sizeOfCellBoundary=nA._sizeOfCellBoundary,A._sizeOfCoordIJ=nA._sizeOfCoordIJ,A._sizeOfGeoLoop=nA._sizeOfGeoLoop,A._sizeOfGeoPolygon=nA._sizeOfGeoPolygon,A._sizeOfH3Index=nA._sizeOfH3Index,A._sizeOfLatLng=nA._sizeOfLatLng,A._sizeOfLinkedGeoPolygon=nA._sizeOfLinkedGeoPolygon,A._uncompactCells=nA._uncompactCells,A._uncompactCellsSize=nA._uncompactCellsSize,A._vertexToLatLng=nA._vertexToLatLng,A.establishStackSpace=nA.establishStackSpace;var Xi=A.stackAlloc=nA.stackAlloc,Pc=A.stackRestore=nA.stackRestore,xc=A.stackSave=nA.stackSave;if(A.asm=nA,A.cwrap=rA,A.setValue=N,A.getValue=Y,At){Yi(At)||(At=h(At));{mc();var zn=function(W){W.byteLength&&(W=new Uint8Array(W)),J.set(W,P),A.memoryInitializerRequest&&delete A.memoryInitializerRequest.response,wc()},Ji=function(){g(At,zn,function(){throw"could not load memory initializer "+At})},Ki=Vn(At);if(Ki)zn(Ki.buffer);else if(A.memoryInitializerRequest){var $i=function(){var W=A.memoryInitializerRequest,K=W.response;if(W.status!==200&&W.status!==0){var cA=Vn(A.memoryInitializerRequestURL);if(cA)K=cA.buffer;else{console.warn("a problem seems to have happened with Module.memoryInitializerRequest, status: "+W.status+", retrying "+At),Ji();return}}zn(K)};A.memoryInitializerRequest.response?setTimeout($i,0):A.memoryInitializerRequest.addEventListener("load",$i)}else Ji()}}var Pr;ur=function W(){Pr||Gn(),Pr||(ur=W)};function Gn(W){if(wt>0||(oc(),wt>0))return;function K(){Pr||(Pr=!0,!Z&&(ac(),lc(),A.onRuntimeInitialized&&A.onRuntimeInitialized(),uc()))}A.setStatus?(A.setStatus("Running..."),setTimeout(function(){setTimeout(function(){A.setStatus("")},1),K()},1)):K()}A.run=Gn;function Ot(W){throw A.onAbort&&A.onAbort(W),W+="",m(W),y(W),Z=!0,"abort("+W+"). Build with -s ASSERTIONS=1 for more info."}if(A.abort=Ot,A.preInit)for(typeof A.preInit=="function"&&(A.preInit=[A.preInit]);A.preInit.length>0;)A.preInit.pop()();return Gn(),e})(typeof qA=="object"?qA:{}),CA="number",vA=CA,wr=CA,EA=CA,MA=CA,ue=CA,hA=CA,Zg=[["sizeOfH3Index",CA],["sizeOfLatLng",CA],["sizeOfCellBoundary",CA],["sizeOfGeoLoop",CA],["sizeOfGeoPolygon",CA],["sizeOfLinkedGeoPolygon",CA],["sizeOfCoordIJ",CA],["readInt64AsDoubleFromPointer",CA],["isValidCell",wr,[EA,MA]],["latLngToCell",vA,[CA,CA,ue,hA]],["cellToLatLng",vA,[EA,MA,hA]],["cellToBoundary",vA,[EA,MA,hA]],["maxGridDiskSize",vA,[CA,hA]],["gridDisk",vA,[EA,MA,CA,hA]],["gridDiskDistances",vA,[EA,MA,CA,hA,hA]],["gridRing",vA,[EA,MA,CA,hA]],["gridRingUnsafe",vA,[EA,MA,CA,hA]],["maxPolygonToCellsSize",vA,[hA,ue,CA,hA]],["polygonToCells",vA,[hA,ue,CA,hA]],["maxPolygonToCellsSizeExperimental",vA,[hA,ue,CA,hA]],["polygonToCellsExperimental",vA,[hA,ue,CA,CA,CA,hA]],["cellsToLinkedMultiPolygon",vA,[hA,CA,hA]],["destroyLinkedMultiPolygon",null,[hA]],["compactCells",vA,[hA,hA,CA,CA]],["uncompactCells",vA,[hA,CA,CA,hA,CA,ue]],["uncompactCellsSize",vA,[hA,CA,CA,ue,hA]],["isPentagon",wr,[EA,MA]],["isResClassIII",wr,[EA,MA]],["getBaseCellNumber",CA,[EA,MA]],["getResolution",CA,[EA,MA]],["maxFaceCount",vA,[EA,MA,hA]],["getIcosahedronFaces",vA,[EA,MA,hA]],["cellToParent",vA,[EA,MA,ue,hA]],["cellToChildren",vA,[EA,MA,ue,hA]],["cellToCenterChild",vA,[EA,MA,ue,hA]],["cellToChildrenSize",vA,[EA,MA,ue,hA]],["cellToChildPos",vA,[EA,MA,ue,hA]],["childPosToCell",vA,[CA,CA,EA,MA,ue,hA]],["areNeighborCells",vA,[EA,MA,EA,MA,hA]],["cellsToDirectedEdge",vA,[EA,MA,EA,MA,hA]],["getDirectedEdgeOrigin",vA,[EA,MA,hA]],["getDirectedEdgeDestination",vA,[EA,MA,hA]],["isValidDirectedEdge",wr,[EA,MA]],["directedEdgeToCells",vA,[EA,MA,hA]],["originToDirectedEdges",vA,[EA,MA,hA]],["directedEdgeToBoundary",vA,[EA,MA,hA]],["gridDistance",vA,[EA,MA,EA,MA,hA]],["gridPathCells",vA,[EA,MA,EA,MA,hA]],["gridPathCellsSize",vA,[EA,MA,EA,MA,hA]],["cellToLocalIj",vA,[EA,MA,EA,MA,CA,hA]],["localIjToCell",vA,[EA,MA,hA,CA,hA]],["getHexagonAreaAvgM2",vA,[ue,hA]],["getHexagonAreaAvgKm2",vA,[ue,hA]],["getHexagonEdgeLengthAvgM",vA,[ue,hA]],["getHexagonEdgeLengthAvgKm",vA,[ue,hA]],["greatCircleDistanceM",CA,[hA,hA]],["greatCircleDistanceKm",CA,[hA,hA]],["greatCircleDistanceRads",CA,[hA,hA]],["cellAreaM2",vA,[EA,MA,hA]],["cellAreaKm2",vA,[EA,MA,hA]],["cellAreaRads2",vA,[EA,MA,hA]],["edgeLengthM",vA,[EA,MA,hA]],["edgeLengthKm",vA,[EA,MA,hA]],["edgeLengthRads",vA,[EA,MA,hA]],["getNumCells",vA,[ue,hA]],["getRes0Cells",vA,[hA]],["res0CellCount",CA],["getPentagons",vA,[CA,hA]],["pentagonCount",CA],["cellToVertex",vA,[EA,MA,CA,hA]],["cellToVertexes",vA,[EA,MA,hA]],["vertexToLatLng",vA,[EA,MA,hA]],["isValidVertex",wr,[EA,MA]]],Xg=0,Jg=1,Kg=2,$g=3,Yl=4,Ap=5,ep=6,tp=7,rp=8,np=9,ip=10,sp=11,op=12,ap=13,lp=14,up=15,ge={};ge[Xg]="Success";ge[Jg]="The operation failed but a more specific error is not available";ge[Kg]="Argument was outside of acceptable range";ge[$g]="Latitude or longitude arguments were outside of acceptable range";ge[Yl]="Resolution argument was outside of acceptable range";ge[Ap]="Cell argument was not valid";ge[ep]="Directed edge argument was not valid";ge[tp]="Undirected edge argument was not valid";ge[rp]="Vertex argument was not valid";ge[np]="Pentagon distortion was encountered";ge[ip]="Duplicate input";ge[sp]="Cell arguments were not neighbors";ge[op]="Cell arguments had incompatible resolutions";ge[ap]="Memory allocation failed";ge[lp]="Bounds of provided memory were insufficient";ge[up]="Mode or flags argument was not valid";var Zl=1e3,cp=1001,Xl=1002,Nn={};Nn[Zl]="Unknown unit";Nn[cp]="Array length out of bounds";Nn[Xl]="Got unexpected null value for H3 index";var fp="Unknown error";function Jl(e,A,i){var a=i&&"value"in i,c=new Error((e[A]||fp)+" (code: "+A+(a?", value: "+i.value:"")+")");return c.code=A,c}function Kl(e,A){var i=arguments.length===2?{value:A}:{};return Jl(ge,e,i)}function $l(e,A){var i=arguments.length===2?{value:A}:{};return Jl(Nn,e,i)}function Pt(e){if(e!==0)throw Kl(e)}var se={};Zg.forEach(function(A){se[A[0]]=qA.cwrap.apply(qA,A)});var Xt=16,Au=4,mo=4,mt=8,hp=8,_n=se.sizeOfH3Index(),eu=se.sizeOfLatLng(),dp=se.sizeOfCellBoundary();se.sizeOfGeoPolygon();se.sizeOfGeoLoop();var gp=se.sizeOfLinkedGeoPolygon();se.sizeOfCoordIJ();var wo={m:"m",m2:"m2",km:"km",km2:"km2",rads:"rads",rads2:"rads2"};function pp(e){if(typeof e!="number"||e<0||e>15||Math.floor(e)!==e)throw Kl(Yl,e);return e}function mp(e){if(!e)throw $l(Xl);return e}var wp=/[^0-9a-fA-F]/;function xt(e){if(Array.isArray(e)&&e.length===2&&Number.isInteger(e[0])&&Number.isInteger(e[1]))return e;if(typeof e!="string"||wp.test(e))return[0,0];var A=parseInt(e.substring(0,e.length-8),Xt),i=parseInt(e.substring(e.length-8),Xt);return[i,A]}function yo(e){if(e>=0)return e.toString(Xt);e=e&2147483647;var A=tu(8,e.toString(Xt)),i=(parseInt(A[0],Xt)+8).toString(Xt);return A=i+A.substring(1),A}function yp(e,A){return yo(A)+tu(8,yo(e))}function tu(e,A){for(var i=e-A.length,a="",c=0;c<i;c++)a+="0";return a=a+A,a}function Tp(e,A){A===void 0&&(A=0);var i=qA.getValue(e+_n*A,"i32"),a=qA.getValue(e+_n*A+Au,"i32");return a?yp(i,a):null}function vp(e,A){return A===void 0&&(A=0),qA.getValue(e+mt*A,"double")}function _p(e){return se.readInt64AsDoubleFromPointer(e)}function bp(e,A,i){qA.HEAPU32.set(xt(e),A/Au+2*i)}function Ep(e,A){for(var i=A.length,a=0;a<i;a++)bp(A[a],e,a)}function bn(e){return Op(qA.getValue(e,"double"))}function Mp(e){return[bn(e),bn(e+mt)]}function ru(e){return[bn(e+mt),bn(e)]}function Cp(e,A,i){for(var a=qA.getValue(e,"i32"),c=e+mt,h=[],g=ru,m=0;m<a*2;m+=2)h.push(g(c+mt*m));return h.push(h[0]),h}function Sp(e,A){for(var i=[],a=ru,c,h,g,m;e;){for(i.push(c=[]),h=qA.getValue(e,"i8*");h;){for(c.push(g=[]),m=qA.getValue(h,"i8*");m;)g.push(a(m)),m=qA.getValue(m+mt*2,"i8*");g.push(g[0]),h=qA.getValue(h+mo*2,"i8*")}e=qA.getValue(e+mo*2,"i8*")}return i}function Ip(e){var A=xt(e),i=A[0],a=A[1];return!!se.isPentagon(i,a)}function Bp(e){var A=xt(e),i=A[0],a=A[1];return se.isValidCell(i,a)?se.getResolution(i,a):-1}function Lp(e,A,i){var a=qA._malloc(eu);qA.HEAPF64.set([e,A].map(Dp),a/mt);var c=qA._malloc(_n);try{return Pt(se.latLngToCell(a,i,c)),mp(Tp(c))}finally{qA._free(c),qA._free(a)}}function Bi(e){var A=qA._malloc(eu),i=xt(e),a=i[0],c=i[1];try{return Pt(se.cellToLatLng(a,c,A)),Mp(A)}finally{qA._free(A)}}function Pp(e,A){var i=qA._malloc(dp),a=xt(e),c=a[0],h=a[1];try{return Pt(se.cellToBoundary(c,h,i)),Cp(i,A,A)}finally{qA._free(i)}}function xp(e,A){if(!e||!e.length)return[];var i=e.length,a=qA._calloc(i,_n);Ep(a,e);var c=qA._calloc(gp);try{return Pt(se.cellsToLinkedMultiPolygon(a,i,c)),Sp(c,A)}finally{se.destroyLinkedMultiPolygon(c),qA._free(c),qA._free(a)}}function Np(e,A){var i=xt(e),a=i[0],c=i[1],h=xt(A),g=h[0],m=h[1],y=qA._malloc(hp);try{return Pt(se.gridDistance(a,c,g,m,y)),_p(y)}finally{qA._free(y)}}function Rp(e,A){pp(e);var i=qA._malloc(mt);try{switch(A){case wo.m:Pt(se.getHexagonEdgeLengthAvgM(e,i));break;case wo.km:Pt(se.getHexagonEdgeLengthAvgKm(e,i));break;default:throw $l(Zl,A)}return vp(i)}finally{qA._free(i)}}function Dp(e){return e*Math.PI/180}function Op(e){return e*180/Math.PI}function Li(e,A){A=A===void 0?e[0][0]:A;for(const i of e){const a=i[0]-A;a>180?i[0]-=360:a<-180&&(i[0]+=360)}}function kp(e,A,i){const[a,c]=Bi(e),h=A.length;Li(A,c);const g=A[0]===A[h-1]?h-1:h;for(let m=0;m<g;m++)A[m][0]=mn(c,A[m][0],i),A[m][1]=mn(a,A[m][1],i)}function Fp(e,A,i){const a=e(A,i),[c,h]=Bi(a);return[h,c]}function To(e,A=1){const i=Pp(e,!0);return A!==1?kp(e,i,A):Li(i),i}function nu(e){const A=new Float64Array(e.length*2);let i=0;for(const a of e)A[i++]=a[0],A[i++]=a[1];return A}const Up={getPentagon:{type:"accessor",value:e=>e.pentagon}};class iu extends Nt{indexToBounds(){const{data:A,getPentagon:i}=this.props;return{data:A,_normalize:!1,_windingOrder:"CCW",positionFormat:"XY",getPolygon:(a,c)=>{const h=i(a,c),g=Wg(typeof h=="string"?Yg(h):h,{closedRing:!0,segments:"auto"});return nu(g)}}}}iu.layerName="A5Layer";iu.defaultProps=Up;function Qp(e){return typeof e=="string"?e.charAt(0).toLowerCase()+e.slice(1):e}function oi(e){if(Array.isArray(e))return e.map(A=>oi(A));if(e&&typeof e=="object"){const A={};for(const[i,a]of Object.entries(e))A[Qp(i)]=oi(a);return A}return e}var T0={},v0={},vo;function Pi(){return vo||(vo=1,(function(e){const A=":A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",i=A+"\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040",a="["+A+"]["+i+"]*",c=new RegExp("^"+a+"$"),h=function(m,y){const v=[];let _=y.exec(m);for(;_;){const C=[];C.startIndex=y.lastIndex-_[0].length;const P=_.length;for(let N=0;N<P;N++)C.push(_[N]);v.push(C),_=y.exec(m)}return v},g=function(m){const y=c.exec(m);return!(y===null||typeof y>"u")};e.isExist=function(m){return typeof m<"u"},e.isEmptyObject=function(m){return Object.keys(m).length===0},e.merge=function(m,y,v){if(y){const _=Object.keys(y),C=_.length;for(let P=0;P<C;P++)v==="strict"?m[_[P]]=[y[_[P]]]:m[_[P]]=y[_[P]]}},e.getValue=function(m){return e.isExist(m)?m:""},e.isName=g,e.getAllMatches=h,e.nameRegexp=a})(v0)),v0}var _o;function su(){if(_o)return T0;_o=1;const e=Pi(),A={allowBooleanAttributes:!1,unpairedTags:[]};T0.validate=function(R,z){z=Object.assign({},A,z);const rA=[];let mA=!1,G=!1;R[0]==="\uFEFF"&&(R=R.substr(1));for(let j=0;j<R.length;j++)if(R[j]==="<"&&R[j+1]==="?"){if(j+=2,j=a(R,j),j.err)return j}else if(R[j]==="<"){let $=j;if(j++,R[j]==="!"){j=c(R,j);continue}else{let lA=!1;R[j]==="/"&&(lA=!0,j++);let U="";for(;j<R.length&&R[j]!==">"&&R[j]!==" "&&R[j]!==" "&&R[j]!==`
|
|
2
|
+
`&&R[j]!=="\r";j++)U+=R[j];if(U=U.trim(),U[U.length-1]==="/"&&(U=U.substring(0,U.length-1),j--),!Y(U)){let X;return U.trim().length===0?X="Invalid space after '<'.":X="Tag '"+U+"' is an invalid name.",P("InvalidTag",X,Z(R,j))}const k=m(R,j);if(k===!1)return P("InvalidAttr","Attributes for '"+U+"' have open quote.",Z(R,j));let x=k.value;if(j=k.index,x[x.length-1]==="/"){const X=j-x.length;x=x.substring(0,x.length-1);const J=v(x,z);if(J===!0)mA=!0;else return P(J.err.code,J.err.msg,Z(R,X+J.err.line))}else if(lA)if(k.tagClosed){if(x.trim().length>0)return P("InvalidTag","Closing tag '"+U+"' can't have attributes or invalid starting.",Z(R,$));if(rA.length===0)return P("InvalidTag","Closing tag '"+U+"' has not been opened.",Z(R,$));{const X=rA.pop();if(U!==X.tagName){let J=Z(R,X.tagStartPos);return P("InvalidTag","Expected closing tag '"+X.tagName+"' (opened in line "+J.line+", col "+J.col+") instead of closing tag '"+U+"'.",Z(R,$))}rA.length==0&&(G=!0)}}else return P("InvalidTag","Closing tag '"+U+"' doesn't have proper closing.",Z(R,j));else{const X=v(x,z);if(X!==!0)return P(X.err.code,X.err.msg,Z(R,j-x.length+X.err.line));if(G===!0)return P("InvalidXml","Multiple possible root nodes found.",Z(R,j));z.unpairedTags.indexOf(U)!==-1||rA.push({tagName:U,tagStartPos:$}),mA=!0}for(j++;j<R.length;j++)if(R[j]==="<")if(R[j+1]==="!"){j++,j=c(R,j);continue}else if(R[j+1]==="?"){if(j=a(R,++j),j.err)return j}else break;else if(R[j]==="&"){const X=C(R,j);if(X==-1)return P("InvalidChar","char '&' is not expected.",Z(R,j));j=X}else if(G===!0&&!i(R[j]))return P("InvalidXml","Extra text at the end",Z(R,j));R[j]==="<"&&j--}}else{if(i(R[j]))continue;return P("InvalidChar","char '"+R[j]+"' is not expected.",Z(R,j))}if(mA){if(rA.length==1)return P("InvalidTag","Unclosed tag '"+rA[0].tagName+"'.",Z(R,rA[0].tagStartPos));if(rA.length>0)return P("InvalidXml","Invalid '"+JSON.stringify(rA.map(j=>j.tagName),null,4).replace(/\r?\n/g,"")+"' found.",{line:1,col:1})}else return P("InvalidXml","Start tag expected.",1);return!0};function i(R){return R===" "||R===" "||R===`
|
|
3
|
+
`||R==="\r"}function a(R,z){const rA=z;for(;z<R.length;z++)if(R[z]=="?"||R[z]==" "){const mA=R.substr(rA,z-rA);if(z>5&&mA==="xml")return P("InvalidXml","XML declaration allowed only at the start of the document.",Z(R,z));if(R[z]=="?"&&R[z+1]==">"){z++;break}else continue}return z}function c(R,z){if(R.length>z+5&&R[z+1]==="-"&&R[z+2]==="-"){for(z+=3;z<R.length;z++)if(R[z]==="-"&&R[z+1]==="-"&&R[z+2]===">"){z+=2;break}}else if(R.length>z+8&&R[z+1]==="D"&&R[z+2]==="O"&&R[z+3]==="C"&&R[z+4]==="T"&&R[z+5]==="Y"&&R[z+6]==="P"&&R[z+7]==="E"){let rA=1;for(z+=8;z<R.length;z++)if(R[z]==="<")rA++;else if(R[z]===">"&&(rA--,rA===0))break}else if(R.length>z+9&&R[z+1]==="["&&R[z+2]==="C"&&R[z+3]==="D"&&R[z+4]==="A"&&R[z+5]==="T"&&R[z+6]==="A"&&R[z+7]==="["){for(z+=8;z<R.length;z++)if(R[z]==="]"&&R[z+1]==="]"&&R[z+2]===">"){z+=2;break}}return z}const h='"',g="'";function m(R,z){let rA="",mA="",G=!1;for(;z<R.length;z++){if(R[z]===h||R[z]===g)mA===""?mA=R[z]:mA!==R[z]||(mA="");else if(R[z]===">"&&mA===""){G=!0;break}rA+=R[z]}return mA!==""?!1:{value:rA,index:z,tagClosed:G}}const y=new RegExp(`(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['"])(([\\s\\S])*?)\\5)?`,"g");function v(R,z){const rA=e.getAllMatches(R,y),mA={};for(let G=0;G<rA.length;G++){if(rA[G][1].length===0)return P("InvalidAttr","Attribute '"+rA[G][2]+"' has no space in starting.",tA(rA[G]));if(rA[G][3]!==void 0&&rA[G][4]===void 0)return P("InvalidAttr","Attribute '"+rA[G][2]+"' is without value.",tA(rA[G]));if(rA[G][3]===void 0&&!z.allowBooleanAttributes)return P("InvalidAttr","boolean attribute '"+rA[G][2]+"' is not allowed.",tA(rA[G]));const j=rA[G][2];if(!N(j))return P("InvalidAttr","Attribute '"+j+"' is an invalid name.",tA(rA[G]));if(!mA.hasOwnProperty(j))mA[j]=1;else return P("InvalidAttr","Attribute '"+j+"' is repeated.",tA(rA[G]))}return!0}function _(R,z){let rA=/\d/;for(R[z]==="x"&&(z++,rA=/[\da-fA-F]/);z<R.length;z++){if(R[z]===";")return z;if(!R[z].match(rA))break}return-1}function C(R,z){if(z++,R[z]===";")return-1;if(R[z]==="#")return z++,_(R,z);let rA=0;for(;z<R.length;z++,rA++)if(!(R[z].match(/\w/)&&rA<20)){if(R[z]===";")break;return-1}return z}function P(R,z,rA){return{err:{code:R,msg:z,line:rA.line||rA,col:rA.col}}}function N(R){return e.isName(R)}function Y(R){return e.isName(R)}function Z(R,z){const rA=R.substring(0,z).split(/\r?\n/);return{line:rA.length,col:rA[rA.length-1].length+1}}function tA(R){return R.startIndex+R[1].length}return T0}var Jr={},bo;function Vp(){if(bo)return Jr;bo=1;const e={preserveOrder:!1,attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,removeNSPrefix:!1,allowBooleanAttributes:!1,parseTagValue:!0,parseAttributeValue:!1,trimValues:!0,cdataPropName:!1,numberParseOptions:{hex:!0,leadingZeros:!0,eNotation:!0},tagValueProcessor:function(i,a){return a},attributeValueProcessor:function(i,a){return a},stopNodes:[],alwaysCreateTextNode:!1,isArray:()=>!1,commentPropName:!1,unpairedTags:[],processEntities:!0,htmlEntities:!1,ignoreDeclaration:!1,ignorePiTags:!1,transformTagName:!1,transformAttributeName:!1,updateTag:function(i,a,c){return i}},A=function(i){return Object.assign({},e,i)};return Jr.buildOptions=A,Jr.defaultOptions=e,Jr}var _0,Eo;function zp(){if(Eo)return _0;Eo=1;class e{constructor(i){this.tagname=i,this.child=[],this[":@"]={}}add(i,a){i==="__proto__"&&(i="#__proto__"),this.child.push({[i]:a})}addChild(i){i.tagname==="__proto__"&&(i.tagname="#__proto__"),i[":@"]&&Object.keys(i[":@"]).length>0?this.child.push({[i.tagname]:i.child,":@":i[":@"]}):this.child.push({[i.tagname]:i.child})}}return _0=e,_0}var b0,Mo;function Gp(){if(Mo)return b0;Mo=1;const e=Pi();function A(v,_){const C={};if(v[_+3]==="O"&&v[_+4]==="C"&&v[_+5]==="T"&&v[_+6]==="Y"&&v[_+7]==="P"&&v[_+8]==="E"){_=_+9;let P=1,N=!1,Y=!1,Z="";for(;_<v.length;_++)if(v[_]==="<"&&!Y){if(N&&c(v,_)){_+=7;let tA,R;[tA,R,_]=i(v,_+1),R.indexOf("&")===-1&&(C[y(tA)]={regx:RegExp(`&${tA};`,"g"),val:R})}else if(N&&h(v,_))_+=8;else if(N&&g(v,_))_+=8;else if(N&&m(v,_))_+=9;else if(a)Y=!0;else throw new Error("Invalid DOCTYPE");P++,Z=""}else if(v[_]===">"){if(Y?v[_-1]==="-"&&v[_-2]==="-"&&(Y=!1,P--):P--,P===0)break}else v[_]==="["?N=!0:Z+=v[_];if(P!==0)throw new Error("Unclosed DOCTYPE")}else throw new Error("Invalid Tag instead of DOCTYPE");return{entities:C,i:_}}function i(v,_){let C="";for(;_<v.length&&v[_]!=="'"&&v[_]!=='"';_++)C+=v[_];if(C=C.trim(),C.indexOf(" ")!==-1)throw new Error("External entites are not supported");const P=v[_++];let N="";for(;_<v.length&&v[_]!==P;_++)N+=v[_];return[C,N,_]}function a(v,_){return v[_+1]==="!"&&v[_+2]==="-"&&v[_+3]==="-"}function c(v,_){return v[_+1]==="!"&&v[_+2]==="E"&&v[_+3]==="N"&&v[_+4]==="T"&&v[_+5]==="I"&&v[_+6]==="T"&&v[_+7]==="Y"}function h(v,_){return v[_+1]==="!"&&v[_+2]==="E"&&v[_+3]==="L"&&v[_+4]==="E"&&v[_+5]==="M"&&v[_+6]==="E"&&v[_+7]==="N"&&v[_+8]==="T"}function g(v,_){return v[_+1]==="!"&&v[_+2]==="A"&&v[_+3]==="T"&&v[_+4]==="T"&&v[_+5]==="L"&&v[_+6]==="I"&&v[_+7]==="S"&&v[_+8]==="T"}function m(v,_){return v[_+1]==="!"&&v[_+2]==="N"&&v[_+3]==="O"&&v[_+4]==="T"&&v[_+5]==="A"&&v[_+6]==="T"&&v[_+7]==="I"&&v[_+8]==="O"&&v[_+9]==="N"}function y(v){if(e.isName(v))return v;throw new Error(`Invalid entity name ${v}`)}return b0=A,b0}var E0,Co;function qp(){if(Co)return E0;Co=1;const e=/^[-+]?0x[a-fA-F0-9]+$/,A=/^([\-\+])?(0*)([0-9]*(\.[0-9]*)?)$/,i={hex:!0,leadingZeros:!0,decimalPoint:".",eNotation:!0};function a(g,m={}){if(m=Object.assign({},i,m),!g||typeof g!="string")return g;let y=g.trim();if(m.skipLike!==void 0&&m.skipLike.test(y))return g;if(g==="0")return 0;if(m.hex&&e.test(y))return h(y,16);if(y.search(/[eE]/)!==-1){const v=y.match(/^([-\+])?(0*)([0-9]*(\.[0-9]*)?[eE][-\+]?[0-9]+)$/);if(v){if(m.leadingZeros)y=(v[1]||"")+v[3];else if(!(v[2]==="0"&&v[3][0]==="."))return g;return m.eNotation?Number(y):g}else return g}else{const v=A.exec(y);if(v){const _=v[1],C=v[2];let P=c(v[3]);if(!m.leadingZeros&&C.length>0&&_&&y[2]!==".")return g;if(!m.leadingZeros&&C.length>0&&!_&&y[1]!==".")return g;if(m.leadingZeros&&C===g)return 0;{const N=Number(y),Y=""+N;return Y.search(/[eE]/)!==-1?m.eNotation?N:g:y.indexOf(".")!==-1?Y==="0"&&P===""||Y===P||_&&Y==="-"+P?N:g:C?P===Y||_+P===Y?N:g:y===Y||y===_+Y?N:g}}else return g}}function c(g){return g&&g.indexOf(".")!==-1&&(g=g.replace(/0+$/,""),g==="."?g="0":g[0]==="."?g="0"+g:g[g.length-1]==="."&&(g=g.substr(0,g.length-1))),g}function h(g,m){if(parseInt)return parseInt(g,m);if(Number.parseInt)return Number.parseInt(g,m);if(window&&window.parseInt)return window.parseInt(g,m);throw new Error("parseInt, Number.parseInt, window.parseInt are not supported")}return E0=a,E0}var M0,So;function ou(){if(So)return M0;So=1;function e(A){return typeof A=="function"?A:Array.isArray(A)?i=>{for(const a of A)if(typeof a=="string"&&i===a||a instanceof RegExp&&a.test(i))return!0}:()=>!1}return M0=e,M0}var C0,Io;function Hp(){if(Io)return C0;Io=1;const e=Pi(),A=zp(),i=Gp(),a=qp(),c=ou();class h{constructor(j){this.options=j,this.currentNode=null,this.tagsNodeStack=[],this.docTypeEntities={},this.lastEntities={apos:{regex:/&(apos|#39|#x27);/g,val:"'"},gt:{regex:/&(gt|#62|#x3E);/g,val:">"},lt:{regex:/&(lt|#60|#x3C);/g,val:"<"},quot:{regex:/&(quot|#34|#x22);/g,val:'"'}},this.ampEntity={regex:/&(amp|#38|#x26);/g,val:"&"},this.htmlEntities={space:{regex:/&(nbsp|#160);/g,val:" "},cent:{regex:/&(cent|#162);/g,val:"¢"},pound:{regex:/&(pound|#163);/g,val:"£"},yen:{regex:/&(yen|#165);/g,val:"¥"},euro:{regex:/&(euro|#8364);/g,val:"€"},copyright:{regex:/&(copy|#169);/g,val:"©"},reg:{regex:/&(reg|#174);/g,val:"®"},inr:{regex:/&(inr|#8377);/g,val:"₹"},num_dec:{regex:/&#([0-9]{1,7});/g,val:($,lA)=>String.fromCharCode(Number.parseInt(lA,10))},num_hex:{regex:/&#x([0-9a-fA-F]{1,6});/g,val:($,lA)=>String.fromCharCode(Number.parseInt(lA,16))}},this.addExternalEntities=g,this.parseXml=C,this.parseTextData=m,this.resolveNameSpace=y,this.buildAttributesMap=_,this.isItStopNode=Z,this.replaceEntitiesValue=N,this.readStopNodeData=rA,this.saveTextToParentTag=Y,this.addChild=P,this.ignoreAttributesFn=c(this.options.ignoreAttributes)}}function g(G){const j=Object.keys(G);for(let $=0;$<j.length;$++){const lA=j[$];this.lastEntities[lA]={regex:new RegExp("&"+lA+";","g"),val:G[lA]}}}function m(G,j,$,lA,U,k,x){if(G!==void 0&&(this.options.trimValues&&!lA&&(G=G.trim()),G.length>0)){x||(G=this.replaceEntitiesValue(G));const X=this.options.tagValueProcessor(j,G,$,U,k);return X==null?G:typeof X!=typeof G||X!==G?X:this.options.trimValues?mA(G,this.options.parseTagValue,this.options.numberParseOptions):G.trim()===G?mA(G,this.options.parseTagValue,this.options.numberParseOptions):G}}function y(G){if(this.options.removeNSPrefix){const j=G.split(":"),$=G.charAt(0)==="/"?"/":"";if(j[0]==="xmlns")return"";j.length===2&&(G=$+j[1])}return G}const v=new RegExp(`([^\\s=]+)\\s*(=\\s*(['"])([\\s\\S]*?)\\3)?`,"gm");function _(G,j,$){if(this.options.ignoreAttributes!==!0&&typeof G=="string"){const lA=e.getAllMatches(G,v),U=lA.length,k={};for(let x=0;x<U;x++){const X=this.resolveNameSpace(lA[x][1]);if(this.ignoreAttributesFn(X,j))continue;let J=lA[x][4],yA=this.options.attributeNamePrefix+X;if(X.length)if(this.options.transformAttributeName&&(yA=this.options.transformAttributeName(yA)),yA==="__proto__"&&(yA="#__proto__"),J!==void 0){this.options.trimValues&&(J=J.trim()),J=this.replaceEntitiesValue(J);const dA=this.options.attributeValueProcessor(X,J,j);dA==null?k[yA]=J:typeof dA!=typeof J||dA!==J?k[yA]=dA:k[yA]=mA(J,this.options.parseAttributeValue,this.options.numberParseOptions)}else this.options.allowBooleanAttributes&&(k[yA]=!0)}if(!Object.keys(k).length)return;if(this.options.attributesGroupName){const x={};return x[this.options.attributesGroupName]=k,x}return k}}const C=function(G){G=G.replace(/\r\n?/g,`
|
|
4
|
+
`);const j=new A("!xml");let $=j,lA="",U="";for(let k=0;k<G.length;k++)if(G[k]==="<")if(G[k+1]==="/"){const X=R(G,">",k,"Closing Tag is not closed.");let J=G.substring(k+2,X).trim();if(this.options.removeNSPrefix){const OA=J.indexOf(":");OA!==-1&&(J=J.substr(OA+1))}this.options.transformTagName&&(J=this.options.transformTagName(J)),$&&(lA=this.saveTextToParentTag(lA,$,U));const yA=U.substring(U.lastIndexOf(".")+1);if(J&&this.options.unpairedTags.indexOf(J)!==-1)throw new Error(`Unpaired tag can not be used as closing tag: </${J}>`);let dA=0;yA&&this.options.unpairedTags.indexOf(yA)!==-1?(dA=U.lastIndexOf(".",U.lastIndexOf(".")-1),this.tagsNodeStack.pop()):dA=U.lastIndexOf("."),U=U.substring(0,dA),$=this.tagsNodeStack.pop(),lA="",k=X}else if(G[k+1]==="?"){let X=z(G,k,!1,"?>");if(!X)throw new Error("Pi Tag is not closed.");if(lA=this.saveTextToParentTag(lA,$,U),!(this.options.ignoreDeclaration&&X.tagName==="?xml"||this.options.ignorePiTags)){const J=new A(X.tagName);J.add(this.options.textNodeName,""),X.tagName!==X.tagExp&&X.attrExpPresent&&(J[":@"]=this.buildAttributesMap(X.tagExp,U,X.tagName)),this.addChild($,J,U)}k=X.closeIndex+1}else if(G.substr(k+1,3)==="!--"){const X=R(G,"-->",k+4,"Comment is not closed.");if(this.options.commentPropName){const J=G.substring(k+4,X-2);lA=this.saveTextToParentTag(lA,$,U),$.add(this.options.commentPropName,[{[this.options.textNodeName]:J}])}k=X}else if(G.substr(k+1,2)==="!D"){const X=i(G,k);this.docTypeEntities=X.entities,k=X.i}else if(G.substr(k+1,2)==="!["){const X=R(G,"]]>",k,"CDATA is not closed.")-2,J=G.substring(k+9,X);lA=this.saveTextToParentTag(lA,$,U);let yA=this.parseTextData(J,$.tagname,U,!0,!1,!0,!0);yA==null&&(yA=""),this.options.cdataPropName?$.add(this.options.cdataPropName,[{[this.options.textNodeName]:J}]):$.add(this.options.textNodeName,yA),k=X+2}else{let X=z(G,k,this.options.removeNSPrefix),J=X.tagName;const yA=X.rawTagName;let dA=X.tagExp,OA=X.attrExpPresent,XA=X.closeIndex;this.options.transformTagName&&(J=this.options.transformTagName(J)),$&&lA&&$.tagname!=="!xml"&&(lA=this.saveTextToParentTag(lA,$,U,!1));const Ae=$;if(Ae&&this.options.unpairedTags.indexOf(Ae.tagname)!==-1&&($=this.tagsNodeStack.pop(),U=U.substring(0,U.lastIndexOf("."))),J!==j.tagname&&(U+=U?"."+J:J),this.isItStopNode(this.options.stopNodes,U,J)){let UA="";if(dA.length>0&&dA.lastIndexOf("/")===dA.length-1)J[J.length-1]==="/"?(J=J.substr(0,J.length-1),U=U.substr(0,U.length-1),dA=J):dA=dA.substr(0,dA.length-1),k=X.closeIndex;else if(this.options.unpairedTags.indexOf(J)!==-1)k=X.closeIndex;else{const jA=this.readStopNodeData(G,yA,XA+1);if(!jA)throw new Error(`Unexpected end of ${yA}`);k=jA.i,UA=jA.tagContent}const QA=new A(J);J!==dA&&OA&&(QA[":@"]=this.buildAttributesMap(dA,U,J)),UA&&(UA=this.parseTextData(UA,J,U,!0,OA,!0,!0)),U=U.substr(0,U.lastIndexOf(".")),QA.add(this.options.textNodeName,UA),this.addChild($,QA,U)}else{if(dA.length>0&&dA.lastIndexOf("/")===dA.length-1){J[J.length-1]==="/"?(J=J.substr(0,J.length-1),U=U.substr(0,U.length-1),dA=J):dA=dA.substr(0,dA.length-1),this.options.transformTagName&&(J=this.options.transformTagName(J));const UA=new A(J);J!==dA&&OA&&(UA[":@"]=this.buildAttributesMap(dA,U,J)),this.addChild($,UA,U),U=U.substr(0,U.lastIndexOf("."))}else{const UA=new A(J);this.tagsNodeStack.push($),J!==dA&&OA&&(UA[":@"]=this.buildAttributesMap(dA,U,J)),this.addChild($,UA,U),$=UA}lA="",k=XA}}else lA+=G[k];return j.child};function P(G,j,$){const lA=this.options.updateTag(j.tagname,$,j[":@"]);lA===!1||(typeof lA=="string"&&(j.tagname=lA),G.addChild(j))}const N=function(G){if(this.options.processEntities){for(let j in this.docTypeEntities){const $=this.docTypeEntities[j];G=G.replace($.regx,$.val)}for(let j in this.lastEntities){const $=this.lastEntities[j];G=G.replace($.regex,$.val)}if(this.options.htmlEntities)for(let j in this.htmlEntities){const $=this.htmlEntities[j];G=G.replace($.regex,$.val)}G=G.replace(this.ampEntity.regex,this.ampEntity.val)}return G};function Y(G,j,$,lA){return G&&(lA===void 0&&(lA=j.child.length===0),G=this.parseTextData(G,j.tagname,$,!1,j[":@"]?Object.keys(j[":@"]).length!==0:!1,lA),G!==void 0&&G!==""&&j.add(this.options.textNodeName,G),G=""),G}function Z(G,j,$){const lA="*."+$;for(const U in G){const k=G[U];if(lA===k||j===k)return!0}return!1}function tA(G,j,$=">"){let lA,U="";for(let k=j;k<G.length;k++){let x=G[k];if(lA)x===lA&&(lA="");else if(x==='"'||x==="'")lA=x;else if(x===$[0])if($[1]){if(G[k+1]===$[1])return{data:U,index:k}}else return{data:U,index:k};else x===" "&&(x=" ");U+=x}}function R(G,j,$,lA){const U=G.indexOf(j,$);if(U===-1)throw new Error(lA);return U+j.length-1}function z(G,j,$,lA=">"){const U=tA(G,j+1,lA);if(!U)return;let k=U.data;const x=U.index,X=k.search(/\s/);let J=k,yA=!0;X!==-1&&(J=k.substring(0,X),k=k.substring(X+1).trimStart());const dA=J;if($){const OA=J.indexOf(":");OA!==-1&&(J=J.substr(OA+1),yA=J!==U.data.substr(OA+1))}return{tagName:J,tagExp:k,closeIndex:x,attrExpPresent:yA,rawTagName:dA}}function rA(G,j,$){const lA=$;let U=1;for(;$<G.length;$++)if(G[$]==="<")if(G[$+1]==="/"){const k=R(G,">",$,`${j} is not closed`);if(G.substring($+2,k).trim()===j&&(U--,U===0))return{tagContent:G.substring(lA,$),i:k};$=k}else if(G[$+1]==="?")$=R(G,"?>",$+1,"StopNode is not closed.");else if(G.substr($+1,3)==="!--")$=R(G,"-->",$+3,"StopNode is not closed.");else if(G.substr($+1,2)==="![")$=R(G,"]]>",$,"StopNode is not closed.")-2;else{const k=z(G,$,">");k&&((k&&k.tagName)===j&&k.tagExp[k.tagExp.length-1]!=="/"&&U++,$=k.closeIndex)}}function mA(G,j,$){if(j&&typeof G=="string"){const lA=G.trim();return lA==="true"?!0:lA==="false"?!1:a(G,$)}else return e.isExist(G)?G:""}return C0=h,C0}var S0={},Bo;function jp(){if(Bo)return S0;Bo=1;function e(h,g){return A(h,g)}function A(h,g,m){let y;const v={};for(let _=0;_<h.length;_++){const C=h[_],P=i(C);let N="";if(m===void 0?N=P:N=m+"."+P,P===g.textNodeName)y===void 0?y=C[P]:y+=""+C[P];else{if(P===void 0)continue;if(C[P]){let Y=A(C[P],g,N);const Z=c(Y,g);C[":@"]?a(Y,C[":@"],N,g):Object.keys(Y).length===1&&Y[g.textNodeName]!==void 0&&!g.alwaysCreateTextNode?Y=Y[g.textNodeName]:Object.keys(Y).length===0&&(g.alwaysCreateTextNode?Y[g.textNodeName]="":Y=""),v[P]!==void 0&&v.hasOwnProperty(P)?(Array.isArray(v[P])||(v[P]=[v[P]]),v[P].push(Y)):g.isArray(P,N,Z)?v[P]=[Y]:v[P]=Y}}}return typeof y=="string"?y.length>0&&(v[g.textNodeName]=y):y!==void 0&&(v[g.textNodeName]=y),v}function i(h){const g=Object.keys(h);for(let m=0;m<g.length;m++){const y=g[m];if(y!==":@")return y}}function a(h,g,m,y){if(g){const v=Object.keys(g),_=v.length;for(let C=0;C<_;C++){const P=v[C];y.isArray(P,m+"."+P,!0,!0)?h[P]=[g[P]]:h[P]=g[P]}}}function c(h,g){const{textNodeName:m}=g,y=Object.keys(h).length;return!!(y===0||y===1&&(h[m]||typeof h[m]=="boolean"||h[m]===0))}return S0.prettify=e,S0}var I0,Lo;function Wp(){if(Lo)return I0;Lo=1;const{buildOptions:e}=Vp(),A=Hp(),{prettify:i}=jp(),a=su();class c{constructor(g){this.externalEntities={},this.options=e(g)}parse(g,m){if(typeof g!="string")if(g.toString)g=g.toString();else throw new Error("XML data is accepted in String or Bytes[] form.");if(m){m===!0&&(m={});const _=a.validate(g,m);if(_!==!0)throw Error(`${_.err.msg}:${_.err.line}:${_.err.col}`)}const y=new A(this.options);y.addExternalEntities(this.externalEntities);const v=y.parseXml(g);return this.options.preserveOrder||v===void 0?v:i(v,this.options)}addEntity(g,m){if(m.indexOf("&")!==-1)throw new Error("Entity value can't have '&'");if(g.indexOf("&")!==-1||g.indexOf(";")!==-1)throw new Error("An entity must be set without '&' and ';'. Eg. use '#xD' for '
'");if(m==="&")throw new Error("An entity with value '&' is not permitted");this.externalEntities[g]=m}}return I0=c,I0}var B0,Po;function Yp(){if(Po)return B0;Po=1;const e=`
|
|
5
|
+
`;function A(m,y){let v="";return y.format&&y.indentBy.length>0&&(v=e),i(m,y,"",v)}function i(m,y,v,_){let C="",P=!1;for(let N=0;N<m.length;N++){const Y=m[N],Z=a(Y);if(Z===void 0)continue;let tA="";if(v.length===0?tA=Z:tA=`${v}.${Z}`,Z===y.textNodeName){let G=Y[Z];h(tA,y)||(G=y.tagValueProcessor(Z,G),G=g(G,y)),P&&(C+=_),C+=G,P=!1;continue}else if(Z===y.cdataPropName){P&&(C+=_),C+=`<![CDATA[${Y[Z][0][y.textNodeName]}]]>`,P=!1;continue}else if(Z===y.commentPropName){C+=_+`<!--${Y[Z][0][y.textNodeName]}-->`,P=!0;continue}else if(Z[0]==="?"){const G=c(Y[":@"],y),j=Z==="?xml"?"":_;let $=Y[Z][0][y.textNodeName];$=$.length!==0?" "+$:"",C+=j+`<${Z}${$}${G}?>`,P=!0;continue}let R=_;R!==""&&(R+=y.indentBy);const z=c(Y[":@"],y),rA=_+`<${Z}${z}`,mA=i(Y[Z],y,tA,R);y.unpairedTags.indexOf(Z)!==-1?y.suppressUnpairedNode?C+=rA+">":C+=rA+"/>":(!mA||mA.length===0)&&y.suppressEmptyNode?C+=rA+"/>":mA&&mA.endsWith(">")?C+=rA+`>${mA}${_}</${Z}>`:(C+=rA+">",mA&&_!==""&&(mA.includes("/>")||mA.includes("</"))?C+=_+y.indentBy+mA+_:C+=mA,C+=`</${Z}>`),P=!0}return C}function a(m){const y=Object.keys(m);for(let v=0;v<y.length;v++){const _=y[v];if(m.hasOwnProperty(_)&&_!==":@")return _}}function c(m,y){let v="";if(m&&!y.ignoreAttributes)for(let _ in m){if(!m.hasOwnProperty(_))continue;let C=y.attributeValueProcessor(_,m[_]);C=g(C,y),C===!0&&y.suppressBooleanAttributes?v+=` ${_.substr(y.attributeNamePrefix.length)}`:v+=` ${_.substr(y.attributeNamePrefix.length)}="${C}"`}return v}function h(m,y){m=m.substr(0,m.length-y.textNodeName.length-1);let v=m.substr(m.lastIndexOf(".")+1);for(let _ in y.stopNodes)if(y.stopNodes[_]===m||y.stopNodes[_]==="*."+v)return!0;return!1}function g(m,y){if(m&&m.length>0&&y.processEntities)for(let v=0;v<y.entities.length;v++){const _=y.entities[v];m=m.replace(_.regex,_.val)}return m}return B0=A,B0}var L0,xo;function Zp(){if(xo)return L0;xo=1;const e=Yp(),A=ou(),i={attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,cdataPropName:!1,format:!1,indentBy:" ",suppressEmptyNode:!1,suppressUnpairedNode:!0,suppressBooleanAttributes:!0,tagValueProcessor:function(m,y){return y},attributeValueProcessor:function(m,y){return y},preserveOrder:!1,commentPropName:!1,unpairedTags:[],entities:[{regex:new RegExp("&","g"),val:"&"},{regex:new RegExp(">","g"),val:">"},{regex:new RegExp("<","g"),val:"<"},{regex:new RegExp("'","g"),val:"'"},{regex:new RegExp('"',"g"),val:"""}],processEntities:!0,stopNodes:[],oneListGroup:!1};function a(m){this.options=Object.assign({},i,m),this.options.ignoreAttributes===!0||this.options.attributesGroupName?this.isAttribute=function(){return!1}:(this.ignoreAttributesFn=A(this.options.ignoreAttributes),this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=g),this.processTextOrObjNode=c,this.options.format?(this.indentate=h,this.tagEndChar=`>
|
|
6
|
+
`,this.newLine=`
|
|
7
|
+
`):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine="")}a.prototype.build=function(m){return this.options.preserveOrder?e(m,this.options):(Array.isArray(m)&&this.options.arrayNodeName&&this.options.arrayNodeName.length>1&&(m={[this.options.arrayNodeName]:m}),this.j2x(m,0,[]).val)},a.prototype.j2x=function(m,y,v){let _="",C="";const P=v.join(".");for(let N in m)if(Object.prototype.hasOwnProperty.call(m,N))if(typeof m[N]>"u")this.isAttribute(N)&&(C+="");else if(m[N]===null)this.isAttribute(N)||N===this.options.cdataPropName?C+="":N[0]==="?"?C+=this.indentate(y)+"<"+N+"?"+this.tagEndChar:C+=this.indentate(y)+"<"+N+"/"+this.tagEndChar;else if(m[N]instanceof Date)C+=this.buildTextValNode(m[N],N,"",y);else if(typeof m[N]!="object"){const Y=this.isAttribute(N);if(Y&&!this.ignoreAttributesFn(Y,P))_+=this.buildAttrPairStr(Y,""+m[N]);else if(!Y)if(N===this.options.textNodeName){let Z=this.options.tagValueProcessor(N,""+m[N]);C+=this.replaceEntitiesValue(Z)}else C+=this.buildTextValNode(m[N],N,"",y)}else if(Array.isArray(m[N])){const Y=m[N].length;let Z="",tA="";for(let R=0;R<Y;R++){const z=m[N][R];if(!(typeof z>"u"))if(z===null)N[0]==="?"?C+=this.indentate(y)+"<"+N+"?"+this.tagEndChar:C+=this.indentate(y)+"<"+N+"/"+this.tagEndChar;else if(typeof z=="object")if(this.options.oneListGroup){const rA=this.j2x(z,y+1,v.concat(N));Z+=rA.val,this.options.attributesGroupName&&z.hasOwnProperty(this.options.attributesGroupName)&&(tA+=rA.attrStr)}else Z+=this.processTextOrObjNode(z,N,y,v);else if(this.options.oneListGroup){let rA=this.options.tagValueProcessor(N,z);rA=this.replaceEntitiesValue(rA),Z+=rA}else Z+=this.buildTextValNode(z,N,"",y)}this.options.oneListGroup&&(Z=this.buildObjectNode(Z,N,tA,y)),C+=Z}else if(this.options.attributesGroupName&&N===this.options.attributesGroupName){const Y=Object.keys(m[N]),Z=Y.length;for(let tA=0;tA<Z;tA++)_+=this.buildAttrPairStr(Y[tA],""+m[N][Y[tA]])}else C+=this.processTextOrObjNode(m[N],N,y,v);return{attrStr:_,val:C}},a.prototype.buildAttrPairStr=function(m,y){return y=this.options.attributeValueProcessor(m,""+y),y=this.replaceEntitiesValue(y),this.options.suppressBooleanAttributes&&y==="true"?" "+m:" "+m+'="'+y+'"'};function c(m,y,v,_){const C=this.j2x(m,v+1,_.concat(y));return m[this.options.textNodeName]!==void 0&&Object.keys(m).length===1?this.buildTextValNode(m[this.options.textNodeName],y,C.attrStr,v):this.buildObjectNode(C.val,y,C.attrStr,v)}a.prototype.buildObjectNode=function(m,y,v,_){if(m==="")return y[0]==="?"?this.indentate(_)+"<"+y+v+"?"+this.tagEndChar:this.indentate(_)+"<"+y+v+this.closeTag(y)+this.tagEndChar;{let C="</"+y+this.tagEndChar,P="";return y[0]==="?"&&(P="?",C=""),(v||v==="")&&m.indexOf("<")===-1?this.indentate(_)+"<"+y+v+P+">"+m+C:this.options.commentPropName!==!1&&y===this.options.commentPropName&&P.length===0?this.indentate(_)+`<!--${m}-->`+this.newLine:this.indentate(_)+"<"+y+v+P+this.tagEndChar+m+this.indentate(_)+C}},a.prototype.closeTag=function(m){let y="";return this.options.unpairedTags.indexOf(m)!==-1?this.options.suppressUnpairedNode||(y="/"):this.options.suppressEmptyNode?y="/":y=`></${m}`,y},a.prototype.buildTextValNode=function(m,y,v,_){if(this.options.cdataPropName!==!1&&y===this.options.cdataPropName)return this.indentate(_)+`<![CDATA[${m}]]>`+this.newLine;if(this.options.commentPropName!==!1&&y===this.options.commentPropName)return this.indentate(_)+`<!--${m}-->`+this.newLine;if(y[0]==="?")return this.indentate(_)+"<"+y+v+"?"+this.tagEndChar;{let C=this.options.tagValueProcessor(y,m);return C=this.replaceEntitiesValue(C),C===""?this.indentate(_)+"<"+y+v+this.closeTag(y)+this.tagEndChar:this.indentate(_)+"<"+y+v+">"+C+"</"+y+this.tagEndChar}},a.prototype.replaceEntitiesValue=function(m){if(m&&m.length>0&&this.options.processEntities)for(let y=0;y<this.options.entities.length;y++){const v=this.options.entities[y];m=m.replace(v.regex,v.val)}return m};function h(m){return this.options.indentBy.repeat(m)}function g(m){return m.startsWith(this.options.attributeNamePrefix)&&m!==this.options.textNodeName?m.substr(this.attrPrefixLen):!1}return L0=a,L0}var P0,No;function Xp(){if(No)return P0;No=1;const e=su(),A=Wp(),i=Zp();return P0={XMLParser:A,XMLValidator:e,XMLBuilder:i},P0}var Jp=Xp();function Ro(e,A){if(A?._parser&&A._parser!=="fast-xml-parser")throw new Error(A?._parser);const i={allowBooleanAttributes:!0,ignoreDeclaration:!0,removeNSPrefix:A?.removeNSPrefix,textNodeName:A?.textNodeName,isArray:(c,h,g,m)=>!!A?.arrayPaths?.some(v=>h===v),...A?._fastXML},a=Kp(e,i);return A?.uncapitalizeKeys?oi(a):a}function Kp(e,A){return new Jp.XMLParser({ignoreAttributes:!1,attributeNamePrefix:"",...A}).parse(e)}const $p="4.3.3",nr={dataType:null,batchType:null,name:"XML",id:"xml",module:"xml",version:$p,worker:!1,extensions:["xml"],mimeTypes:["application/xml","text/xml"],testText:Am,options:{xml:{_parser:"fast-xml-parser",uncapitalizeKeys:!1,removeNSPrefix:!1,textNodeName:"value",arrayPaths:[]}},parse:async(e,A)=>Ro(new TextDecoder().decode(e),{...nr.options.xml,...A?.xml}),parseTextSync:(e,A)=>Ro(e,{...nr.options.xml,...A?.xml})};function Am(e){return e.startsWith("<?xml")}function em(e,A){const i=nr.parseTextSync?.(e,A),a=i?.ServiceExceptionReport?.ServiceException||i?.["ogc:ServiceExceptionReport"]?.["ogc:ServiceException"];return typeof a=="string"?a:a.value||a.code||"Unknown error"}const tm="4.3.3",cn={dataType:null,batchType:null,id:"wms-error",name:"WMS Error",module:"wms",version:tm,worker:!1,extensions:["xml"],mimeTypes:["application/vnd.ogc.se_xml","application/xml","text/xml"],testText:rm,options:{wms:{throwOnError:!1}},parse:async(e,A)=>x0(new TextDecoder().decode(e),A),parseSync:(e,A)=>x0(new TextDecoder().decode(e),A),parseTextSync:(e,A)=>x0(e,A)};function rm(e){return e.startsWith("<?xml")}function x0(e,A){const i={...cn.options.wms,...A?.wms},a=em(e,i),c=i.minimalErrors?a:`WMS Service error: ${a}`;if(i.throwOnError)throw new Error(c);return c}function ir(e){return Array.isArray(e)?e:e?[e]:[]}function Rn(e){const A=ir(e);return A.length>0&&A.every(i=>typeof i=="string")?A:[]}function Kr(e,A=void 0){switch(typeof e){case"number":return e;case"string":return parseFloat(e);default:return}}function N0(e,A=void 0){switch(typeof e){case"number":return e;case"string":return parseInt(e,10);default:return}}function rr(e){switch(e){case"true":return!0;case"false":return!1;case"1":return!0;case"0":return!1;default:return!1}}function Do(e,A){const i=nr.parseTextSync?.(e,A),a=i.WMT_MS_Capabilities||i.WMS_Capabilities||i,c=nm(a);if(A?.inheritedLayerProps)for(const h of c.layers)lu(h,null);return A?.includeRawJSON&&(c.json=a),A?.includeXMLText&&(c.xml=e),c}function nm(e){const A={version:String(e.version||""),name:String(e.Service?.Name||"unnamed"),title:e.Service?.Title?String(e.Service?.Title):void 0,abstract:e.Service?.Abstract?String(e.Service?.Abstract):void 0,keywords:Rn(e.Service?.KeywordList?.Keyword),fees:e.Service?.Fees?JSON.stringify(e.Service?.Fees):void 0,accessConstraints:e.Service?.AccessConstraints?JSON.stringify(e.Service?.AccessConstraints):void 0,layerLimit:N0(e.Service?.LayerLimit),maxWidth:N0(e.Service?.maxWidth),maxHeight:N0(e.Service?.maxHeight),layers:[],requests:im(e.Capability?.Request),exceptions:sm(e.Exception)},i=ir(e.Capability?.Layer);for(const a of i)A.layers.push(au(a));for(const[a,c]of Object.entries(A))c===void 0&&delete A[a];return A}function im(e){const A={};for(const[i,a]of Object.entries(e||{})){const c=Rn(a?.Format);A[i]={mimeTypes:c}}return A}function sm(e){if(ir(e?.Format).length>0)return{mimeTypes:Rn(e)}}function au(e){const A={title:String(e?.Title||""),name:e?.Name&&String(e?.Name),abstract:e?.Name&&String(e?.Abstract),keywords:Rn(e.KeywordList?.Keyword)},i=e?.CRS||e?.SRS;i&&Array.isArray(i)&&i.every(v=>typeof v=="string")&&(A.crs=i);let a=e?.EX_GeographicBoundingBox&&om(e?.EX_GeographicBoundingBox);a&&(A.geographicBoundingBox=a),a=e?.LatLonBoundingBox&&am(e?.LatLonBoundingBox),a&&(A.geographicBoundingBox=a);const c=e?.BoundingBox&&lm(e?.BoundingBox);c&&c.length>0&&(A.boundingBoxes=c);const g=ir(e?.Dimension).map(v=>cm(v));g.length&&(A.dimensions=g),e?.opaque&&(A.opaque=rr(e?.opaque)),e?.cascaded&&(A.cascaded=rr(e?.cascaded)),e?.queryable&&(A.queryable=rr(e?.queryable));const m=ir(e?.Layer),y=[];for(const v of m)y.push(au(v));y.length>0&&(A.layers=y);for(const[v,_]of Object.entries(A))_===void 0&&delete A[v];return A}function om(e){const{westBoundLongitude:A,northBoundLatitude:i,eastBoundLongitude:a,southBoundLatitude:c}=e;return[[A,c],[a,i]]}function am(e){const{minx:A,miny:i,maxx:a,maxy:c}=e;return[[A,i],[a,c]]}function lm(e){return ir(e).map(i=>um(i))}function um(e){const{CRS:A,SRS:i,minx:a,miny:c,maxx:h,maxy:g,resx:m,resy:y}=e,v={crs:A||i,boundingBox:[[Kr(a),Kr(c)],[Kr(h),Kr(g)]]};return m&&(v.xResolution=m),y&&(v.yResolution=y),v}function cm(e){const{name:A,units:i,value:a}=e,c={name:A,units:i,extent:a};return e.unitSymbol&&(c.unitSymbol=e.unitSymbol),e.default&&(c.defaultValue=e.default),e.multipleValues&&(c.multipleValues=rr(e.multipleValues)),e.nearestValue&&(c.nearestValue=rr(e.nearestValue)),e.current&&(c.current=rr(e.current)),c}function lu(e,A){A?.geographicBoundingBox&&!e.geographicBoundingBox&&(e.geographicBoundingBox=[...A.geographicBoundingBox]),A?.crs&&!e.crs&&(e.crs=[...A.crs]),A?.boundingBoxes&&!e.boundingBoxes&&(e.boundingBoxes=[...A.boundingBoxes]),A?.dimensions&&!e.dimensions&&(e.dimensions=[...A.dimensions]);for(const i of e.layers||[])lu(i,e)}const fm="4.3.3",xi={dataType:null,batchType:null,id:"wms-capabilities",name:"WMS Capabilities",module:"wms",version:fm,worker:!1,extensions:["xml"],mimeTypes:["application/vnd.ogc.wms_xml","application/xml","text/xml"],testText:hm,options:{wms:{}},parse:async(e,A)=>Do(new TextDecoder().decode(e),A?.wms),parseTextSync:(e,A)=>Do(e,A?.wms)};function hm(e){return e.startsWith("<?xml")}function Oo(e,A){const a=(nr.parseTextSync?.(e,A)).FeatureInfoResponse?.FIELDS||[];return{features:(Array.isArray(a)?a:[a]).map(h=>dm(h))}}function dm(e){return{attributes:e||{},type:"",bounds:{bottom:0,top:0,left:0,right:0}}}const gm={...xi,dataType:null,id:"wms-feature-info",name:"WMS FeatureInfo",parse:async(e,A)=>Oo(new TextDecoder().decode(e),A),parseTextSync:(e,A)=>Oo(e,A)};function ko(e,A){return nr.parseTextSync?.(e,A)}const pm={...xi,dataType:null,id:"wms-layer-description",name:"WMS DescribeLayer",parse:async(e,A)=>ko(new TextDecoder().decode(e),A),parseTextSync:(e,A)=>ko(e,A)},mm={name:"Web Map Service (OGC WMS)",id:"wms",module:"wms",version:"0.0.0",extensions:[],mimeTypes:[],options:{wms:{}},type:"wms",fromUrl:!0,fromBlob:!1,testURL:e=>e.toLowerCase().includes("wms"),createDataSource:(e,A)=>new wm(e,A)};class wm extends _i{url;data;substituteCRS84;flipCRS;wmsParameters;vendorParameters;capabilities=null;constructor(A,i){super(i),this.url=A,this.data=A,this.substituteCRS84=i.wms?.substituteCRS84??i.substituteCRS84??!1,this.flipCRS=["EPSG:4326"],this.wmsParameters={layers:void 0,query_layers:void 0,styles:void 0,version:"1.3.0",crs:"EPSG:4326",format:"image/png",info_format:"text/plain",transparent:void 0,time:void 0,elevation:void 0,...i.wmsParameters,...i.wms?.wmsParameters},this.vendorParameters=i.wms?.vendorParameters||i.vendorParameters||{}}async getMetadata(){const A=await this.getCapabilities();return this.normalizeMetadata(A)}async getImage(A){const{boundingBox:i,bbox:a,...c}=A,h={bbox:i?[...i[0],...i[1]]:a,...c};return await this.getMap(h)}normalizeMetadata(A){return A}async getCapabilities(A,i){const a=this.getCapabilitiesURL(A,i),c=await this.fetch(a),h=await c.arrayBuffer();this._checkResponse(c,h);const g=await xi.parse(h,this.loadOptions);return this.capabilities=g,g}async getMap(A,i){const a=this.getMapURL(A,i),c=await this.fetch(a),h=await c.arrayBuffer();this._checkResponse(c,h);try{return await Zs.parse(h,this.loadOptions)}catch{throw this._parseError(h)}}async getFeatureInfo(A,i){const a=this.getFeatureInfoURL(A,i),c=await this.fetch(a),h=await c.arrayBuffer();return this._checkResponse(c,h),await gm.parse(h,this.loadOptions)}async getFeatureInfoText(A,i){const a=this.getFeatureInfoURL(A,i),c=await this.fetch(a),h=await c.arrayBuffer();return this._checkResponse(c,h),new TextDecoder().decode(h)}async describeLayer(A,i){const a=this.describeLayerURL(A,i),c=await this.fetch(a),h=await c.arrayBuffer();return this._checkResponse(c,h),await pm.parse(h,this.loadOptions)}async getLegendGraphic(A,i){const a=this.getLegendGraphicURL(A,i),c=await this.fetch(a),h=await c.arrayBuffer();this._checkResponse(c,h);try{return await Zs.parse(h,this.loadOptions)}catch{throw this._parseError(h)}}getCapabilitiesURL(A,i){const a={version:this.wmsParameters.version,...A};return this._getWMSUrl("GetCapabilities",a,i)}getMapURL(A,i){A=this._getWMS130Parameters(A);const a={version:this.wmsParameters.version,format:this.wmsParameters.format,transparent:this.wmsParameters.transparent,time:this.wmsParameters.time,elevation:this.wmsParameters.elevation,layers:this.wmsParameters.layers,styles:this.wmsParameters.styles,crs:this.wmsParameters.crs,...A};return this._getWMSUrl("GetMap",a,i)}getFeatureInfoURL(A,i){A=this._getWMS130Parameters(A);const{boundingBox:a,bbox:c}=A;A.bbox=a?[...a[0],...a[1]]:c;const h={version:this.wmsParameters.version,info_format:this.wmsParameters.info_format,layers:this.wmsParameters.layers,query_layers:this.wmsParameters.query_layers,styles:this.wmsParameters.styles,crs:this.wmsParameters.crs,...A};return this._getWMSUrl("GetFeatureInfo",h,i)}describeLayerURL(A,i){const a={version:this.wmsParameters.version,...A};return this._getWMSUrl("DescribeLayer",a,i)}getLegendGraphicURL(A,i){const a={version:this.wmsParameters.version,...A};return this._getWMSUrl("GetLegendGraphic",a,i)}_parseWMSUrl(A){const[i,a]=A.split("?"),c=a.split("&"),h={};for(const g of c){const[m,y]=g.split("=");h[m]=y}return{url:i,parameters:h}}_getWMSUrl(A,i,a){let c=this.url,h=!0;const g={service:"WMS",version:i.version,request:A,...i,...this.vendorParameters,...a},m=["transparent","time","elevation"];for(const[y,v]of Object.entries(g))(!m.includes(y)||v)&&(c+=h?"?":"&",h=!1,c+=this._getURLParameter(y,v,i));return encodeURI(c)}_getWMS130Parameters(A){const i={...A};return i.srs&&(i.crs=i.crs||i.srs,delete i.srs),i}_getURLParameter(A,i,a){switch(A){case"crs":a.version!=="1.3.0"?A="srs":this.substituteCRS84&&i==="EPSG:4326"&&(i="CRS:84");break;case"srs":a.version==="1.3.0"&&(A="crs");break;case"bbox":const c=this._flipBoundingBox(i,a);c&&(i=c);break;case"x":a.version==="1.3.0"&&(A="i");break;case"y":a.version==="1.3.0"&&(A="j");break}return A=A.toUpperCase(),Array.isArray(i)?`${A}=${i.join(",")}`:`${A}=${i?String(i):""}`}_flipBoundingBox(A,i){if(!Array.isArray(A)||A.length!==4)return null;const a=i.version==="1.3.0"&&this.flipCRS.includes(i.crs||"")&&!(this.substituteCRS84&&i.crs==="EPSG:4326"),c=A;return a?[c[1],c[0],c[3],c[2]]:c}async _fetchArrayBuffer(A){const i=await this.fetch(A),a=await i.arrayBuffer();return this._checkResponse(i,a),a}_checkResponse(A,i){const a=A.headers["content-type"];if(!A.ok||cn.mimeTypes.includes(a)){const c=Kh(this.loadOptions,{wms:{throwOnError:!0}}),h=cn.parseSync?.(i,c);throw new Error(h)}}_parseError(A){const i=cn.parseSync?.(A,this.loadOptions);return new Error(i)}}const ym={name:"ArcGISImageServer",id:"arcgis-image-server",module:"wms",version:"0.0.0",extensions:[],mimeTypes:[],options:{"arcgis-image-server":{}},type:"arcgis-image-server",fromUrl:!0,fromBlob:!1,testURL:e=>e.toLowerCase().includes("ImageServer"),createDataSource:(e,A)=>new Tm(e,A)};class Tm extends _i{url;data;constructor(A,i){super(i),this.url=A,this.data=A}async getMetadata(){return await this.metadata()}async getImage(A){throw new Error("not implemented")}async metadata(){throw new Error("not implemented")}exportImage(A){throw new Error("not implemented")}metadataURL(A){return`${this.url}?f=pjson`}exportImageURL(A){const i=`bbox=${A.bbox[0]},${A.bbox[1]},${A.bbox[2]},${A.bbox[3]}`,a=`size=${A.width},${A.height}`,c={...A,bbox:i,size:a};return delete c.width,delete c.height,this.getUrl("exportImage",c)}getUrl(A,i,a){let c=`${this.url}/${A}`,h=!0;for(const[g,m]of Object.entries(i))c+=h?"?":"&",h=!1,Array.isArray(m)?c+=`${g.toUpperCase()}=${m.join(",")}`:c+=`${g.toUpperCase()}=${m?String(m):""}`;return c}async checkResponse(A){if(!A.ok)throw new Error("error")}}const vm=[mm,ym];function _m(e,A=vm){const{type:i="auto"}=e,a=i==="auto"?Em(e.url,A):bm(i,A);if(!a)throw new Error("Not a valid image source type");return a.createDataSource(e.url,e)}function bm(e,A){for(const i of A)if(i.type===e)return i;return null}function Em(e,A){for(const i of A)if(i.testURL&&i.testURL(e))return i;return null}const Fo=6378137*Math.PI;function Uo(e){const A=X0(e);return A[0]=(A[0]/256-1)*Fo,A[1]=(A[1]/256-1)*Fo,A}const Mm={id:"imagery-layer",data:"",serviceType:"auto",srs:"auto",layers:{type:"array",compare:!0,value:[]},onMetadataLoad:{type:"function",value:()=>{}},onMetadataLoadError:{type:"function",value:console.error},onImageLoadStart:{type:"function",value:()=>{}},onImageLoad:{type:"function",value:()=>{}},onImageLoadError:{type:"function",compare:!1,value:(e,A)=>console.error(A,e)}};class uu extends ar{get isLoaded(){return this.state?.loadCounter===0&&super.isLoaded}shouldUpdateState(){return!0}initializeState(){this.state._nextRequestId=0,this.state.lastRequestId=-1,this.state.loadCounter=0}updateState({changeFlags:A,props:i,oldProps:a}){const{viewport:c}=this.context;A.dataChanged||i.serviceType!==a.serviceType?(this.state.imageSource=this._createImageSource(i),this._loadMetadata(),this.debounce(()=>this.loadImage(c,"image source changed"),0)):Uh(i.layers,a.layers,1)?A.viewportChanged&&this.debounce(()=>this.loadImage(c,"viewport changed")):this.debounce(()=>this.loadImage(c,"layers changed"),0)}finalizeState(){}renderLayers(){const{bounds:A,image:i,lastRequestParameters:a}=this.state;return i&&new Ih({...this.getSubLayerProps({id:"bitmap"}),_imageCoordinateSystem:a.srs==="EPSG:4326"?Ct.LNGLAT:Ct.CARTESIAN,bounds:A,image:i})}async getFeatureInfoText(A,i){const{lastRequestParameters:a}=this.state;return a?await this.state.imageSource.getFeatureInfoText?.({...a,query_layers:a.layers,x:A,y:i,info_format:"application/vnd.ogc.gml"}):""}_createImageSource(A){if(A.data instanceof _i)return A.data;if(typeof A.data=="string")return _m({url:A.data,loadOptions:A.loadOptions,type:A.serviceType});throw new Error("invalid image source in props.data")}async _loadMetadata(){const{imageSource:A}=this.state;try{this.state.loadCounter++;const i=await A.getMetadata();this.state.imageSource===A&&this.getCurrentLayer()?.props.onMetadataLoad(i)}catch(i){this.getCurrentLayer()?.props.onMetadataLoadError(i)}finally{this.state.loadCounter--}}async loadImage(A,i){const{layers:a,serviceType:c}=this.props;if(c==="wms"&&a.length===0)return;const h=A.getBounds(),{width:g,height:m}=A,y=this.getRequestId();let{srs:v}=this.props;v==="auto"&&(v=A.resolution?"EPSG:4326":"EPSG:3857");const _={width:g,height:m,boundingBox:[[h[0],h[1]],[h[2],h[3]]],layers:a,crs:v};if(v==="EPSG:3857"){const C=Uo([h[0],h[1]]),P=Uo([h[2],h[3]]);_.boundingBox=[C,P]}try{this.state.loadCounter++,this.props.onImageLoadStart(y);const C=await this.state.imageSource.getImage(_);this.state.lastRequestId<y&&(this.getCurrentLayer()?.props.onImageLoad(y),this.setState({image:C,bounds:h,lastRequestParameters:_,lastRequestId:y}))}catch(C){this.raiseError(C,"Load image"),this.getCurrentLayer()?.props.onImageLoadError(y,C)}finally{this.state.loadCounter--}}getRequestId(){return this.state._nextRequestId++}debounce(A,i=500){clearTimeout(this.state._timeoutId),this.state._timeoutId=setTimeout(()=>A(),i)}}uu.layerName="WMSLayer";uu.defaultProps=Mm;const Cm={getHeight:{type:"accessor",value:0},greatCircle:!0};class cu extends Bh{}cu.layerName="GreatCircleLayer";cu.defaultProps=Cm;function Sm(e){throw new Error('Could not dynamically require "'+e+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var fn={exports:{}},Im=fn.exports,Qo;function Bm(){return Qo||(Qo=1,(function(e){(function(A,i){typeof Sm=="function"&&e&&e.exports?e.exports=i():(A.dcodeIO=A.dcodeIO||{}).Long=i()})(Im,function(){function A(k,x,X){this.low=k|0,this.high=x|0,this.unsigned=!!X}A.prototype.__isLong__,Object.defineProperty(A.prototype,"__isLong__",{value:!0,enumerable:!1,configurable:!1});function i(k){return(k&&k.__isLong__)===!0}A.isLong=i;var a={},c={};function h(k,x){var X,J,yA;return x?(k>>>=0,(yA=0<=k&&k<256)&&(J=c[k],J)?J:(X=m(k,(k|0)<0?-1:0,!0),yA&&(c[k]=X),X)):(k|=0,(yA=-128<=k&&k<128)&&(J=a[k],J)?J:(X=m(k,k<0?-1:0,!1),yA&&(a[k]=X),X))}A.fromInt=h;function g(k,x){if(isNaN(k)||!isFinite(k))return x?z:R;if(x){if(k<0)return z;if(k>=Y)return $}else{if(k<=-Z)return lA;if(k+1>=Z)return j}return k<0?g(-k,x).neg():m(k%N|0,k/N|0,x)}A.fromNumber=g;function m(k,x,X){return new A(k,x,X)}A.fromBits=m;var y=Math.pow;function v(k,x,X){if(k.length===0)throw Error("empty string");if(k==="NaN"||k==="Infinity"||k==="+Infinity"||k==="-Infinity")return R;if(typeof x=="number"?(X=x,x=!1):x=!!x,X=X||10,X<2||36<X)throw RangeError("radix");var J;if((J=k.indexOf("-"))>0)throw Error("interior hyphen");if(J===0)return v(k.substring(1),x,X).neg();for(var yA=g(y(X,8)),dA=R,OA=0;OA<k.length;OA+=8){var XA=Math.min(8,k.length-OA),Ae=parseInt(k.substring(OA,OA+XA),X);if(XA<8){var UA=g(y(X,XA));dA=dA.mul(UA).add(g(Ae))}else dA=dA.mul(yA),dA=dA.add(g(Ae))}return dA.unsigned=x,dA}A.fromString=v;function _(k){return k instanceof A?k:typeof k=="number"?g(k):typeof k=="string"?v(k):m(k.low,k.high,k.unsigned)}A.fromValue=_;var C=65536,P=1<<24,N=C*C,Y=N*N,Z=Y/2,tA=h(P),R=h(0);A.ZERO=R;var z=h(0,!0);A.UZERO=z;var rA=h(1);A.ONE=rA;var mA=h(1,!0);A.UONE=mA;var G=h(-1);A.NEG_ONE=G;var j=m(-1,2147483647,!1);A.MAX_VALUE=j;var $=m(-1,-1,!0);A.MAX_UNSIGNED_VALUE=$;var lA=m(0,-2147483648,!1);A.MIN_VALUE=lA;var U=A.prototype;return U.toInt=function(){return this.unsigned?this.low>>>0:this.low},U.toNumber=function(){return this.unsigned?(this.high>>>0)*N+(this.low>>>0):this.high*N+(this.low>>>0)},U.toString=function(x){if(x=x||10,x<2||36<x)throw RangeError("radix");if(this.isZero())return"0";if(this.isNegative())if(this.eq(lA)){var X=g(x),J=this.div(X),yA=J.mul(X).sub(this);return J.toString(x)+yA.toInt().toString(x)}else return"-"+this.neg().toString(x);for(var dA=g(y(x,6),this.unsigned),OA=this,XA="";;){var Ae=OA.div(dA),UA=OA.sub(Ae.mul(dA)).toInt()>>>0,QA=UA.toString(x);if(OA=Ae,OA.isZero())return QA+XA;for(;QA.length<6;)QA="0"+QA;XA=""+QA+XA}},U.getHighBits=function(){return this.high},U.getHighBitsUnsigned=function(){return this.high>>>0},U.getLowBits=function(){return this.low},U.getLowBitsUnsigned=function(){return this.low>>>0},U.getNumBitsAbs=function(){if(this.isNegative())return this.eq(lA)?64:this.neg().getNumBitsAbs();for(var x=this.high!=0?this.high:this.low,X=31;X>0&&(x&1<<X)==0;X--);return this.high!=0?X+33:X+1},U.isZero=function(){return this.high===0&&this.low===0},U.isNegative=function(){return!this.unsigned&&this.high<0},U.isPositive=function(){return this.unsigned||this.high>=0},U.isOdd=function(){return(this.low&1)===1},U.isEven=function(){return(this.low&1)===0},U.equals=function(x){return i(x)||(x=_(x)),this.unsigned!==x.unsigned&&this.high>>>31===1&&x.high>>>31===1?!1:this.high===x.high&&this.low===x.low},U.eq=U.equals,U.notEquals=function(x){return!this.eq(x)},U.neq=U.notEquals,U.lessThan=function(x){return this.comp(x)<0},U.lt=U.lessThan,U.lessThanOrEqual=function(x){return this.comp(x)<=0},U.lte=U.lessThanOrEqual,U.greaterThan=function(x){return this.comp(x)>0},U.gt=U.greaterThan,U.greaterThanOrEqual=function(x){return this.comp(x)>=0},U.gte=U.greaterThanOrEqual,U.compare=function(x){if(i(x)||(x=_(x)),this.eq(x))return 0;var X=this.isNegative(),J=x.isNegative();return X&&!J?-1:!X&&J?1:this.unsigned?x.high>>>0>this.high>>>0||x.high===this.high&&x.low>>>0>this.low>>>0?-1:1:this.sub(x).isNegative()?-1:1},U.comp=U.compare,U.negate=function(){return!this.unsigned&&this.eq(lA)?lA:this.not().add(rA)},U.neg=U.negate,U.add=function(x){i(x)||(x=_(x));var X=this.high>>>16,J=this.high&65535,yA=this.low>>>16,dA=this.low&65535,OA=x.high>>>16,XA=x.high&65535,Ae=x.low>>>16,UA=x.low&65535,QA=0,jA=0,te=0,Ne=0;return Ne+=dA+UA,te+=Ne>>>16,Ne&=65535,te+=yA+Ae,jA+=te>>>16,te&=65535,jA+=J+XA,QA+=jA>>>16,jA&=65535,QA+=X+OA,QA&=65535,m(te<<16|Ne,QA<<16|jA,this.unsigned)},U.subtract=function(x){return i(x)||(x=_(x)),this.add(x.neg())},U.sub=U.subtract,U.multiply=function(x){if(this.isZero()||(i(x)||(x=_(x)),x.isZero()))return R;if(this.eq(lA))return x.isOdd()?lA:R;if(x.eq(lA))return this.isOdd()?lA:R;if(this.isNegative())return x.isNegative()?this.neg().mul(x.neg()):this.neg().mul(x).neg();if(x.isNegative())return this.mul(x.neg()).neg();if(this.lt(tA)&&x.lt(tA))return g(this.toNumber()*x.toNumber(),this.unsigned);var X=this.high>>>16,J=this.high&65535,yA=this.low>>>16,dA=this.low&65535,OA=x.high>>>16,XA=x.high&65535,Ae=x.low>>>16,UA=x.low&65535,QA=0,jA=0,te=0,Ne=0;return Ne+=dA*UA,te+=Ne>>>16,Ne&=65535,te+=yA*UA,jA+=te>>>16,te&=65535,te+=dA*Ae,jA+=te>>>16,te&=65535,jA+=J*UA,QA+=jA>>>16,jA&=65535,jA+=yA*Ae,QA+=jA>>>16,jA&=65535,jA+=dA*XA,QA+=jA>>>16,jA&=65535,QA+=X*UA+J*Ae+yA*XA+dA*OA,QA&=65535,m(te<<16|Ne,QA<<16|jA,this.unsigned)},U.mul=U.multiply,U.divide=function(x){if(i(x)||(x=_(x)),x.isZero())throw Error("division by zero");if(this.isZero())return this.unsigned?z:R;var X,J,yA;if(this.unsigned){if(x.unsigned||(x=x.toUnsigned()),x.gt(this))return z;if(x.gt(this.shru(1)))return mA;yA=z}else{if(this.eq(lA)){if(x.eq(rA)||x.eq(G))return lA;if(x.eq(lA))return rA;var dA=this.shr(1);return X=dA.div(x).shl(1),X.eq(R)?x.isNegative()?rA:G:(J=this.sub(x.mul(X)),yA=X.add(J.div(x)),yA)}else if(x.eq(lA))return this.unsigned?z:R;if(this.isNegative())return x.isNegative()?this.neg().div(x.neg()):this.neg().div(x).neg();if(x.isNegative())return this.div(x.neg()).neg();yA=R}for(J=this;J.gte(x);){X=Math.max(1,Math.floor(J.toNumber()/x.toNumber()));for(var OA=Math.ceil(Math.log(X)/Math.LN2),XA=OA<=48?1:y(2,OA-48),Ae=g(X),UA=Ae.mul(x);UA.isNegative()||UA.gt(J);)X-=XA,Ae=g(X,this.unsigned),UA=Ae.mul(x);Ae.isZero()&&(Ae=rA),yA=yA.add(Ae),J=J.sub(UA)}return yA},U.div=U.divide,U.modulo=function(x){return i(x)||(x=_(x)),this.sub(this.div(x).mul(x))},U.mod=U.modulo,U.not=function(){return m(~this.low,~this.high,this.unsigned)},U.and=function(x){return i(x)||(x=_(x)),m(this.low&x.low,this.high&x.high,this.unsigned)},U.or=function(x){return i(x)||(x=_(x)),m(this.low|x.low,this.high|x.high,this.unsigned)},U.xor=function(x){return i(x)||(x=_(x)),m(this.low^x.low,this.high^x.high,this.unsigned)},U.shiftLeft=function(x){return i(x)&&(x=x.toInt()),(x&=63)===0?this:x<32?m(this.low<<x,this.high<<x|this.low>>>32-x,this.unsigned):m(0,this.low<<x-32,this.unsigned)},U.shl=U.shiftLeft,U.shiftRight=function(x){return i(x)&&(x=x.toInt()),(x&=63)===0?this:x<32?m(this.low>>>x|this.high<<32-x,this.high>>x,this.unsigned):m(this.high>>x-32,this.high>=0?0:-1,this.unsigned)},U.shr=U.shiftRight,U.shiftRightUnsigned=function(x){if(i(x)&&(x=x.toInt()),x&=63,x===0)return this;var X=this.high;if(x<32){var J=this.low;return m(J>>>x|X<<32-x,X>>>x,this.unsigned)}else return x===32?m(X,0,this.unsigned):m(X>>>x-32,0,this.unsigned)},U.shru=U.shiftRightUnsigned,U.toSigned=function(){return this.unsigned?m(this.low,this.high,!1):this},U.toUnsigned=function(){return this.unsigned?this:m(this.low,this.high,!0)},U.toBytes=function(k){return k?this.toBytesLE():this.toBytesBE()},U.toBytesLE=function(){var k=this.high,x=this.low;return[x&255,x>>>8&255,x>>>16&255,x>>>24&255,k&255,k>>>8&255,k>>>16&255,k>>>24&255]},U.toBytesBE=function(){var k=this.high,x=this.low;return[k>>>24&255,k>>>16&255,k>>>8&255,k&255,x>>>24&255,x>>>16&255,x>>>8&255,x&255]},A})})(fn)),fn.exports}var Lm=Bm();const hn=jh(Lm),Pm=3,xm=30,Nm=2*xm+1,Vo=180/Math.PI;function Rm(e,A,i){const a=1<<A;return[(e[0]+i[0])/a,(e[1]+i[1])/a]}function zo(e){return e>=.5?1/3*(4*e*e-1):1/3*(1-4*(1-e)*(1-e))}function Dm(e){return[zo(e[0]),zo(e[1])]}function Om(e,[A,i]){switch(e){case 0:return[1,A,i];case 1:return[-A,1,i];case 2:return[-A,-i,1];case 3:return[-1,-i,-A];case 4:return[i,-1,-A];case 5:return[i,A,-1];default:throw new Error("Invalid face")}}function km([e,A,i]){const a=Math.atan2(i,Math.sqrt(e*e+A*A));return[Math.atan2(A,e)*Vo,a*Vo]}function Fm(e){let A=hn.fromString(e,!0,10).toString(2);for(;A.length<Pm+Nm;)A="0"+A;const i=A.lastIndexOf("1"),a=A.substring(0,3),c=A.substring(3,i),h=c.length/2,g=hn.fromString(a,!0,2).toString(10);let m=hn.fromString(c,!0,2).toString(4);for(;m.length<h;)m="0"+m;return`${g}/${m}`}function Um(e,A,i,a){if(a===0){i===1&&(A[0]=e-1-A[0],A[1]=e-1-A[1]);const c=A[0];A[0]=A[1],A[1]=c}}function Qm(e){const A=e.split("/"),i=parseInt(A[0],10),a=A[1],c=a.length,h=[0,0];let g;for(let m=c-1;m>=0;m--){g=c-m;const y=a[m];let v=0,_=0;y==="1"?_=1:y==="2"?(v=1,_=1):y==="3"&&(v=1);const C=Math.pow(2,g-1);Um(C,h,v,_),h[0]+=C*v,h[1]+=C*_}if(i%2===1){const m=h[0];h[0]=h[1],h[1]=m}return{face:i,ij:h,level:g}}function Vm(e){const A=e.padEnd(16,"0");return hn.fromString(A,16)}const zm=100;function Gm({face:e,ij:A,level:i}){const a=[[0,0],[0,1],[1,1],[1,0],[0,0]],c=Math.max(1,Math.ceil(zm*Math.pow(2,-i))),h=new Float64Array(4*c*2+2);let g=0,m=0;for(let y=0;y<4;y++){const v=a[y].slice(0),_=a[y+1],C=(_[0]-v[0])/c,P=(_[1]-v[1])/c;for(let N=0;N<c;N++){v[0]+=C,v[1]+=P;const Y=Rm(A,i,v),Z=Dm(Y),tA=Om(e,Z),R=km(tA);Math.abs(R[1])>89.999&&(R[0]=m);const z=R[0]-m;R[0]+=z>180?-360:z<-180?360:0,h[g++]=R[0],h[g++]=R[1],m=R[0]}}return h[g++]=h[0],h[g++]=h[1],h}function qm(e){if(typeof e=="string"){if(e.indexOf("/")>0)return e;e=Vm(e)}return Fm(e.toString())}function Hm(e){const A=qm(e),i=Qm(A);return Gm(i)}const jm={getS2Token:{type:"accessor",value:e=>e.token}};class fu extends Nt{indexToBounds(){const{data:A,getS2Token:i}=this.props;return{data:A,_normalize:!1,positionFormat:"XY",getPolygon:(a,c)=>Hm(i(a,c))}}}fu.layerName="S2Layer";fu.defaultProps=jm;const R0=512;function Wm(e,A){let i=0,a=0,c=1<<e.length;const h=c/R0;for(let g=0;g<e.length;g++){c>>=1;const m=parseInt(e[g]);m%2&&(i|=c),m>1&&(a|=c)}return[[i/h,R0-a/h],[(i+A)/h,R0-(a+A)/h]]}function Ym(e,A=1){const[i,a]=Wm(e,A),[c,h]=Ws(i),[g,m]=Ws(a);return[g,h,g,m,c,m,c,h,g,h]}const Zm={getQuadkey:{type:"accessor",value:e=>e.quadkey}};class hu extends Nt{indexToBounds(){const{data:A,extruded:i,getQuadkey:a}=this.props,c=i?.99:1;return{data:A,_normalize:!1,positionFormat:"XY",getPolygon:(h,g)=>Ym(a(h,g),c),updateTriggers:{getPolygon:c}}}}hu.layerName="QuadkeyLayer";hu.defaultProps=Zm;class Xm{constructor(A){this.index=A,this.isVisible=!1,this.isSelected=!1,this.parent=null,this.children=[],this.content=null,this._loader=void 0,this._abortController=null,this._loaderId=0,this._isLoaded=!1,this._isCancelled=!1,this._needsReload=!1}get bbox(){return this._bbox}set bbox(A){this._bbox||(this._bbox=A,"west"in A?this.boundingBox=[[A.west,A.south],[A.east,A.north]]:this.boundingBox=[[A.left,A.top],[A.right,A.bottom]])}get data(){return this.isLoading&&this._loader?this._loader.then(()=>this.data):this.content}get isLoaded(){return this._isLoaded&&!this._needsReload}get isLoading(){return!!this._loader&&!this._isCancelled}get needsReload(){return this._needsReload||this._isCancelled}get byteLength(){const A=this.content?this.content.byteLength:0;return Number.isFinite(A)||console.error("byteLength not defined in tile data"),A}async _loadData({getData:A,requestScheduler:i,onLoad:a,onError:c}){const{index:h,id:g,bbox:m,userData:y,zoom:v}=this,_=this._loaderId;this._abortController=new AbortController;const{signal:C}=this._abortController,P=await i.scheduleRequest(this,Z=>Z.isSelected?1:-1);if(!P){this._isCancelled=!0;return}if(this._isCancelled){P.done();return}let N=null,Y;try{N=await A({index:h,id:g,bbox:m,userData:y,zoom:v,signal:C})}catch(Z){Y=Z||!0}finally{P.done()}if(_===this._loaderId){if(this._loader=void 0,this.content=N,this._isCancelled&&!N){this._isLoaded=!1;return}this._isLoaded=!0,this._isCancelled=!1,Y?c(Y,this):a(this)}}loadData(A){return this._isLoaded=!1,this._isCancelled=!1,this._needsReload=!1,this._loaderId++,this._loader=this._loadData(A),this._loader}setNeedsReload(){this.isLoading&&(this.abort(),this._loader=void 0),this._needsReload=!0}abort(){this.isLoaded||(this._isCancelled=!0,this._abortController?.abort())}}const me={OUTSIDE:-1,INTERSECTING:0,INSIDE:1},Go=new H,Jm=new H;class Ni{constructor(A=[0,0,0],i=[0,0,0],a){a=a||Go.copy(A).add(i).scale(.5),this.center=new H(a),this.halfDiagonal=new H(i).subtract(this.center),this.minimum=new H(A),this.maximum=new H(i)}clone(){return new Ni(this.minimum,this.maximum,this.center)}equals(A){return this===A||!!A&&this.minimum.equals(A.minimum)&&this.maximum.equals(A.maximum)}transform(A){return this.center.transformAsPoint(A),this.halfDiagonal.transform(A),this.minimum.transform(A),this.maximum.transform(A),this}intersectPlane(A){const{halfDiagonal:i}=this,a=Jm.from(A.normal),c=i.x*Math.abs(a.x)+i.y*Math.abs(a.y)+i.z*Math.abs(a.z),h=this.center.dot(a)+A.distance;return h-c>0?me.INSIDE:h+c<0?me.OUTSIDE:me.INTERSECTING}distanceTo(A){return Math.sqrt(this.distanceSquaredTo(A))}distanceSquaredTo(A){const i=Go.from(A).subtract(this.center),{halfDiagonal:a}=this;let c=0,h;return h=Math.abs(i.x)-a.x,h>0&&(c+=h*h),h=Math.abs(i.y)-a.y,h>0&&(c+=h*h),h=Math.abs(i.z)-a.z,h>0&&(c+=h*h),c}}const yr=new H,qo=new H;class Ir{constructor(A=[0,0,0],i=0){this.radius=-0,this.center=new H,this.fromCenterRadius(A,i)}fromCenterRadius(A,i){return this.center.from(A),this.radius=i,this}fromCornerPoints(A,i){return i=yr.from(i),this.center=new H().from(A).add(i).scale(.5),this.radius=this.center.distance(i),this}equals(A){return this===A||!!A&&this.center.equals(A.center)&&this.radius===A.radius}clone(){return new Ir(this.center,this.radius)}union(A){const i=this.center,a=this.radius,c=A.center,h=A.radius,g=yr.copy(c).subtract(i),m=g.magnitude();if(a>=m+h)return this.clone();if(h>=m+a)return A.clone();const y=(a+m+h)*.5;return qo.copy(g).scale((-a+y)/m).add(i),this.center.copy(qo),this.radius=y,this}expand(A){const a=yr.from(A).subtract(this.center).magnitude();return a>this.radius&&(this.radius=a),this}transform(A){this.center.transform(A);const i=Qh(yr,A);return this.radius=Math.max(i[0],Math.max(i[1],i[2]))*this.radius,this}distanceSquaredTo(A){const i=this.distanceTo(A);return i*i}distanceTo(A){const a=yr.from(A).subtract(this.center);return Math.max(0,a.len()-this.radius)}intersectPlane(A){const i=this.center,a=this.radius,h=A.normal.dot(i)+A.distance;return h<-a?me.OUTSIDE:h<a?me.INTERSECTING:me.INSIDE}}const Km=new H,$m=new H,$r=new H,An=new H,en=new H,A3=new H,e3=new H,rt={COLUMN0ROW0:0,COLUMN0ROW1:1,COLUMN0ROW2:2,COLUMN1ROW0:3,COLUMN1ROW1:4,COLUMN1ROW2:5,COLUMN2ROW0:6,COLUMN2ROW1:7,COLUMN2ROW2:8};class Br{constructor(A=[0,0,0],i=[0,0,0,0,0,0,0,0,0]){this.center=new H().from(A),this.halfAxes=new he(i)}get halfSize(){const A=this.halfAxes.getColumn(0),i=this.halfAxes.getColumn(1),a=this.halfAxes.getColumn(2);return[new H(A).len(),new H(i).len(),new H(a).len()]}get quaternion(){const A=this.halfAxes.getColumn(0),i=this.halfAxes.getColumn(1),a=this.halfAxes.getColumn(2),c=new H(A).normalize(),h=new H(i).normalize(),g=new H(a).normalize();return new wn().fromMatrix3(new he([...c,...h,...g]))}fromCenterHalfSizeQuaternion(A,i,a){const c=new wn(a),h=new he().fromQuaternion(c);return h[0]=h[0]*i[0],h[1]=h[1]*i[0],h[2]=h[2]*i[0],h[3]=h[3]*i[1],h[4]=h[4]*i[1],h[5]=h[5]*i[1],h[6]=h[6]*i[2],h[7]=h[7]*i[2],h[8]=h[8]*i[2],this.center=new H().from(A),this.halfAxes=h,this}clone(){return new Br(this.center,this.halfAxes)}equals(A){return this===A||!!A&&this.center.equals(A.center)&&this.halfAxes.equals(A.halfAxes)}getBoundingSphere(A=new Ir){const i=this.halfAxes,a=i.getColumn(0,$r),c=i.getColumn(1,An),h=i.getColumn(2,en),g=Km.copy(a).add(c).add(h);return A.center.copy(this.center),A.radius=g.magnitude(),A}intersectPlane(A){const i=this.center,a=A.normal,c=this.halfAxes,h=a.x,g=a.y,m=a.z,y=Math.abs(h*c[rt.COLUMN0ROW0]+g*c[rt.COLUMN0ROW1]+m*c[rt.COLUMN0ROW2])+Math.abs(h*c[rt.COLUMN1ROW0]+g*c[rt.COLUMN1ROW1]+m*c[rt.COLUMN1ROW2])+Math.abs(h*c[rt.COLUMN2ROW0]+g*c[rt.COLUMN2ROW1]+m*c[rt.COLUMN2ROW2]),v=a.dot(i)+A.distance;return v<=-y?me.OUTSIDE:v>=y?me.INSIDE:me.INTERSECTING}distanceTo(A){return Math.sqrt(this.distanceSquaredTo(A))}distanceSquaredTo(A){const i=$m.from(A).subtract(this.center),a=this.halfAxes,c=a.getColumn(0,$r),h=a.getColumn(1,An),g=a.getColumn(2,en),m=c.magnitude(),y=h.magnitude(),v=g.magnitude();c.normalize(),h.normalize(),g.normalize();let _=0,C;return C=Math.abs(i.dot(c))-m,C>0&&(_+=C*C),C=Math.abs(i.dot(h))-y,C>0&&(_+=C*C),C=Math.abs(i.dot(g))-v,C>0&&(_+=C*C),_}computePlaneDistances(A,i,a=[-0,-0]){let c=Number.POSITIVE_INFINITY,h=Number.NEGATIVE_INFINITY;const g=this.center,m=this.halfAxes,y=m.getColumn(0,$r),v=m.getColumn(1,An),_=m.getColumn(2,en),C=A3.copy(y).add(v).add(_).add(g),P=e3.copy(C).subtract(A);let N=i.dot(P);return c=Math.min(N,c),h=Math.max(N,h),C.copy(g).add(y).add(v).subtract(_),P.copy(C).subtract(A),N=i.dot(P),c=Math.min(N,c),h=Math.max(N,h),C.copy(g).add(y).subtract(v).add(_),P.copy(C).subtract(A),N=i.dot(P),c=Math.min(N,c),h=Math.max(N,h),C.copy(g).add(y).subtract(v).subtract(_),P.copy(C).subtract(A),N=i.dot(P),c=Math.min(N,c),h=Math.max(N,h),g.copy(C).subtract(y).add(v).add(_),P.copy(C).subtract(A),N=i.dot(P),c=Math.min(N,c),h=Math.max(N,h),g.copy(C).subtract(y).add(v).subtract(_),P.copy(C).subtract(A),N=i.dot(P),c=Math.min(N,c),h=Math.max(N,h),g.copy(C).subtract(y).subtract(v).add(_),P.copy(C).subtract(A),N=i.dot(P),c=Math.min(N,c),h=Math.max(N,h),g.copy(C).subtract(y).subtract(v).subtract(_),P.copy(C).subtract(A),N=i.dot(P),c=Math.min(N,c),h=Math.max(N,h),a[0]=c,a[1]=h,a}transform(A){this.center.transformAsPoint(A);const i=this.halfAxes.getColumn(0,$r);i.transformAsPoint(A);const a=this.halfAxes.getColumn(1,An);a.transformAsPoint(A);const c=this.halfAxes.getColumn(2,en);return c.transformAsPoint(A),this.halfAxes=new he([...i,...a,...c]),this}getTransform(){throw new Error("not implemented")}}const Ho=new H,jo=new H;class ze{constructor(A=[0,0,1],i=0){this.normal=new H,this.distance=-0,this.fromNormalDistance(A,i)}fromNormalDistance(A,i){return nt(Number.isFinite(i)),this.normal.from(A).normalize(),this.distance=i,this}fromPointNormal(A,i){A=Ho.from(A),this.normal.from(i).normalize();const a=-this.normal.dot(A);return this.distance=a,this}fromCoefficients(A,i,a,c){return this.normal.set(A,i,a),nt(St(this.normal.len(),1)),this.distance=c,this}clone(){return new ze(this.normal,this.distance)}equals(A){return St(this.distance,A.distance)&&St(this.normal,A.normal)}getPointDistance(A){return this.normal.dot(A)+this.distance}transform(A){const i=jo.copy(this.normal).transformAsVector(A).normalize(),a=this.normal.scale(-this.distance).transform(A);return this.fromPointNormal(a,i)}projectPointOntoPlane(A,i=[0,0,0]){const a=Ho.from(A),c=this.getPointDistance(a),h=jo.copy(this.normal).scale(c);return a.subtract(h).to(i)}}const Wo=[new H([1,0,0]),new H([0,1,0]),new H([0,0,1])],Yo=new H,t3=new H;class xe{constructor(A=[]){this.planes=A}fromBoundingSphere(A){this.planes.length=2*Wo.length;const i=A.center,a=A.radius;let c=0;for(const h of Wo){let g=this.planes[c],m=this.planes[c+1];g||(g=this.planes[c]=new ze),m||(m=this.planes[c+1]=new ze);const y=Yo.copy(h).scale(-a).add(i);g.fromPointNormal(y,h);const v=Yo.copy(h).scale(a).add(i),_=t3.copy(h).negate();m.fromPointNormal(v,_),c+=2}return this}computeVisibility(A){let i=me.INSIDE;for(const a of this.planes)switch(A.intersectPlane(a)){case me.OUTSIDE:return me.OUTSIDE;case me.INTERSECTING:i=me.INTERSECTING;break}return i}computeVisibilityWithPlaneMask(A,i){if(nt(Number.isFinite(i),"parentPlaneMask is required."),i===xe.MASK_OUTSIDE||i===xe.MASK_INSIDE)return i;let a=xe.MASK_INSIDE;const c=this.planes;for(let h=0;h<this.planes.length;++h){const g=h<31?1<<h:0;if(h<31&&(i&g)===0)continue;const m=c[h],y=A.intersectPlane(m);if(y===me.OUTSIDE)return xe.MASK_OUTSIDE;y===me.INTERSECTING&&(a|=g)}return a}}xe.MASK_OUTSIDE=4294967295;xe.MASK_INSIDE=0;xe.MASK_INDETERMINATE=2147483647;new H;new H;new H;new H;new H;new H;new H;new H;new H;new H;new H;new H;new H;new H;new H;new H;new H;const Ze=new he,r3=new he,n3=new he,tn=new he,Zo=new he;function i3(e,A={}){const i=m2,a=10;let c=0,h=0;const g=r3,m=n3;g.identity(),m.copy(e);const y=i*s3(m);for(;h<a&&o3(m)>y;)a3(m,tn),Zo.copy(tn).transpose(),m.multiplyRight(tn),m.multiplyLeft(Zo),g.multiplyRight(tn),++c>2&&(++h,c=0);return A.unitary=g.toTarget(A.unitary),A.diagonal=m.toTarget(A.diagonal),A}function s3(e){let A=0;for(let i=0;i<9;++i){const a=e[i];A+=a*a}return Math.sqrt(A)}const ai=[1,0,0],li=[2,2,1];function o3(e){let A=0;for(let i=0;i<3;++i){const a=e[Ze.getElementIndex(li[i],ai[i])];A+=2*a*a}return Math.sqrt(A)}function a3(e,A){const i=rl;let a=0,c=1;for(let v=0;v<3;++v){const _=Math.abs(e[Ze.getElementIndex(li[v],ai[v])]);_>a&&(c=v,a=_)}const h=ai[c],g=li[c];let m=1,y=0;if(Math.abs(e[Ze.getElementIndex(g,h)])>i){const v=e[Ze.getElementIndex(g,g)],_=e[Ze.getElementIndex(h,h)],C=e[Ze.getElementIndex(g,h)],P=(v-_)/2/C;let N;P<0?N=-1/(-P+Math.sqrt(1+P*P)):N=1/(P+Math.sqrt(1+P*P)),m=1/Math.sqrt(1+N*N),y=N*m}return he.IDENTITY.to(A),A[Ze.getElementIndex(h,h)]=A[Ze.getElementIndex(g,g)]=m,A[Ze.getElementIndex(g,h)]=y,A[Ze.getElementIndex(h,g)]=-y,A}const gt=new H,l3=new H,u3=new H,c3=new H,f3=new H,h3=new he,d3={diagonal:new he,unitary:new he};function du(e,A=new Br){if(!e||e.length===0)return A.halfAxes=new he([0,0,0,0,0,0,0,0,0]),A.center=new H,A;const i=e.length,a=new H(0,0,0);for(const U of e)a.add(U);const c=1/i;a.multiplyByScalar(c);let h=0,g=0,m=0,y=0,v=0,_=0;for(const U of e){const k=gt.copy(U).subtract(a);h+=k.x*k.x,g+=k.x*k.y,m+=k.x*k.z,y+=k.y*k.y,v+=k.y*k.z,_+=k.z*k.z}h*=c,g*=c,m*=c,y*=c,v*=c,_*=c;const C=h3;C[0]=h,C[1]=g,C[2]=m,C[3]=g,C[4]=y,C[5]=v,C[6]=m,C[7]=v,C[8]=_;const{unitary:P}=i3(C,d3),N=A.halfAxes.copy(P);let Y=N.getColumn(0,u3),Z=N.getColumn(1,c3),tA=N.getColumn(2,f3),R=-Number.MAX_VALUE,z=-Number.MAX_VALUE,rA=-Number.MAX_VALUE,mA=Number.MAX_VALUE,G=Number.MAX_VALUE,j=Number.MAX_VALUE;for(const U of e)gt.copy(U),R=Math.max(gt.dot(Y),R),z=Math.max(gt.dot(Z),z),rA=Math.max(gt.dot(tA),rA),mA=Math.min(gt.dot(Y),mA),G=Math.min(gt.dot(Z),G),j=Math.min(gt.dot(tA),j);Y=Y.multiplyByScalar(.5*(mA+R)),Z=Z.multiplyByScalar(.5*(G+z)),tA=tA.multiplyByScalar(.5*(j+rA)),A.center.copy(Y).add(Z).add(tA);const $=l3.set(R-mA,z-G,rA-j).multiplyByScalar(.5),lA=new he([$[0],0,0,0,$[1],0,0,0,$[2]]);return A.halfAxes.multiplyRight(lA),A}const Jt=512,Xo=3,gu=[[.5,.5],[0,0],[0,1],[1,0],[1,1]],pu=gu.concat([[0,.5],[.5,0],[1,.5],[.5,1]]),g3=pu.concat([[.25,.5],[.75,.5]]);class Kt{constructor(A,i,a){this.x=A,this.y=i,this.z=a}get children(){if(!this._children){const A=this.x*2,i=this.y*2,a=this.z+1;this._children=[new Kt(A,i,a),new Kt(A,i+1,a),new Kt(A+1,i,a),new Kt(A+1,i+1,a)]}return this._children}update(A){const{viewport:i,cullingVolume:a,elevationBounds:c,minZ:h,maxZ:g,bounds:m,offset:y,project:v}=A,_=this.getBoundingVolume(c,y,v);if(m&&!this.insideBounds(m)||a.computeVisibility(_)<0)return!1;if(!this.childVisible){let{z:P}=this;if(P<g&&P>=h){const N=_.distanceTo(i.cameraPosition)*i.scale/i.height;P+=Math.floor(Math.log2(N))}if(P>=g)return this.selected=!0,!0}this.selected=!1,this.childVisible=!0;for(const P of this.children)P.update(A);return!0}getSelected(A=[]){if(this.selected&&A.push(this),this._children)for(const i of this._children)i.getSelected(A);return A}insideBounds([A,i,a,c]){const h=Math.pow(2,this.z),g=Jt/h;return this.x*g<a&&this.y*g<c&&(this.x+1)*g>A&&(this.y+1)*g>i}getBoundingVolume(A,i,a){if(a){const y=this.z<1?g3:this.z<2?pu:gu,v=[];for(const _ of y){const C=ci(this.x+_[0],this.y+_[1],this.z);C[2]=A[0],v.push(a(C)),A[0]!==A[1]&&(C[2]=A[1],v.push(a(C)))}return du(v)}const c=Math.pow(2,this.z),h=Jt/c,g=this.x*h+i*Jt,m=Jt-(this.y+1)*h;return new Ni([g,m,A[0]],[g+h,m+h,A[1]])}}function p3(e,A,i,a){const c=e instanceof Jh&&e.resolution?e.projectPosition:null,h=Object.values(e.getFrustumPlanes()).map(({normal:N,distance:Y})=>new ze(N.clone().negate(),Y)),g=new xe(h),m=e.distanceScales.unitsPerMeter[2],y=i&&i[0]*m||0,v=i&&i[1]*m||0,_=e instanceof Ys&&e.pitch<=60?A:0;if(a){const[N,Y,Z,tA]=a,R=X0([N,tA]),z=X0([Z,Y]);a=[R[0],Jt-R[1],z[0],Jt-z[1]]}const C=new Kt(0,0,0),P={viewport:e,project:c,cullingVolume:g,elevationBounds:[y,v],minZ:_,maxZ:A,bounds:a,offset:0};if(C.update(P),e instanceof Ys&&e.subViewports&&e.subViewports.length>1){for(P.offset=-1;C.update(P)&&!(--P.offset<-Xo););for(P.offset=1;C.update(P)&&!(++P.offset>Xo););}return C.getSelected()}const ot=512,m3=[-1/0,-1/0,1/0,1/0],En={type:"object",value:null,validate:(e,A)=>A.optional&&e===null||typeof e=="string"||Array.isArray(e)&&e.every(i=>typeof i=="string"),equal:(e,A)=>{if(e===A)return!0;if(!Array.isArray(e)||!Array.isArray(A))return!1;const i=e.length;if(i!==A.length)return!1;for(let a=0;a<i;a++)if(e[a]!==A[a])return!1;return!0}};function Ri(e,A){const i=[A.transformAsPoint([e[0],e[1]]),A.transformAsPoint([e[2],e[1]]),A.transformAsPoint([e[0],e[3]]),A.transformAsPoint([e[2],e[3]])];return[Math.min(...i.map(c=>c[0])),Math.min(...i.map(c=>c[1])),Math.max(...i.map(c=>c[0])),Math.max(...i.map(c=>c[1]))]}function w3(e){return Math.abs(e.split("").reduce((A,i)=>(A<<5)-A+i.charCodeAt(0)|0,0))}function Mn(e,A){if(!e||!e.length)return null;const{index:i,id:a}=A;if(Array.isArray(e)){const h=w3(a)%e.length;e=e[h]}let c=e;for(const h of Object.keys(i)){const g=new RegExp(`{${h}}`,"g");c=c.replace(g,String(i[h]))}return Number.isInteger(i.y)&&Number.isInteger(i.z)&&(c=c.replace(/\{-y\}/g,String(Math.pow(2,i.z)-i.y-1))),c}function y3(e,A,i){let a;return a=e.getBounds(),e.isGeospatial?[Math.max(a[0],i[0]),Math.max(a[1],i[1]),Math.min(a[2],i[2]),Math.min(a[3],i[3])]:[Math.max(Math.min(a[0],i[2]),i[0]),Math.max(Math.min(a[1],i[3]),i[1]),Math.min(Math.max(a[2],i[0]),i[2]),Math.min(Math.max(a[3],i[1]),i[3])]}function T3({viewport:e,z:A,cullRect:i}){return(e.subViewports||[e]).map(c=>ui(c,A||0,i))}function ui(e,A,i){if(!Array.isArray(A)){const h=i.x-e.x,g=i.y-e.y,{width:m,height:y}=i,v={targetZ:A},_=e.unproject([h,g],v),C=e.unproject([h+m,g],v),P=e.unproject([h,g+y],v),N=e.unproject([h+m,g+y],v);return[Math.min(_[0],C[0],P[0],N[0]),Math.min(_[1],C[1],P[1],N[1]),Math.max(_[0],C[0],P[0],N[0]),Math.max(_[1],C[1],P[1],N[1])]}const a=ui(e,A[0],i),c=ui(e,A[1],i);return[Math.min(a[0],c[0]),Math.min(a[1],c[1]),Math.max(a[2],c[2]),Math.max(a[3],c[3])]}function v3(e,A,i){return i?Ri(e,i).map(c=>c*A/ot):e.map(a=>a*A/ot)}function Di(e,A){return Math.pow(2,e)*ot/A}function ci(e,A,i){const a=Di(i,ot),c=e/a*360-180,h=Math.PI-2*Math.PI*A/a,g=180/Math.PI*Math.atan(.5*(Math.exp(h)-Math.exp(-h)));return[c,g]}function Jo(e,A,i,a){const c=Di(i,a);return[e/c*ot,A/c*ot]}function _3(e,A,i,a,c=ot){if(e.isGeospatial){const[v,_]=ci(A,i,a),[C,P]=ci(A+1,i+1,a);return{west:v,north:_,east:C,south:P}}const[h,g]=Jo(A,i,a,c),[m,y]=Jo(A+1,i+1,a,c);return{left:h,top:g,right:m,bottom:y}}function b3(e,A,i,a,c){const h=y3(e,null,a),g=Di(A,i),[m,y,v,_]=v3(h,g,c),C=[];for(let P=Math.floor(m);P<v;P++)for(let N=Math.floor(y);N<_;N++)C.push({x:P,y:N,z:A});return C}function E3({viewport:e,maxZoom:A,minZoom:i,zRange:a,extent:c,tileSize:h=ot,modelMatrix:g,modelMatrixInverse:m,zoomOffset:y=0}){let v=e.isGeospatial?Math.round(e.zoom+Math.log2(ot/h))+y:Math.ceil(e.zoom)+y;if(typeof i=="number"&&Number.isFinite(i)&&v<i){if(!c)return[];v=i}typeof A=="number"&&Number.isFinite(A)&&v>A&&(v=A);let _=c;return g&&m&&c&&!e.isGeospatial&&(_=Ri(c,g)),e.isGeospatial?p3(e,v,a,c):b3(e,v,h,_||m3,m)}function M3(e){return/(?=.*{z})(?=.*{x})(?=.*({y}|{-y}))/.test(e)}function C3(e){return Number.isFinite(e.west)&&Number.isFinite(e.north)&&Number.isFinite(e.east)&&Number.isFinite(e.south)}function S3(e){let A={},i;return a=>{for(const c in a)if(!I3(a[c],A[c])){i=e(a),A=a;break}return i}}function I3(e,A){if(e===A)return!0;if(Array.isArray(e)){const i=e.length;if(!A||A.length!==i)return!1;for(let a=0;a<i;a++)if(e[a]!==A[a])return!1;return!0}return!1}const Ko=1,Dn=2,B3="never",L3="no-overlap",Oi="best-available",P3=5,x3={[Oi]:D3,[L3]:O3,[B3]:()=>{}},N3={extent:null,tileSize:512,maxZoom:null,minZoom:null,maxCacheSize:null,maxCacheByteSize:null,refinementStrategy:"best-available",zRange:null,maxRequests:6,debounceTime:0,zoomOffset:0,onTileLoad:()=>{},onTileUnload:()=>{},onTileError:()=>{}};class R3{constructor(A){this._getCullBounds=S3(T3),this.opts={...N3,...A},this.setOptions(this.opts),this.onTileLoad=i=>{this.opts.onTileLoad?.(i),this.opts.maxCacheByteSize!==null&&(this._cacheByteSize+=i.byteLength,this._resizeCache())},this._requestScheduler=new tl({throttleRequests:this.opts.maxRequests>0||this.opts.debounceTime>0,maxRequests:this.opts.maxRequests,debounceTime:this.opts.debounceTime}),this._cache=new Map,this._tiles=[],this._dirty=!1,this._cacheByteSize=0,this._viewport=null,this._zRange=null,this._selectedTiles=null,this._frameNumber=0,this._modelMatrix=new KA,this._modelMatrixInverse=new KA}get tiles(){return this._tiles}get selectedTiles(){return this._selectedTiles}get isLoaded(){return this._selectedTiles!==null&&this._selectedTiles.every(A=>A.isLoaded)}get needsReload(){return this._selectedTiles!==null&&this._selectedTiles.some(A=>A.needsReload)}setOptions(A){Object.assign(this.opts,A),Number.isFinite(A.maxZoom)&&(this._maxZoom=Math.floor(A.maxZoom)),Number.isFinite(A.minZoom)&&(this._minZoom=Math.ceil(A.minZoom))}finalize(){for(const A of this._cache.values())A.isLoading&&A.abort();this._cache.clear(),this._tiles=[],this._selectedTiles=null}reloadAll(){for(const A of this._cache.keys()){const i=this._cache.get(A);!this._selectedTiles||!this._selectedTiles.includes(i)?this._cache.delete(A):i.setNeedsReload()}}update(A,{zRange:i,modelMatrix:a}={zRange:null,modelMatrix:null}){const c=a?new KA(a):new KA,h=!c.equals(this._modelMatrix);if(!this._viewport||!A.equals(this._viewport)||!St(this._zRange,i)||h){h&&(this._modelMatrixInverse=c.clone().invert(),this._modelMatrix=c),this._viewport=A,this._zRange=i;const m=this.getTileIndices({viewport:A,maxZoom:this._maxZoom,minZoom:this._minZoom,zRange:i,modelMatrix:this._modelMatrix,modelMatrixInverse:this._modelMatrixInverse});this._selectedTiles=m.map(y=>this._getTile(y,!0)),this._dirty&&this._rebuildTree()}else this.needsReload&&(this._selectedTiles=this._selectedTiles.map(m=>this._getTile(m.index,!0)));const g=this.updateTileStates();return this._pruneRequests(),this._dirty&&this._resizeCache(),g&&this._frameNumber++,this._frameNumber}isTileVisible(A,i,a){if(!A.isVisible)return!1;if(i&&this._viewport){const c=this._getCullBounds({viewport:this._viewport,z:this._zRange,cullRect:i});let{bbox:h}=A;for(const[g,m,y,v]of c){let _;if("west"in h)_=h.west<y&&h.east>g&&h.south<v&&h.north>m;else{if(a&&!KA.IDENTITY.equals(a)){const[N,Y,Z,tA]=Ri([h.left,h.top,h.right,h.bottom],a);h={left:N,top:Y,right:Z,bottom:tA}}const C=Math.min(h.top,h.bottom),P=Math.max(h.top,h.bottom);_=h.left<y&&h.right>g&&C<v&&P>m}if(_)return!0}return!1}return!0}getTileIndices({viewport:A,maxZoom:i,minZoom:a,zRange:c,modelMatrix:h,modelMatrixInverse:g}){const{tileSize:m,extent:y,zoomOffset:v}=this.opts;return E3({viewport:A,maxZoom:i,minZoom:a,zRange:c,tileSize:m,extent:y,modelMatrix:h,modelMatrixInverse:g,zoomOffset:v})}getTileId(A){return`${A.x}-${A.y}-${A.z}`}getTileZoom(A){return A.z}getTileMetadata(A){const{tileSize:i}=this.opts;return{bbox:_3(this._viewport,A.x,A.y,A.z,i)}}getParentIndex(A){const i=Math.floor(A.x/2),a=Math.floor(A.y/2),c=A.z-1;return{x:i,y:a,z:c}}updateTileStates(){const A=this.opts.refinementStrategy||Oi,i=new Array(this._cache.size);let a=0;for(const c of this._cache.values())i[a++]=c.isVisible,c.isSelected=!1,c.isVisible=!1;for(const c of this._selectedTiles)c.isSelected=!0,c.isVisible=!0;(typeof A=="function"?A:x3[A])(Array.from(this._cache.values())),a=0;for(const c of this._cache.values())if(i[a++]!==c.isVisible)return!0;return!1}_pruneRequests(){const{maxRequests:A=0}=this.opts,i=[];let a=0;for(const c of this._cache.values())c.isLoading&&(a++,!c.isSelected&&!c.isVisible&&i.push(c));for(;A>0&&a>A&&i.length>0;)i.shift().abort(),a--}_rebuildTree(){const{_cache:A}=this;for(const i of A.values())i.parent=null,i.children&&(i.children.length=0);for(const i of A.values()){const a=this._getNearestAncestor(i);i.parent=a,a?.children&&a.children.push(i)}}_resizeCache(){const{_cache:A,opts:i}=this,a=i.maxCacheSize??(i.maxCacheByteSize!==null?1/0:P3*this.selectedTiles.length),c=i.maxCacheByteSize??1/0;if(A.size>a||this._cacheByteSize>c){for(const[g,m]of A)if(!m.isVisible&&!m.isSelected&&(this._cacheByteSize-=i.maxCacheByteSize!==null?m.byteLength:0,A.delete(g),this.opts.onTileUnload?.(m)),A.size<=a&&this._cacheByteSize<=c)break;this._rebuildTree(),this._dirty=!0}this._dirty&&(this._tiles=Array.from(this._cache.values()).sort((g,m)=>g.zoom-m.zoom),this._dirty=!1)}_getTile(A,i){const a=this.getTileId(A);let c=this._cache.get(a),h=!1;return!c&&i?(c=new Xm(A),Object.assign(c,this.getTileMetadata(c.index)),Object.assign(c,{id:a,zoom:this.getTileZoom(c.index)}),h=!0,this._cache.set(a,c),this._dirty=!0):c&&c.needsReload&&(h=!0),c&&h&&c.loadData({getData:this.opts.getTileData,requestScheduler:this._requestScheduler,onLoad:this.onTileLoad,onError:this.opts.onTileError}),c}_getNearestAncestor(A){const{_minZoom:i=0}=this;let a=A.index;for(;this.getTileZoom(a)>i;){a=this.getParentIndex(a);const c=this._getTile(a);if(c)return c}return null}}function D3(e){for(const A of e)A.state=0;for(const A of e)A.isSelected&&!mu(A)&&ki(A);for(const A of e)A.isVisible=!!(A.state&Dn)}function O3(e){for(const i of e)i.state=0;for(const i of e)i.isSelected&&mu(i);const A=Array.from(e).sort((i,a)=>i.zoom-a.zoom);for(const i of A)if(i.isVisible=!!(i.state&Dn),i.children&&(i.isVisible||i.state&Ko))for(const a of i.children)a.state=Ko;else i.isSelected&&ki(i)}function mu(e){let A=e;for(;A;){if(A.isLoaded||A.content)return A.state|=Dn,!0;A=A.parent}return!1}function ki(e){for(const A of e.children)A.isLoaded||A.content?A.state|=Dn:ki(A)}const k3={TilesetClass:R3,data:{type:"data",value:[]},dataComparator:En.equal,renderSubLayers:{type:"function",value:e=>new yi(e)},getTileData:{type:"function",optional:!0,value:null},onViewportLoad:{type:"function",optional:!0,value:null},onTileLoad:{type:"function",value:e=>{}},onTileUnload:{type:"function",value:e=>{}},onTileError:{type:"function",value:e=>console.error(e)},extent:{type:"array",optional:!0,value:null,compare:!0},tileSize:512,maxZoom:null,minZoom:0,maxCacheSize:null,maxCacheByteSize:null,refinementStrategy:Oi,zRange:null,maxRequests:6,debounceTime:0,zoomOffset:0};class Lr extends ar{initializeState(){this.state={tileset:null,isLoaded:!1}}finalizeState(){this.state?.tileset?.finalize()}get isLoaded(){return!!this.state?.tileset?.selectedTiles?.every(A=>A.isLoaded&&A.layers&&A.layers.every(i=>i.isLoaded))}shouldUpdateState({changeFlags:A}){return A.somethingChanged}updateState({changeFlags:A}){let{tileset:i}=this.state;const a=A.propsOrDataChanged||A.updateTriggersChanged,c=A.dataChanged||A.updateTriggersChanged&&(A.updateTriggersChanged.all||A.updateTriggersChanged.getTileData);i?a&&(i.setOptions(this._getTilesetOptions()),c?i.reloadAll():i.tiles.forEach(h=>{h.layers=null})):(i=new this.props.TilesetClass(this._getTilesetOptions()),this.setState({tileset:i})),this._updateTileset()}_getTilesetOptions(){const{tileSize:A,maxCacheSize:i,maxCacheByteSize:a,refinementStrategy:c,extent:h,maxZoom:g,minZoom:m,maxRequests:y,debounceTime:v,zoomOffset:_}=this.props;return{maxCacheSize:i,maxCacheByteSize:a,maxZoom:g,minZoom:m,tileSize:A,refinementStrategy:c,extent:h,maxRequests:y,debounceTime:v,zoomOffset:_,getTileData:this.getTileData.bind(this),onTileLoad:this._onTileLoad.bind(this),onTileError:this._onTileError.bind(this),onTileUnload:this._onTileUnload.bind(this)}}_updateTileset(){const A=this.state.tileset,{zRange:i,modelMatrix:a}=this.props,c=A.update(this.context.viewport,{zRange:i,modelMatrix:a}),{isLoaded:h}=A,g=this.state.isLoaded!==h,m=this.state.frameNumber!==c;h&&(g||m)&&this._onViewportLoad(),m&&this.setState({frameNumber:c}),this.state.isLoaded=h}_onViewportLoad(){const{tileset:A}=this.state,{onViewportLoad:i}=this.props;i&&i(A.selectedTiles)}_onTileLoad(A){this.props.onTileLoad(A),A.layers=null,this.setNeedsUpdate()}_onTileError(A,i){this.props.onTileError(A),i.layers=null,this.setNeedsUpdate()}_onTileUnload(A){this.props.onTileUnload(A)}getTileData(A){const{data:i,getTileData:a,fetch:c}=this.props,{signal:h}=A;return A.url=typeof i=="string"||Array.isArray(i)?Mn(i,A):null,a?a(A):c&&A.url?c(A.url,{propName:"data",layer:this,signal:h}):null}renderSubLayers(A){return this.props.renderSubLayers(A)}getSubLayerPropsByTile(A){return null}getPickingInfo(A){const i=A.sourceLayer,a=i.props.tile,c=A.info;return c.picked&&(c.tile=a),c.sourceTile=a,c.sourceTileSubLayer=i,c}_updateAutoHighlight(A){A.sourceTileSubLayer.updateAutoHighlight(A)}renderLayers(){return this.state.tileset.tiles.map(A=>{const i=this.getSubLayerPropsByTile(A);if(!(!A.isLoaded&&!A.content))if(A.layers)i&&A.layers[0]&&Object.keys(i).some(a=>A.layers[0].props[a]!==i[a])&&(A.layers=A.layers.map(a=>a.clone(i)));else{const a=this.renderSubLayers({...this.props,...this.getSubLayerProps({id:A.id,updateTriggers:this.props.updateTriggers}),data:A.content,_offset:0,tile:A});A.layers=$h(a,Boolean).map(c=>c.clone({tile:A,...i}))}return A.layers})}filterSubLayer({layer:A,cullRect:i}){const{tile:a}=A.props,{modelMatrix:c}=this.props;return this.state.tileset.isTileVisible(a,i,c?new KA(c):null)}}Lr.defaultProps=k3;Lr.layerName="TileLayer";const $o=`uniform tripsUniforms {
|
|
8
|
+
bool fadeTrail;
|
|
9
|
+
float trailLength;
|
|
10
|
+
float currentTime;
|
|
11
|
+
} trips;
|
|
12
|
+
`,F3={name:"trips",vs:$o,fs:$o,uniformTypes:{fadeTrail:"f32",trailLength:"f32",currentTime:"f32"}},U3={fadeTrail:!0,trailLength:{type:"number",value:120,min:0},currentTime:{type:"number",value:0,min:0},getTimestamps:{type:"accessor",value:e=>e.timestamps}};class wu extends t2{getShaders(){const A=super.getShaders();return A.inject={"vs:#decl":`in float instanceTimestamps;
|
|
13
|
+
in float instanceNextTimestamps;
|
|
14
|
+
out float vTime;
|
|
15
|
+
`,"vs:#main-end":`vTime = instanceTimestamps + (instanceNextTimestamps - instanceTimestamps) * vPathPosition.y / vPathLength;
|
|
16
|
+
`,"fs:#decl":`in float vTime;
|
|
17
|
+
`,"fs:#main-start":`if(vTime > trips.currentTime || (trips.fadeTrail && (vTime < trips.currentTime - trips.trailLength))) {
|
|
18
|
+
discard;
|
|
19
|
+
}
|
|
20
|
+
`,"fs:DECKGL_FILTER_COLOR":`if(trips.fadeTrail) {
|
|
21
|
+
color.a *= 1.0 - (trips.currentTime - vTime) / trips.trailLength;
|
|
22
|
+
}
|
|
23
|
+
`},A.modules=[...A.modules,F3],A}initializeState(){super.initializeState(),this.getAttributeManager().addInstanced({timestamps:{size:1,accessor:"getTimestamps",shaderAttributes:{instanceTimestamps:{vertexOffset:0},instanceNextTimestamps:{vertexOffset:1}}}})}draw(A){const{fadeTrail:i,trailLength:a,currentTime:c}=this.props,h={fadeTrail:i,trailLength:a,currentTime:c};this.state.model.shaderInputs.setProps({trips:h}),super.draw(A)}}wu.layerName="TripsLayer";wu.defaultProps=U3;const Q3=10;function V3(e,A){let i;return e==null?i=A:typeof e=="object"?i={...e,coverage:A}:i={getHexagon:e,coverage:A},i}const z3={...Bn.defaultProps,highPrecision:"auto",coverage:{type:"number",min:0,max:1,value:1},centerHexagon:null,getHexagon:{type:"accessor",value:e=>e.hexagon},extruded:!0};class lr extends ar{initializeState(){lr._checkH3Lib(),this.state={edgeLengthKM:0,resolution:-1}}shouldUpdateState({changeFlags:A}){return this._shouldUseHighPrecision()?A.propsOrDataChanged:A.somethingChanged}updateState({props:A,changeFlags:i}){if(A.highPrecision!==!0&&(i.dataChanged||i.updateTriggersChanged&&i.updateTriggersChanged.getHexagon)){const a=this._calculateH3DataProps();this.setState(a)}this._updateVertices(this.context.viewport)}_calculateH3DataProps(){let A=-1,i=!1,a=!1;const{iterable:c,objectInfo:h}=Al(this.props.data);for(const g of c){h.index++;const m=this.props.getHexagon(g,h),y=Bp(m);if(A<0){if(A=y,!this.props.highPrecision)break}else if(A!==y){a=!0;break}if(Ip(m)){i=!0;break}}return{resolution:A,edgeLengthKM:A>=0?Rp(A,"km"):0,hasMultipleRes:a,hasPentagon:i}}_shouldUseHighPrecision(){if(this.props.highPrecision==="auto"){const{resolution:A,hasPentagon:i,hasMultipleRes:a}=this.state,{viewport:c}=this.context;return!!c?.resolution||a||i||A>=0&&A<=5}return this.props.highPrecision}_updateVertices(A){if(this._shouldUseHighPrecision())return;const{resolution:i,edgeLengthKM:a,centerHex:c}=this.state;if(i<0)return;const h=this.props.centerHexagon||Lp(A.latitude,A.longitude,i);if(c===h)return;if(c)try{if(Np(c,h)*a<Q3)return}catch{}const{unitsPerMeter:g}=A.distanceScales;let m=To(h);const[y,v]=Bi(h),[_,C]=A.projectFlat([v,y]);m=m.map(P=>{const N=A.projectFlat(P);return[(N[0]-_)/g[0],(N[1]-C)/g[1]]}),this.setState({centerHex:h,vertices:m})}renderLayers(){return this._shouldUseHighPrecision()?this._renderPolygonLayer():this._renderColumnLayer()}_getForwardProps(){const{elevationScale:A,material:i,coverage:a,extruded:c,wireframe:h,stroked:g,filled:m,lineWidthUnits:y,lineWidthScale:v,lineWidthMinPixels:_,lineWidthMaxPixels:C,getFillColor:P,getElevation:N,getLineColor:Y,getLineWidth:Z,transitions:tA,updateTriggers:R}=this.props;return{elevationScale:A,extruded:c,coverage:a,wireframe:h,stroked:g,filled:m,lineWidthUnits:y,lineWidthScale:v,lineWidthMinPixels:_,lineWidthMaxPixels:C,material:i,getElevation:N,getFillColor:P,getLineColor:Y,getLineWidth:Z,transitions:tA,updateTriggers:{getFillColor:R.getFillColor,getElevation:R.getElevation,getLineColor:R.getLineColor,getLineWidth:R.getLineWidth}}}_renderPolygonLayer(){const{data:A,getHexagon:i,updateTriggers:a,coverage:c}=this.props,h=this.getSubLayerClass("hexagon-cell-hifi",Bn),g=this._getForwardProps();return g.updateTriggers.getPolygon=V3(a.getHexagon,c),new h(g,this.getSubLayerProps({id:"hexagon-cell-hifi",updateTriggers:g.updateTriggers}),{data:A,_normalize:!1,_windingOrder:"CCW",positionFormat:"XY",getPolygon:(m,y)=>{const v=i(m,y);return nu(To(v,c))}})}_renderColumnLayer(){const{data:A,getHexagon:i,updateTriggers:a}=this.props,c=this.getSubLayerClass("hexagon-cell",r2),h=this._getForwardProps();return h.updateTriggers.getPosition=a.getHexagon,new c(h,this.getSubLayerProps({id:"hexagon-cell",flatShading:!0,updateTriggers:h.updateTriggers}),{data:A,diskResolution:6,radius:1,vertices:this.state.vertices,getPosition:Fp.bind(null,i)})}}lr.defaultProps=z3;lr.layerName="H3HexagonLayer";lr._checkH3Lib=()=>{};const G3={getHexagons:{type:"accessor",value:e=>e.hexagons}};class yu extends Nt{initializeState(){lr._checkH3Lib()}updateState({props:A,changeFlags:i}){if(i.dataChanged||i.updateTriggersChanged&&i.updateTriggersChanged.getHexagons){const{data:a,getHexagons:c}=A,h=[],{iterable:g,objectInfo:m}=Al(a);for(const y of g){m.index++;const v=c(y,m),_=xp(v,!0);for(const C of _){for(const P of C)Li(P);h.push(this.getSubLayerRow({polygon:C},y,m.index))}}this.setState({polygons:h})}}indexToBounds(){const{getElevation:A,getFillColor:i,getLineColor:a,getLineWidth:c}=this.props;return{data:this.state.polygons,getPolygon:h=>h.polygon,getElevation:this.getSubLayerAccessor(A),getFillColor:this.getSubLayerAccessor(i),getLineColor:this.getSubLayerAccessor(a),getLineWidth:this.getSubLayerAccessor(c)}}}yu.layerName="H3ClusterLayer";yu.defaultProps=G3;const Aa=`uniform meshUniforms {
|
|
24
|
+
bool pickFeatureIds;
|
|
25
|
+
} mesh;
|
|
26
|
+
`,q3={name:"mesh",vs:Aa,fs:Aa,uniformTypes:{pickFeatureIds:"f32"}},H3=`#version 300 es
|
|
27
|
+
#define SHADER_NAME simple-mesh-layer-vs
|
|
28
|
+
in vec3 positions;
|
|
29
|
+
in vec3 normals;
|
|
30
|
+
in vec3 colors;
|
|
31
|
+
in vec2 texCoords;
|
|
32
|
+
in vec4 uvRegions;
|
|
33
|
+
in vec3 featureIdsPickingColors;
|
|
34
|
+
in vec4 instanceColors;
|
|
35
|
+
in vec3 instancePickingColors;
|
|
36
|
+
in vec3 instanceModelMatrixCol0;
|
|
37
|
+
in vec3 instanceModelMatrixCol1;
|
|
38
|
+
in vec3 instanceModelMatrixCol2;
|
|
39
|
+
out vec2 vTexCoord;
|
|
40
|
+
out vec3 cameraPosition;
|
|
41
|
+
out vec3 normals_commonspace;
|
|
42
|
+
out vec4 position_commonspace;
|
|
43
|
+
out vec4 vColor;
|
|
44
|
+
vec2 applyUVRegion(vec2 uv) {
|
|
45
|
+
#ifdef HAS_UV_REGIONS
|
|
46
|
+
return fract(uv) * (uvRegions.zw - uvRegions.xy) + uvRegions.xy;
|
|
47
|
+
#else
|
|
48
|
+
return uv;
|
|
49
|
+
#endif
|
|
50
|
+
}
|
|
51
|
+
void main(void) {
|
|
52
|
+
vec2 uv = applyUVRegion(texCoords);
|
|
53
|
+
geometry.uv = uv;
|
|
54
|
+
if (mesh.pickFeatureIds) {
|
|
55
|
+
geometry.pickingColor = featureIdsPickingColors;
|
|
56
|
+
} else {
|
|
57
|
+
geometry.pickingColor = instancePickingColors;
|
|
58
|
+
}
|
|
59
|
+
mat3 instanceModelMatrix = mat3(instanceModelMatrixCol0, instanceModelMatrixCol1, instanceModelMatrixCol2);
|
|
60
|
+
vTexCoord = uv;
|
|
61
|
+
cameraPosition = project.cameraPosition;
|
|
62
|
+
vColor = vec4(colors * instanceColors.rgb, instanceColors.a);
|
|
63
|
+
vec3 pos = (instanceModelMatrix * positions) * simpleMesh.sizeScale;
|
|
64
|
+
vec3 projectedPosition = project_position(positions);
|
|
65
|
+
position_commonspace = vec4(projectedPosition, 1.0);
|
|
66
|
+
gl_Position = project_common_position_to_clipspace(position_commonspace);
|
|
67
|
+
geometry.position = position_commonspace;
|
|
68
|
+
normals_commonspace = project_normal(instanceModelMatrix * normals);
|
|
69
|
+
geometry.normal = normals_commonspace;
|
|
70
|
+
DECKGL_FILTER_GL_POSITION(gl_Position, geometry);
|
|
71
|
+
#ifdef MODULE_PBRMATERIAL
|
|
72
|
+
pbr_vPosition = geometry.position.xyz;
|
|
73
|
+
#ifdef HAS_NORMALS
|
|
74
|
+
pbr_vNormal = geometry.normal;
|
|
75
|
+
#endif
|
|
76
|
+
#ifdef HAS_UV
|
|
77
|
+
pbr_vUV = uv;
|
|
78
|
+
#else
|
|
79
|
+
pbr_vUV = vec2(0., 0.);
|
|
80
|
+
#endif
|
|
81
|
+
geometry.uv = pbr_vUV;
|
|
82
|
+
#endif
|
|
83
|
+
DECKGL_FILTER_COLOR(vColor, geometry);
|
|
84
|
+
}
|
|
85
|
+
`,j3=`#version 300 es
|
|
86
|
+
#define SHADER_NAME simple-mesh-layer-fs
|
|
87
|
+
precision highp float;
|
|
88
|
+
uniform sampler2D sampler;
|
|
89
|
+
in vec2 vTexCoord;
|
|
90
|
+
in vec3 cameraPosition;
|
|
91
|
+
in vec3 normals_commonspace;
|
|
92
|
+
in vec4 position_commonspace;
|
|
93
|
+
in vec4 vColor;
|
|
94
|
+
out vec4 fragColor;
|
|
95
|
+
void main(void) {
|
|
96
|
+
#ifdef MODULE_PBRMATERIAL
|
|
97
|
+
fragColor = vColor * pbr_filterColor(vec4(0));
|
|
98
|
+
geometry.uv = pbr_vUV;
|
|
99
|
+
fragColor.a *= layer.opacity;
|
|
100
|
+
#else
|
|
101
|
+
geometry.uv = vTexCoord;
|
|
102
|
+
vec3 normal;
|
|
103
|
+
if (simpleMesh.flatShading) {
|
|
104
|
+
normal = normalize(cross(dFdx(position_commonspace.xyz), dFdy(position_commonspace.xyz)));
|
|
105
|
+
} else {
|
|
106
|
+
normal = normals_commonspace;
|
|
107
|
+
}
|
|
108
|
+
vec4 color = simpleMesh.hasTexture ? texture(sampler, vTexCoord) : vColor;
|
|
109
|
+
vec3 lightColor = lighting_getLightColor(color.rgb, cameraPosition, position_commonspace.xyz, normal);
|
|
110
|
+
fragColor = vec4(lightColor, color.a * layer.opacity);
|
|
111
|
+
#endif
|
|
112
|
+
DECKGL_FILTER_COLOR(fragColor, geometry);
|
|
113
|
+
}
|
|
114
|
+
`;function W3(e){const A=e.positions||e.POSITION,i=A.value.length/A.size;e.COLOR_0||e.colors||(e.colors={size:4,value:new Uint8Array(i*4).fill(255),normalized:!0})}const Y3={pbrMaterial:{type:"object",value:null},featureIds:{type:"array",value:null,optional:!0}};class Fi extends J0{getShaders(){const A=super.getShaders();return A.modules.push(Wh,q3),{...A,vs:H3,fs:j3}}initializeState(){const{featureIds:A}=this.props;super.initializeState();const i=this.getAttributeManager();A&&i.add({featureIdsPickingColors:{type:"uint8",size:3,noAlloc:!0,update:this.calculateFeatureIdsPickingColors}})}updateState(A){super.updateState(A);const{props:i,oldProps:a}=A;i.pbrMaterial!==a.pbrMaterial&&this.updatePbrMaterialUniforms(i.pbrMaterial)}draw(A){const{featureIds:i}=this.props,{model:a}=this.state;if(!a)return;const c={pickFeatureIds:!!i},h={camera:this.context.viewport.cameraPosition};a.shaderInputs.setProps({pbrProjection:h,mesh:c}),super.draw(A)}getModel(A){const{id:i}=this.props,a=this.parseMaterial(this.props.pbrMaterial,A);this.setState({parsedPBRMaterial:a});const c=this.getShaders();return W3(A.attributes),new i2(this.context.device,{...this.getShaders(),id:i,geometry:A,bufferLayout:this.getAttributeManager().getBufferLayouts(),defines:{...c.defines,...a?.defines,HAS_UV_REGIONS:A.attributes.uvRegions?1:0},parameters:a?.parameters,isInstanced:!0})}updatePbrMaterialUniforms(A){const{model:i}=this.state;if(i){const{mesh:a}=this.props,c=this.parseMaterial(A,a);this.setState({parsedPBRMaterial:c});const{pbr_baseColorSampler:h}=c.bindings,{emptyTexture:g}=this.state,m={sampler:h||g,hasTexture:!!h},{camera:y,...v}={...c.bindings,...c.uniforms};i.shaderInputs.setProps({simpleMesh:m,pbrMaterial:v})}}parseMaterial(A,i){const a=!!(A.pbrMetallicRoughness&&A.pbrMetallicRoughness.baseColorTexture);return Yh(this.context.device,{unlit:a,...A},{NORMAL:i.attributes.normals,TEXCOORD_0:i.attributes.texCoords},{pbrDebug:!1,lights:!0,useTangents:!1})}calculateFeatureIdsPickingColors(A){const i=this.props.featureIds,a=new Uint8ClampedArray(i.length*A.size),c=[];for(let h=0;h<i.length;h++)this.encodePickingColor(i[h],c),a[h*3]=c[0],a[h*3+1]=c[1],a[h*3+2]=c[2];A.value=a}finalizeState(A){super.finalizeState(A),this.state.parsedPBRMaterial?.generatedTextures.forEach(i=>i.destroy()),this.setState({parsedPBRMaterial:null})}}Fi.layerName="MeshLayer";Fi.defaultProps=Y3;const Z3=6378137,X3=6378137,J3=6356752314245179e-9;function On(e){return e}new H;function K3(e,A=[],i=On){return"longitude"in e?(A[0]=i(e.longitude),A[1]=i(e.latitude),A[2]=e.height):"x"in e?(A[0]=i(e.x),A[1]=i(e.y),A[2]=e.z):(A[0]=i(e[0]),A[1]=i(e[1]),A[2]=e[2]),A}function $3(e,A=[]){return K3(e,A,pn._cartographicRadians?On:zh)}function A4(e,A,i=On){return"longitude"in A?(A.longitude=i(e[0]),A.latitude=i(e[1]),A.height=e[2]):"x"in A?(A.x=i(e[0]),A.y=i(e[1]),A.z=e[2]):(A[0]=i(e[0]),A[1]=i(e[1]),A[2]=e[2]),A}function e4(e,A){return A4(e,A,pn._cartographicRadians?On:Vh)}const ea=1e-14,t4=new H,ta={up:{south:"east",north:"west",west:"south",east:"north"},down:{south:"west",north:"east",west:"north",east:"south"},south:{up:"west",down:"east",west:"down",east:"up"},north:{up:"east",down:"west",west:"up",east:"down"},west:{up:"north",down:"south",north:"down",south:"up"},east:{up:"south",down:"north",north:"up",south:"down"}},D0={north:[-1,0,0],east:[0,1,0],up:[0,0,1],south:[1,0,0],west:[0,-1,0],down:[0,0,-1]},Tr={east:new H,north:new H,up:new H,west:new H,south:new H,down:new H},r4=new H,n4=new H,i4=new H;function ra(e,A,i,a,c,h){const g=ta[A]&&ta[A][i];nt(g&&(!a||a===g));let m,y,v;const _=t4.copy(c);if(St(_.x,0,ea)&&St(_.y,0,ea)){const P=Math.sign(_.z);m=r4.fromArray(D0[A]),A!=="east"&&A!=="west"&&m.scale(P),y=n4.fromArray(D0[i]),i!=="east"&&i!=="west"&&y.scale(P),v=i4.fromArray(D0[a]),a!=="east"&&a!=="west"&&v.scale(P)}else{const{up:P,east:N,north:Y}=Tr;N.set(-_.y,_.x,0).normalize(),e.geodeticSurfaceNormal(_,P),Y.copy(P).cross(N);const{down:Z,west:tA,south:R}=Tr;Z.copy(P).scale(-1),tA.copy(N).scale(-1),R.copy(Y).scale(-1),m=Tr[A],y=Tr[i],v=Tr[a]}return h[0]=m.x,h[1]=m.y,h[2]=m.z,h[3]=0,h[4]=y.x,h[5]=y.y,h[6]=y.z,h[7]=0,h[8]=v.x,h[9]=v.y,h[10]=v.z,h[11]=0,h[12]=_.x,h[13]=_.y,h[14]=_.z,h[15]=1,h}const Yt=new H,s4=new H,o4=new H;function a4(e,A,i=[]){const{oneOverRadii:a,oneOverRadiiSquared:c,centerToleranceSquared:h}=A;Yt.from(e);const g=Yt.x,m=Yt.y,y=Yt.z,v=a.x,_=a.y,C=a.z,P=g*g*v*v,N=m*m*_*_,Y=y*y*C*C,Z=P+N+Y,tA=Math.sqrt(1/Z);if(!Number.isFinite(tA))return;const R=s4;if(R.copy(e).scale(tA),Z<h)return R.to(i);const z=c.x,rA=c.y,mA=c.z,G=o4;G.set(R.x*z*2,R.y*rA*2,R.z*mA*2);let j=(1-tA)*Yt.len()/(.5*G.len()),$=0,lA,U,k,x;do{j-=$,lA=1/(1+j*z),U=1/(1+j*rA),k=1/(1+j*mA);const X=lA*lA,J=U*U,yA=k*k,dA=X*lA,OA=J*U,XA=yA*k;x=P*X+N*J+Y*yA-1;const UA=-2*(P*dA*z+N*OA*rA+Y*XA*mA);$=x/UA}while(Math.abs(x)>p2);return Yt.scale([lA,U,k]).to(i)}const rn=new H,na=new H,l4=new H,Ve=new H,u4=new H,nn=new H;class $A{constructor(A=0,i=0,a=0){this.centerToleranceSquared=g2,nt(A>=0),nt(i>=0),nt(a>=0),this.radii=new H(A,i,a),this.radiiSquared=new H(A*A,i*i,a*a),this.radiiToTheFourth=new H(A*A*A*A,i*i*i*i,a*a*a*a),this.oneOverRadii=new H(A===0?0:1/A,i===0?0:1/i,a===0?0:1/a),this.oneOverRadiiSquared=new H(A===0?0:1/(A*A),i===0?0:1/(i*i),a===0?0:1/(a*a)),this.minimumRadius=Math.min(A,i,a),this.maximumRadius=Math.max(A,i,a),this.radiiSquared.z!==0&&(this.squaredXOverSquaredZ=this.radiiSquared.x/this.radiiSquared.z),Object.freeze(this)}equals(A){return this===A||!!(A&&this.radii.equals(A.radii))}toString(){return this.radii.toString()}cartographicToCartesian(A,i=[0,0,0]){const a=na,c=l4,[,,h]=A;this.geodeticSurfaceNormalCartographic(A,a),c.copy(this.radiiSquared).scale(a);const g=Math.sqrt(a.dot(c));return c.scale(1/g),a.scale(h),c.add(a),c.to(i)}cartesianToCartographic(A,i=[0,0,0]){nn.from(A);const a=this.scaleToGeodeticSurface(nn,Ve);if(!a)return;const c=this.geodeticSurfaceNormal(a,na),h=u4;h.copy(nn).subtract(a);const g=Math.atan2(c.y,c.x),m=Math.asin(c.z),y=Math.sign(Gh(h,nn))*qh(h);return e4([g,m,y],i)}eastNorthUpToFixedFrame(A,i=new KA){return ra(this,"east","north","up",A,i)}localFrameToFixedFrame(A,i,a,c,h=new KA){return ra(this,A,i,a,c,h)}geocentricSurfaceNormal(A,i=[0,0,0]){return rn.from(A).normalize().to(i)}geodeticSurfaceNormalCartographic(A,i=[0,0,0]){const a=$3(A),c=a[0],h=a[1],g=Math.cos(h);return rn.set(g*Math.cos(c),g*Math.sin(c),Math.sin(h)).normalize(),rn.to(i)}geodeticSurfaceNormal(A,i=[0,0,0]){return rn.from(A).scale(this.oneOverRadiiSquared).normalize().to(i)}scaleToGeodeticSurface(A,i){return a4(A,this,i)}scaleToGeocentricSurface(A,i=[0,0,0]){Ve.from(A);const a=Ve.x,c=Ve.y,h=Ve.z,g=this.oneOverRadiiSquared,m=1/Math.sqrt(a*a*g.x+c*c*g.y+h*h*g.z);return Ve.multiplyScalar(m).to(i)}transformPositionToScaledSpace(A,i=[0,0,0]){return Ve.from(A).scale(this.oneOverRadii).to(i)}transformPositionFromScaledSpace(A,i=[0,0,0]){return Ve.from(A).scale(this.radii).to(i)}getSurfaceNormalIntersectionWithZAxis(A,i=0,a=[0,0,0]){nt(St(this.radii.x,this.radii.y,rl)),nt(this.radii.z>0),Ve.from(A);const c=Ve.z*(1-this.squaredXOverSquaredZ);if(!(Math.abs(c)>=this.radii.z-i))return Ve.set(0,0,c).to(a)}}$A.WGS84=new $A(Z3,X3,J3);class c4{item;previous;next;constructor(A,i,a){this.item=A,this.previous=i,this.next=a}}class f4{head=null;tail=null;_length=0;get length(){return this._length}add(A){const i=new c4(A,this.tail,null);return this.tail?(this.tail.next=i,this.tail=i):(this.head=i,this.tail=i),++this._length,i}remove(A){A&&(A.previous&&A.next?(A.previous.next=A.next,A.next.previous=A.previous):A.previous?(A.previous.next=null,this.tail=A.previous):A.next?(A.next.previous=null,this.head=A.next):(this.head=null,this.tail=null),A.next=null,A.previous=null,--this._length)}splice(A,i){A!==i&&(this.remove(i),this._insert(A,i))}_insert(A,i){const a=A.next;A.next=i,this.tail===A?this.tail=i:a.previous=i,i.next=a,i.previous=A,++this._length}}class h4{_list;_sentinel;_trimTiles;constructor(){this._list=new f4,this._sentinel=this._list.add("sentinel"),this._trimTiles=!1}reset(){this._list.splice(this._list.tail,this._sentinel)}touch(A){const i=A._cacheNode;i&&this._list.splice(this._sentinel,i)}add(A,i,a){i._cacheNode||(i._cacheNode=this._list.add(i),a&&a(A,i))}unloadTile(A,i,a){const c=i._cacheNode;c&&(this._list.remove(c),i._cacheNode=null,a&&a(A,i))}unloadTiles(A,i){const a=this._trimTiles;this._trimTiles=!1;const c=this._list,h=A.maximumMemoryUsage*1024*1024,g=this._sentinel;let m=c.head;for(;m!==g&&(A.gpuMemoryUsageInBytes>h||a);){const y=m.item;m=m.next,this.unloadTile(A,y,i)}}trim(){this._trimTiles=!0}}function d4(e,A){ce(e),ce(A);const{rtcCenter:i,gltfUpAxis:a}=A,{computedTransform:c,boundingVolume:{center:h}}=e;let g=new KA(c);switch(i&&g.translate(i),a){case"Z":break;case"Y":const C=new KA().rotateX(Math.PI/2);g=g.multiplyRight(C);break;case"X":const P=new KA().rotateY(-Math.PI/2);g=g.multiplyRight(P);break}A.isQuantized&&g.translate(A.quantizedVolumeOffset).scale(A.quantizedVolumeScale);const m=new H(h);A.cartesianModelMatrix=g,A.cartesianOrigin=m;const y=$A.WGS84.cartesianToCartographic(m,new H),_=$A.WGS84.eastNorthUpToFixedFrame(m).invert();A.cartographicModelMatrix=_.multiplyRight(g),A.cartographicOrigin=y,A.coordinateSystem||(A.modelMatrix=A.cartographicModelMatrix)}const ia=new H,O0=new H,fi=new xe([new ze,new ze,new ze,new ze,new ze,new ze]);function g4(e,A){const{cameraDirection:i,cameraUp:a,height:c}=e,{metersPerUnit:h}=e.distanceScales,g=dn(e,e.center),m=$A.WGS84.eastNorthUpToFixedFrame(g),y=e.unprojectPosition(e.cameraPosition),v=$A.WGS84.cartographicToCartesian(y,new H),_=new H(m.transformAsVector(new H(i).scale(h))).normalize(),C=new H(m.transformAsVector(new H(a).scale(h))).normalize();m4(e);const P=e.constructor,{longitude:N,latitude:Y,width:Z,bearing:tA,zoom:R}=e,z=new P({longitude:N,latitude:Y,height:c,width:Z,bearing:tA,zoom:R,pitch:0});return{camera:{position:v,direction:_,up:C},viewport:e,topDownViewport:z,height:c,cullingVolume:fi,frameNumber:A,sseDenominator:1.15}}function p4(e,A,i){if(i===0||e.length<=i)return[e,[]];const a=[],{longitude:c,latitude:h}=A.viewport;for(const[v,_]of e.entries()){const[C,P]=_.header.mbs,N=Math.abs(c-C),Y=Math.abs(h-P),Z=Math.sqrt(Y*Y+N*N);a.push([v,Z])}const g=a.sort((v,_)=>v[1]-_[1]),m=[];for(let v=0;v<i;v++)m.push(e[g[v][0]]);const y=[];for(let v=i;v<g.length;v++)y.push(e[g[v][0]]);return[m,y]}function m4(e){const A=e.getFrustumPlanes(),i=sa(A.near,e.cameraPosition),a=dn(e,i),c=dn(e,e.cameraPosition,O0);let h=0;fi.planes[h++].fromPointNormal(a,ia.copy(a).subtract(c));for(const g in A){if(g==="near")continue;const m=A[g],y=sa(m,i,O0),v=dn(e,y,O0);fi.planes[h++].fromPointNormal(v,ia.copy(a).subtract(v))}}function sa(e,A,i=new H){const a=e.normal.dot(A);return i.copy(e.normal).scale(e.distance-a).add(A),i}function dn(e,A,i=new H){const a=e.unprojectPosition(A);return $A.WGS84.cartographicToCartesian(a,i)}const w4=6378137,y4=6378137,hi=6356752314245179e-9,$t=new H;function T4(e,A){if(e instanceof Br){const{halfAxes:i}=e,a=_4(i);return Math.log2(hi/(a+A[2]))}else if(e instanceof Ir){const{radius:i}=e;return Math.log2(hi/(i+A[2]))}else if(e.width&&e.height){const{width:i,height:a}=e,c=Math.log2(w4/i),h=Math.log2(y4/a);return(c+h)/2}return 1}function Tu(e,A,i){$A.WGS84.cartographicToCartesian([e.xmax,e.ymax,e.zmax],$t);const a=Math.sqrt(Math.pow($t[0]-i[0],2)+Math.pow($t[1]-i[1],2)+Math.pow($t[2]-i[2],2));return Math.log2(hi/(a+A[2]))}function v4(e,A,i){const[a,c,h,g]=e;return Tu({xmax:h,ymax:g,zmax:0},A,i)}function _4(e){e.getColumn(0,$t);const A=e.getColumn(1),i=e.getColumn(2);return $t.add(A).add(i).len()}const Le={UNLOADED:0,LOADING:1,PROCESSING:2,READY:3,EXPIRED:4,FAILED:5};var He;(function(e){e[e.ADD=1]="ADD",e[e.REPLACE=2]="REPLACE"})(He||(He={}));var it;(function(e){e.EMPTY="empty",e.SCENEGRAPH="scenegraph",e.POINTCLOUD="pointcloud",e.MESH="mesh"})(it||(it={}));var Se;(function(e){e.I3S="I3S",e.TILES3D="TILES3D"})(Se||(Se={}));var sr;(function(e){e.GEOMETRIC_ERROR="geometricError",e.MAX_SCREEN_THRESHOLD="maxScreenThreshold"})(sr||(sr={}));const b4={USE_OPTIMIZATION:1};function vu(e){return e!=null}const we=new H,gn=new H,E4=new H,M4=new H,Et=new H,oa=new H,aa=new H,la=new H;function k0(e,A,i){if(ce(e,"3D Tile: boundingVolume must be defined"),e.box)return _u(e.box,A,i);if(e.region)return I4(e.region);if(e.sphere)return S4(e.sphere,A,i);throw new Error("3D Tile: boundingVolume must contain a sphere, region, or box")}function C4(e,A){if(e.box)return B4(A);if(e.region){const[i,a,c,h,g,m]=e.region;return[[Xe(i),Xe(a),g],[Xe(c),Xe(h),m]]}if(e.sphere)return L4(A);throw new Error("Unkown boundingVolume type")}function _u(e,A,i){const a=new H(e[0],e[1],e[2]);A.transform(a,a);let c=[];if(e.length===10){const v=e.slice(3,6),_=new wn;_.fromArray(e,6);const C=new H([1,0,0]),P=new H([0,1,0]),N=new H([0,0,1]);C.transformByQuaternion(_),C.scale(v[0]),P.transformByQuaternion(_),P.scale(v[1]),N.transformByQuaternion(_),N.scale(v[2]),c=[...C.toArray(),...P.toArray(),...N.toArray()]}else c=[...e.slice(3,6),...e.slice(6,9),...e.slice(9,12)];const h=A.transformAsVector(c.slice(0,3)),g=A.transformAsVector(c.slice(3,6)),m=A.transformAsVector(c.slice(6,9)),y=new he([h[0],h[1],h[2],g[0],g[1],g[2],m[0],m[1],m[2]]);return vu(i)?(i.center=a,i.halfAxes=y,i):new Br(a,y)}function S4(e,A,i){const a=new H(e[0],e[1],e[2]);A.transform(a,a);const c=A.getScale(gn),h=Math.max(Math.max(c[0],c[1]),c[2]),g=e[3]*h;return vu(i)?(i.center=a,i.radius=g,i):new Ir(a,g)}function I4(e){const[A,i,a,c,h,g]=e,m=$A.WGS84.cartographicToCartesian([Xe(A),Xe(c),h],E4),y=$A.WGS84.cartographicToCartesian([Xe(a),Xe(i),g],M4),v=new H().addVectors(m,y).multiplyByScalar(.5);return $A.WGS84.cartesianToCartographic(v,Et),$A.WGS84.cartographicToCartesian([Xe(a),Et[1],Et[2]],oa),$A.WGS84.cartographicToCartesian([Et[0],Xe(c),Et[2]],aa),$A.WGS84.cartographicToCartesian([Et[0],Et[1],g],la),_u([...v,...oa.subtract(v),...aa.subtract(v),...la.subtract(v)],new KA)}function B4(e){const A=bu(),{halfAxes:i}=e,a=new H(i.getColumn(0)),c=new H(i.getColumn(1)),h=new H(i.getColumn(2));for(let g=0;g<2;g++){for(let m=0;m<2;m++){for(let y=0;y<2;y++)we.copy(e.center),we.add(a),we.add(c),we.add(h),Eu(A,we),h.negate();c.negate()}a.negate()}return A}function L4(e){const A=bu(),{center:i,radius:a}=e,c=$A.WGS84.scaleToGeodeticSurface(i,we);let h;c?h=$A.WGS84.geodeticSurfaceNormal(c):h=new H(0,0,1);let g=new H(h[2],-h[1],0);g.len()>0?g.normalize():g=new H(0,1,0);const m=g.clone().cross(h);for(const y of[g,m,h]){gn.copy(y).scale(a);for(let v=0;v<2;v++)we.copy(i),we.add(gn),Eu(A,we),gn.negate()}return A}function bu(){return[[1/0,1/0,1/0],[-1/0,-1/0,-1/0]]}function Eu(e,A){$A.WGS84.cartesianToCartographic(A,we),e[0][0]=Math.min(e[0][0],we[0]),e[0][1]=Math.min(e[0][1],we[1]),e[0][2]=Math.min(e[0][2],we[2]),e[1][0]=Math.max(e[1][0],we[0]),e[1][1]=Math.max(e[1][1],we[1]),e[1][2]=Math.max(e[1][2],we[2])}new H;new H;new KA;new H;new H;new H;function P4(e,A){const i=e*A;return 1-Math.exp(-(i*i))}function x4(e,A){if(e.dynamicScreenSpaceError&&e.dynamicScreenSpaceErrorComputedDensity){const i=e.dynamicScreenSpaceErrorComputedDensity,a=e.dynamicScreenSpaceErrorFactor;return P4(A,i)*a}return 0}function N4(e,A,i){const a=e.tileset,c=e.parent&&e.parent.lodMetricValue||e.lodMetricValue,h=i?c:e.lodMetricValue;if(h===0)return 0;const g=Math.max(e._distanceToCamera,1e-7),{height:m,sseDenominator:y}=A,{viewDistanceScale:v}=a.options;let _=h*m*(v||1)/(g*y);return _-=x4(a,g),_}const F0=new H,ua=new H,pt=new H,ca=new H,R4=new H,U0=new KA,fa=new KA;function D4(e,A){if(e.lodMetricValue===0||isNaN(e.lodMetricValue))return"DIG";const i=2*Mu(e,A);return i<2?"OUT":!e.header.children||i<=e.lodMetricValue?"DRAW":e.header.children?"DIG":"OUT"}function Mu(e,A){const{topDownViewport:i}=A,a=e.header.mbs[1],c=e.header.mbs[0],h=e.header.mbs[2],g=e.header.mbs[3],m=[...e.boundingVolume.center],y=i.unprojectPosition(i.cameraPosition);$A.WGS84.cartographicToCartesian(y,F0),ua.copy(F0).subtract(m).normalize(),$A.WGS84.eastNorthUpToFixedFrame(m,U0),fa.copy(U0).invert(),pt.copy(F0).transform(fa);const v=Math.sqrt(pt[0]*pt[0]+pt[1]*pt[1]),_=v*v/pt[2];ca.copy([pt[0],pt[1],_]);const P=ca.transform(U0).subtract(m).normalize(),Y=ua.cross(P).normalize().scale(g).add(m),Z=$A.WGS84.cartesianToCartographic(Y),tA=i.project([c,a,h]),R=i.project(Z);return R4.copy(tA).subtract(R).magnitude()}function O4(e){return{assetGltfUpAxis:e.asset&&e.asset.gltfUpAxis||"Y"}}class ha{_map=new Map;_array;_length;constructor(A=0){this._array=new Array(A),this._length=A}get length(){return this._length}set length(A){this._length=A,A>this._array.length&&(this._array.length=A)}get values(){return this._array}get(A){return ce(A<this._array.length),this._array[A]}set(A,i){ce(A>=0),A>=this.length&&(this.length=A+1),this._map.has(this._array[A])&&this._map.delete(this._array[A]),this._array[A]=i,this._map.set(i,A)}delete(A){const i=this._map.get(A);i>=0&&(this._array.splice(i,1),this._map.delete(A),this.length--)}peek(){return this._array[this._length-1]}push(A){if(!this._map.has(A)){const i=this.length++;this._array[i]=A,this._map.set(A,i)}}pop(){const A=this._array[--this.length];return this._map.delete(A),A}reserve(A){ce(A>=0),A>this._array.length&&(this._array.length=A)}resize(A){ce(A>=0),this.length=A}trim(A){A==null&&(A=this.length),this._array.length=A}reset(){this._array=[],this._map=new Map,this._length=0}find(A){return this._map.has(A)}}const k4={loadSiblings:!1,skipLevelOfDetail:!1,updateTransforms:!0,onTraversalEnd:()=>{},viewportTraversersMap:{},basePath:""};class kn{options;root=null;selectedTiles={};requestedTiles={};emptyTiles={};lastUpdate=new Date().getTime();updateDebounceTime=1e3;_traversalStack=new ha;_emptyTraversalStack=new ha;_frameNumber=null;traversalFinished(A){return!0}constructor(A){this.options={...k4,...A}}traverse(A,i,a){this.root=A,this.options={...this.options,...a},this.reset(),this.updateTile(A,i),this._frameNumber=i.frameNumber,this.executeTraversal(A,i)}reset(){this.requestedTiles={},this.selectedTiles={},this.emptyTiles={},this._traversalStack.reset(),this._emptyTraversalStack.reset()}executeTraversal(A,i){const a=this._traversalStack;for(A._selectionDepth=1,a.push(A);a.length>0;){const h=a.pop();let g=!1;this.canTraverse(h,i)&&(this.updateChildTiles(h,i),g=this.updateAndPushChildren(h,i,a,h.hasRenderContent?h._selectionDepth+1:h._selectionDepth));const m=h.parent,y=!!(!m||m._shouldRefine),v=!g;h.hasRenderContent?h.refine===He.ADD?(this.loadTile(h,i),this.selectTile(h,i)):h.refine===He.REPLACE&&(this.loadTile(h,i),v&&this.selectTile(h,i)):(this.emptyTiles[h.id]=h,this.loadTile(h,i),v&&this.selectTile(h,i)),this.touchTile(h,i),h._shouldRefine=g&&y}const c=new Date().getTime();(this.traversalFinished(i)||c-this.lastUpdate>this.updateDebounceTime)&&(this.lastUpdate=c,this.options.onTraversalEnd(i))}updateChildTiles(A,i){const a=A.children;for(const c of a)this.updateTile(c,i)}updateAndPushChildren(A,i,a,c){const{loadSiblings:h,skipLevelOfDetail:g}=this.options,m=A.children;m.sort(this.compareDistanceToCamera.bind(this));const y=A.refine===He.REPLACE&&A.hasRenderContent&&!g;let v=!1,_=!0;for(const C of m)if(C._selectionDepth=c,C.isVisibleAndInRequestVolume?(a.find(C)&&a.delete(C),a.push(C),v=!0):(y||h)&&(this.loadTile(C,i),this.touchTile(C,i)),y){let P;if(C._inRequestVolume?C.hasRenderContent?P=C.contentAvailable:P=this.executeEmptyTraversal(C,i):P=!1,_=_&&P,!_)return!1}return v||(_=!1),_}updateTile(A,i){this.updateTileVisibility(A,i)}selectTile(A,i){this.shouldSelectTile(A)&&(A._selectedFrame=i.frameNumber,this.selectedTiles[A.id]=A)}loadTile(A,i){this.shouldLoadTile(A)&&(A._requestedFrame=i.frameNumber,A._priority=A._getPriority(),this.requestedTiles[A.id]=A)}touchTile(A,i){A.tileset._cache.touch(A),A._touchedFrame=i.frameNumber}canTraverse(A,i){return A.hasChildren?A.hasTilesetContent?!A.contentExpired:this.shouldRefine(A,i):!1}shouldLoadTile(A){return A.hasUnloadedContent||A.contentExpired}shouldSelectTile(A){return A.contentAvailable&&!this.options.skipLevelOfDetail}shouldRefine(A,i,a=!1){let c=A._screenSpaceError;return a&&(c=A.getScreenSpaceError(i,!0)),c>A.tileset.memoryAdjustedScreenSpaceError}updateTileVisibility(A,i){const a=[];if(this.options.viewportTraversersMap)for(const c in this.options.viewportTraversersMap)this.options.viewportTraversersMap[c]===i.viewport.id&&a.push(c);else a.push(i.viewport.id);A.updateVisibility(i,a)}compareDistanceToCamera(A,i){return A._distanceToCamera-i._distanceToCamera}anyChildrenVisible(A,i){let a=!1;for(const c of A.children)c.updateVisibility(i),a=a||c.isVisibleAndInRequestVolume;return a}executeEmptyTraversal(A,i){let a=!0;const c=this._emptyTraversalStack;for(c.push(A);c.length>0;){const h=c.pop(),g=!h.hasRenderContent&&this.canTraverse(h,i),m=!h.hasRenderContent&&h.children.length===0;if(!g&&!h.contentAvailable&&!m&&(a=!1),this.updateTile(h,i),h.isVisibleAndInRequestVolume||(this.loadTile(h,i),this.touchTile(h,i)),g){const y=h.children;for(const v of y)c.push(v)}}return a}}const da=new H;function F4(e){return e!=null}class di{tileset;header;id;url;parent;refine;type;contentUrl;lodMetricType="geometricError";lodMetricValue=0;boundingVolume=null;content=null;contentState=Le.UNLOADED;gpuMemoryUsageInBytes=0;children=[];depth=0;viewportIds=[];transform=new KA;extensions=null;implicitTiling=null;userData={};computedTransform;hasEmptyContent=!1;hasTilesetContent=!1;traverser=new kn({});_cacheNode=null;_frameNumber=null;_expireDate=null;_expiredContent=null;_boundingBox=void 0;_distanceToCamera=0;_screenSpaceError=0;_visibilityPlaneMask;_visible=void 0;_contentBoundingVolume;_viewerRequestVolume;_initialTransform=new KA;_priority=0;_selectedFrame=0;_requestedFrame=0;_selectionDepth=0;_touchedFrame=0;_centerZDepth=0;_shouldRefine=!1;_stackLength=0;_visitedFrame=0;_inRequestVolume=!1;_lodJudge=null;constructor(A,i,a,c=""){this.header=i,this.tileset=A,this.id=c||i.id,this.url=i.url,this.parent=a,this.refine=this._getRefine(i.refine),this.type=i.type,this.contentUrl=i.contentUrl,this._initializeLodMetric(i),this._initializeTransforms(i),this._initializeBoundingVolumes(i),this._initializeContent(i),this._initializeRenderingState(i),Object.seal(this)}destroy(){this.header=null}isDestroyed(){return this.header===null}get selected(){return this._selectedFrame===this.tileset._frameNumber}get isVisible(){return this._visible}get isVisibleAndInRequestVolume(){return this._visible&&this._inRequestVolume}get hasRenderContent(){return!this.hasEmptyContent&&!this.hasTilesetContent}get hasChildren(){return this.children.length>0||this.header.children&&this.header.children.length>0}get contentReady(){return this.contentState===Le.READY||this.hasEmptyContent}get contentAvailable(){return!!(this.contentReady&&this.hasRenderContent||this._expiredContent&&!this.contentFailed)}get hasUnloadedContent(){return this.hasRenderContent&&this.contentUnloaded}get contentUnloaded(){return this.contentState===Le.UNLOADED}get contentExpired(){return this.contentState===Le.EXPIRED}get contentFailed(){return this.contentState===Le.FAILED}get distanceToCamera(){return this._distanceToCamera}get screenSpaceError(){return this._screenSpaceError}get boundingBox(){return this._boundingBox||(this._boundingBox=C4(this.header.boundingVolume,this.boundingVolume)),this._boundingBox}getScreenSpaceError(A,i){switch(this.tileset.type){case Se.I3S:return Mu(this,A);case Se.TILES3D:return N4(this,A,i);default:throw new Error("Unsupported tileset type")}}unselect(){this._selectedFrame=0}_getGpuMemoryUsageInBytes(){return this.content.gpuMemoryUsageInBytes||this.content.byteLength||0}_getPriority(){const A=this.tileset._traverser,{skipLevelOfDetail:i}=A.options,a=this.refine===He.ADD||i;if(a&&!this.isVisible&&this._visible!==void 0||this.tileset._frameNumber-this._touchedFrame>=1||this.contentState===Le.UNLOADED)return-1;const c=this.parent,g=c&&(!a||this._screenSpaceError===0||c.hasTilesetContent)?c._screenSpaceError:this._screenSpaceError,m=A.root?A.root._screenSpaceError:0;return Math.max(m-g,0)}async loadContent(){if(this.hasEmptyContent)return!1;if(this.content)return!0;this.contentExpired&&(this._expireDate=null),this.contentState=Le.LOADING;const i=await this.tileset._requestScheduler.scheduleRequest(this.id,this._getPriority.bind(this));if(!i)return this.contentState=Le.UNLOADED,!1;try{const a=this.tileset.getTileUrl(this.contentUrl),c=this.tileset.loader,h={...this.tileset.loadOptions,[c.id]:{...this.tileset.loadOptions[c.id],isTileset:this.type==="json",...this._getLoaderSpecificOptions(c.id)}};return this.content=await Cr(a,c,h),this.tileset.options.contentLoader&&await this.tileset.options.contentLoader(this),this._isTileset()&&this.tileset._initializeTileHeaders(this.content,this),this.contentState=Le.READY,this._onContentLoaded(),!0}catch(a){throw this.contentState=Le.FAILED,a}finally{i.done()}}unloadContent(){return this.content&&this.content.destroy&&this.content.destroy(),this.content=null,this.header.content&&this.header.content.destroy&&this.header.content.destroy(),this.header.content=null,this.contentState=Le.UNLOADED,!0}updateVisibility(A,i){if(this._frameNumber===A.frameNumber)return;const a=this.parent,c=a?a._visibilityPlaneMask:xe.MASK_INDETERMINATE;if(this.tileset._traverser.options.updateTransforms){const h=a?a.computedTransform:this.tileset.modelMatrix;this._updateTransform(h)}this._distanceToCamera=this.distanceToTile(A),this._screenSpaceError=this.getScreenSpaceError(A,!1),this._visibilityPlaneMask=this.visibility(A,c),this._visible=this._visibilityPlaneMask!==xe.MASK_OUTSIDE,this._inRequestVolume=this.insideViewerRequestVolume(A),this._frameNumber=A.frameNumber,this.viewportIds=i}visibility(A,i){const{cullingVolume:a}=A,{boundingVolume:c}=this;return a.computeVisibilityWithPlaneMask(c,i)}contentVisibility(){return!0}distanceToTile(A){const i=this.boundingVolume;return Math.sqrt(Math.max(i.distanceSquaredTo(A.camera.position),0))}cameraSpaceZDepth({camera:A}){const i=this.boundingVolume;return da.subVectors(i.center,A.position),A.direction.dot(da)}insideViewerRequestVolume(A){const i=this._viewerRequestVolume;return!i||i.distanceSquaredTo(A.camera.position)<=0}updateExpiration(){if(F4(this._expireDate)&&this.contentReady&&!this.hasEmptyContent){const A=Date.now();Date.lessThan(this._expireDate,A)&&(this.contentState=Le.EXPIRED,this._expiredContent=this.content)}}get extras(){return this.header.extras}_initializeLodMetric(A){"lodMetricType"in A?this.lodMetricType=A.lodMetricType:(this.lodMetricType=this.parent&&this.parent.lodMetricType||this.tileset.lodMetricType,console.warn("3D Tile: Required prop lodMetricType is undefined. Using parent lodMetricType")),"lodMetricValue"in A?this.lodMetricValue=A.lodMetricValue:(this.lodMetricValue=this.parent&&this.parent.lodMetricValue||this.tileset.lodMetricValue,console.warn("3D Tile: Required prop lodMetricValue is undefined. Using parent lodMetricValue"))}_initializeTransforms(A){this.transform=A.transform?new KA(A.transform):new KA;const i=this.parent,a=this.tileset,c=i&&i.computedTransform?i.computedTransform.clone():a.modelMatrix.clone();this.computedTransform=new KA(c).multiplyRight(this.transform);const h=i&&i._initialTransform?i._initialTransform.clone():new KA;this._initialTransform=new KA(h).multiplyRight(this.transform)}_initializeBoundingVolumes(A){this._contentBoundingVolume=null,this._viewerRequestVolume=null,this._updateBoundingVolume(A)}_initializeContent(A){this.content={_tileset:this.tileset,_tile:this},this.hasEmptyContent=!0,this.contentState=Le.UNLOADED,this.hasTilesetContent=!1,A.contentUrl&&(this.content=null,this.hasEmptyContent=!1)}_initializeRenderingState(A){this.depth=A.level||(this.parent?this.parent.depth+1:0),this._shouldRefine=!1,this._distanceToCamera=0,this._centerZDepth=0,this._screenSpaceError=0,this._visibilityPlaneMask=xe.MASK_INDETERMINATE,this._visible=void 0,this._inRequestVolume=!1,this._stackLength=0,this._selectionDepth=0,this._frameNumber=0,this._touchedFrame=0,this._visitedFrame=0,this._selectedFrame=0,this._requestedFrame=0,this._priority=0}_getRefine(A){return A||this.parent&&this.parent.refine||He.REPLACE}_isTileset(){return this.contentUrl.indexOf(".json")!==-1}_onContentLoaded(){switch(this.content&&this.content.type){case"vctr":case"geom":this.tileset._traverser.disableSkipLevelOfDetail=!0;break}this._isTileset()?this.hasTilesetContent=!0:this.gpuMemoryUsageInBytes=this._getGpuMemoryUsageInBytes()}_updateBoundingVolume(A){this.boundingVolume=k0(A.boundingVolume,this.computedTransform,this.boundingVolume);const i=A.content;i&&(i.boundingVolume&&(this._contentBoundingVolume=k0(i.boundingVolume,this.computedTransform,this._contentBoundingVolume)),A.viewerRequestVolume&&(this._viewerRequestVolume=k0(A.viewerRequestVolume,this.computedTransform,this._viewerRequestVolume)))}_updateTransform(A=new KA){const i=A.clone().multiplyRight(this.transform);i.equals(this.computedTransform)||(this.computedTransform=i,this._updateBoundingVolume(this.header))}_getLoaderSpecificOptions(A){switch(A){case"i3s":return{...this.tileset.options.i3s,_tileOptions:{attributeUrls:this.header.attributeUrls,textureUrl:this.header.textureUrl,textureFormat:this.header.textureFormat,textureLoaderOptions:this.header.textureLoaderOptions,materialDefinition:this.header.materialDefinition,isDracoGeometry:this.header.isDracoGeometry,mbs:this.header.mbs},_tilesetOptions:{store:this.tileset.tileset.store,attributeStorageInfo:this.tileset.tileset.attributeStorageInfo,fields:this.tileset.tileset.fields},isTileHeader:!1};case"3d-tiles":case"cesium-ion":default:return O4(this.tileset.tileset)}}}class U4 extends kn{compareDistanceToCamera(A,i){return i._distanceToCamera===0&&A._distanceToCamera===0?i._centerZDepth-A._centerZDepth:i._distanceToCamera-A._distanceToCamera}updateTileVisibility(A,i){if(super.updateTileVisibility(A,i),!A.isVisibleAndInRequestVolume)return;const a=A.children.length>0;if(A.hasTilesetContent&&a){const g=A.children[0];this.updateTileVisibility(g,i),A._visible=g._visible;return}if(this.meetsScreenSpaceErrorEarly(A,i)){A._visible=!1;return}const c=A.refine===He.REPLACE,h=A._optimChildrenWithinParent===b4.USE_OPTIMIZATION;if(c&&h&&a&&!this.anyChildrenVisible(A,i)){A._visible=!1;return}}meetsScreenSpaceErrorEarly(A,i){const{parent:a}=A;return!a||a.hasTilesetContent||a.refine!==He.ADD?!1:!this.shouldRefine(A,i,!0)}}class Q4{frameNumberMap=new Map;register(A,i){const a=this.frameNumberMap.get(A)||new Map,c=a.get(i)||0;a.set(i,c+1),this.frameNumberMap.set(A,a)}deregister(A,i){const a=this.frameNumberMap.get(A);if(!a)return;const c=a.get(i)||1;a.set(i,c-1)}isZero(A,i){return(this.frameNumberMap.get(A)?.get(i)||0)===0}}const Q0={REQUESTED:"REQUESTED",COMPLETED:"COMPLETED",ERROR:"ERROR"};class V4{_statusMap;pendingTilesRegister=new Q4;constructor(){this._statusMap={}}add(A,i,a,c){if(!this._statusMap[i]){const{frameNumber:h,viewport:{id:g}}=c;this._statusMap[i]={request:A,callback:a,key:i,frameState:c,status:Q0.REQUESTED},this.pendingTilesRegister.register(g,h),A().then(m=>{this._statusMap[i].status=Q0.COMPLETED;const{frameNumber:y,viewport:{id:v}}=this._statusMap[i].frameState;this.pendingTilesRegister.deregister(v,y),this._statusMap[i].callback(m,c)}).catch(m=>{this._statusMap[i].status=Q0.ERROR;const{frameNumber:y,viewport:{id:v}}=this._statusMap[i].frameState;this.pendingTilesRegister.deregister(v,y),a(m)})}}update(A,i){if(this._statusMap[A]){const{frameNumber:a,viewport:{id:c}}=this._statusMap[A].frameState;this.pendingTilesRegister.deregister(c,a);const{frameNumber:h,viewport:{id:g}}=i;this.pendingTilesRegister.register(g,h),this._statusMap[A].frameState=i}}find(A){return this._statusMap[A]}hasPendingTiles(A,i){return!this.pendingTilesRegister.isZero(A,i)}}class z4 extends kn{_tileManager;constructor(A){super(A),this._tileManager=new V4}traversalFinished(A){return!this._tileManager.hasPendingTiles(A.viewport.id,this._frameNumber||0)}shouldRefine(A,i){return A._lodJudge=D4(A,i),A._lodJudge==="DIG"}updateChildTiles(A,i){const a=A.header.children||[],c=A.children,h=A.tileset;for(const g of a){const m=`${g.id}-${i.viewport.id}`,y=c&&c.find(v=>v.id===m);if(y)y&&this.updateTile(y,i);else{let v=()=>this._loadTile(g.id,h);this._tileManager.find(m)?this._tileManager.update(m,i):(h.tileset.nodePages&&(v=()=>h.tileset.nodePagesTile.formTileFromNodePages(g.id)),this._tileManager.add(v,m,C=>this._onTileLoad(C,A,m),i))}}return!1}async _loadTile(A,i){const{loader:a}=i,c=i.getTileUrl(`${i.url}/nodes/${A}`),h={...i.loadOptions,i3s:{...i.loadOptions.i3s,isTileHeader:!0}};return await Cr(c,a,h)}_onTileLoad(A,i,a){const c=new di(i.tileset,A,i,a);i.children.push(c);const h=this._tileManager.find(c.id).frameState;this.updateTile(c,h),this._frameNumber===h.frameNumber&&(this.traversalFinished(h)||new Date().getTime()-this.lastUpdate>this.updateDebounceTime)&&this.executeTraversal(c,h)}}const G4={description:"",ellipsoid:$A.WGS84,modelMatrix:new KA,throttleRequests:!0,maxRequests:64,maximumMemoryUsage:32,memoryCacheOverflow:1,maximumTilesSelected:0,debounceTime:0,onTileLoad:()=>{},onTileUnload:()=>{},onTileError:()=>{},onTraversalComplete:e=>e,contentLoader:void 0,viewDistanceScale:1,maximumScreenSpaceError:8,memoryAdjustedScreenSpaceError:!1,loadTiles:!0,updateTransforms:!0,viewportTraversersMap:null,loadOptions:{fetch:{}},attributions:[],basePath:"",i3s:{}},sn="Tiles In Tileset(s)",V0="Tiles In Memory",ga="Tiles In View",pa="Tiles To Render",ma="Tiles Loaded",z0="Tiles Loading",wa="Tiles Unloaded",ya="Failed Tile Loads",Ta="Points/Vertices",G0="Tile Memory Use",va="Maximum Screen Space Error";class q4{options;loadOptions;type;tileset;loader;url;basePath;modelMatrix;ellipsoid;lodMetricType;lodMetricValue;refine;root=null;roots={};asset={};description="";properties;extras=null;attributions={};credits={};stats;contentFormats={draco:!1,meshopt:!1,dds:!1,ktx2:!1};cartographicCenter=null;cartesianCenter=null;zoom=1;boundingVolume=null;dynamicScreenSpaceErrorComputedDensity=0;maximumMemoryUsage=32;gpuMemoryUsageInBytes=0;memoryAdjustedScreenSpaceError=0;_cacheBytes=0;_cacheOverflowBytes=0;_frameNumber=0;_queryParams={};_extensionsUsed=[];_tiles={};_pendingCount=0;selectedTiles=[];traverseCounter=0;geometricError=0;lastUpdatedVieports=null;_requestedTiles=[];_emptyTiles=[];frameStateData={};_traverser;_cache=new h4;_requestScheduler;updatePromise=null;tilesetInitializationPromise;constructor(A,i){this.options={...G4,...i},this.tileset=A,this.loader=A.loader,this.type=A.type,this.url=A.url,this.basePath=A.basePath||Ka(this.url),this.modelMatrix=this.options.modelMatrix,this.ellipsoid=this.options.ellipsoid,this.lodMetricType=A.lodMetricType,this.lodMetricValue=A.lodMetricValue,this.refine=A.root.refine,this.loadOptions=this.options.loadOptions||{},this._traverser=this._initializeTraverser(),this._requestScheduler=new tl({throttleRequests:this.options.throttleRequests,maxRequests:this.options.maxRequests}),this.memoryAdjustedScreenSpaceError=this.options.maximumScreenSpaceError,this._cacheBytes=this.options.maximumMemoryUsage*1024*1024,this._cacheOverflowBytes=this.options.memoryCacheOverflow*1024*1024,this.stats=new $a({id:this.url}),this._initializeStats(),this.tilesetInitializationPromise=this._initializeTileSet(A)}destroy(){this._destroy()}isLoaded(){return this._pendingCount===0&&this._frameNumber!==0&&this._requestedTiles.length===0}get tiles(){return Object.values(this._tiles)}get frameNumber(){return this._frameNumber}get queryParams(){return new URLSearchParams(this._queryParams).toString()}setProps(A){this.options={...this.options,...A}}getTileUrl(A){if(A.startsWith("data:"))return A;let a=A;return this.queryParams.length&&(a=`${A}${A.includes("?")?"&":"?"}${this.queryParams}`),a}hasExtension(A){return this._extensionsUsed.indexOf(A)>-1}update(A=null){this.tilesetInitializationPromise.then(()=>{!A&&this.lastUpdatedVieports?A=this.lastUpdatedVieports:this.lastUpdatedVieports=A,A&&this.doUpdate(A)})}async selectTiles(A=null){return await this.tilesetInitializationPromise,A&&(this.lastUpdatedVieports=A),this.updatePromise||(this.updatePromise=new Promise(i=>{setTimeout(()=>{this.lastUpdatedVieports&&this.doUpdate(this.lastUpdatedVieports),i(this._frameNumber),this.updatePromise=null},this.options.debounceTime)})),this.updatePromise}adjustScreenSpaceError(){this.gpuMemoryUsageInBytes<this._cacheBytes?this.memoryAdjustedScreenSpaceError=Math.max(this.memoryAdjustedScreenSpaceError/1.02,this.options.maximumScreenSpaceError):this.gpuMemoryUsageInBytes>this._cacheBytes+this._cacheOverflowBytes&&(this.memoryAdjustedScreenSpaceError*=1.02)}doUpdate(A){if("loadTiles"in this.options&&!this.options.loadTiles||this.traverseCounter>0)return;const i=A instanceof Array?A:[A];this._cache.reset(),this._frameNumber++,this.traverseCounter=i.length;const a=[];for(const c of i){const h=c.id;this._needTraverse(h)?a.push(h):this.traverseCounter--}for(const c of i){const h=c.id;if(this.roots[h]||(this.roots[h]=this._initializeTileHeaders(this.tileset,null)),!a.includes(h))continue;const g=g4(c,this._frameNumber);this._traverser.traverse(this.roots[h],g,this.options)}}_needTraverse(A){let i=A;return this.options.viewportTraversersMap&&(i=this.options.viewportTraversersMap[A]),i===A}_onTraversalEnd(A){const i=A.viewport.id;this.frameStateData[i]||(this.frameStateData[i]={selectedTiles:[],_requestedTiles:[],_emptyTiles:[]});const a=this.frameStateData[i],c=Object.values(this._traverser.selectedTiles),[h,g]=p4(c,A,this.options.maximumTilesSelected);a.selectedTiles=h;for(const m of g)m.unselect();a._requestedTiles=Object.values(this._traverser.requestedTiles),a._emptyTiles=Object.values(this._traverser.emptyTiles),this.traverseCounter--,!(this.traverseCounter>0)&&this._updateTiles()}_updateTiles(){this.selectedTiles=[],this._requestedTiles=[],this._emptyTiles=[];for(const A in this.frameStateData){const i=this.frameStateData[A];this.selectedTiles=this.selectedTiles.concat(i.selectedTiles),this._requestedTiles=this._requestedTiles.concat(i._requestedTiles),this._emptyTiles=this._emptyTiles.concat(i._emptyTiles)}this.selectedTiles=this.options.onTraversalComplete(this.selectedTiles);for(const A of this.selectedTiles)this._tiles[A.id]=A;this._loadTiles(),this._unloadTiles(),this._updateStats()}_tilesChanged(A,i){if(A.length!==i.length)return!0;const a=new Set(A.map(g=>g.id)),c=new Set(i.map(g=>g.id));let h=A.filter(g=>!c.has(g.id)).length>0;return h=h||i.filter(g=>!a.has(g.id)).length>0,h}_loadTiles(){for(const A of this._requestedTiles)A.contentUnloaded&&this._loadTile(A)}_unloadTiles(){this._cache.unloadTiles(this,(A,i)=>A._unloadTile(i))}_updateStats(){let A=0,i=0;for(const a of this.selectedTiles)a.contentAvailable&&a.content&&(A++,a.content.pointCount?i+=a.content.pointCount:i+=a.content.vertexCount);this.stats.get(ga).count=this.selectedTiles.length,this.stats.get(pa).count=A,this.stats.get(Ta).count=i,this.stats.get(va).count=this.memoryAdjustedScreenSpaceError}async _initializeTileSet(A){this.type===Se.I3S&&(this.calculateViewPropsI3S(),A.root=await A.root),this.root=this._initializeTileHeaders(A,null),this.type===Se.TILES3D&&(this._initializeTiles3DTileset(A),this.calculateViewPropsTiles3D()),this.type===Se.I3S&&this._initializeI3STileset()}calculateViewPropsI3S(){const A=this.tileset.fullExtent;if(A){const{xmin:a,xmax:c,ymin:h,ymax:g,zmin:m,zmax:y}=A;this.cartographicCenter=new H(a+(c-a)/2,h+(g-h)/2,m+(y-m)/2),this.cartesianCenter=new H,$A.WGS84.cartographicToCartesian(this.cartographicCenter,this.cartesianCenter),this.zoom=Tu(A,this.cartographicCenter,this.cartesianCenter);return}const i=this.tileset.store?.extent;if(i){const[a,c,h,g]=i;this.cartographicCenter=new H(a+(h-a)/2,c+(g-c)/2,0),this.cartesianCenter=new H,$A.WGS84.cartographicToCartesian(this.cartographicCenter,this.cartesianCenter),this.zoom=v4(i,this.cartographicCenter,this.cartesianCenter);return}console.warn("Extent is not defined in the tileset header"),this.cartographicCenter=new H,this.zoom=1}calculateViewPropsTiles3D(){const A=this.root,{center:i}=A.boundingVolume;if(!i){console.warn("center was not pre-calculated for the root tile"),this.cartographicCenter=new H,this.zoom=1;return}i[0]!==0||i[1]!==0||i[2]!==0?(this.cartographicCenter=new H,$A.WGS84.cartesianToCartographic(i,this.cartographicCenter)):this.cartographicCenter=new H(0,0,-$A.WGS84.radii[0]),this.cartesianCenter=i,this.zoom=T4(A.boundingVolume,this.cartographicCenter)}_initializeStats(){this.stats.get(sn),this.stats.get(z0),this.stats.get(V0),this.stats.get(ga),this.stats.get(pa),this.stats.get(ma),this.stats.get(wa),this.stats.get(ya),this.stats.get(Ta),this.stats.get(G0,"memory"),this.stats.get(va)}_initializeTileHeaders(A,i){const a=new di(this,A.root,i);if(i&&(i.children.push(a),a.depth=i.depth+1),this.type===Se.TILES3D){const c=[];for(c.push(a);c.length>0;){const h=c.pop();this.stats.get(sn).incrementCount();const g=h.header.children||[];for(const m of g){const y=new di(this,m,h);if(y.contentUrl?.includes("?session=")){const _=new URL(y.contentUrl).searchParams.get("session");_&&(this._queryParams.session=_)}h.children.push(y),y.depth=h.depth+1,c.push(y)}}}return a}_initializeTraverser(){let A;switch(this.type){case Se.TILES3D:A=U4;break;case Se.I3S:A=z4;break;default:A=kn}return new A({basePath:this.basePath,onTraversalEnd:this._onTraversalEnd.bind(this)})}_destroyTileHeaders(A){this._destroySubtree(A)}async _loadTile(A){let i;try{this._onStartTileLoading(),i=await A.loadContent()}catch(a){this._onTileLoadError(A,a instanceof Error?a:new Error("load failed"))}finally{this._onEndTileLoading(),this._onTileLoad(A,i)}}_onTileLoadError(A,i){this.stats.get(ya).incrementCount();const a=i.message||i.toString(),c=A.url;console.error(`A 3D tile failed to load: ${A.url} ${a}`),this.options.onTileError(A,a,c)}_onTileLoad(A,i){if(i){if(this.type===Se.I3S){const a=this.tileset?.nodePagesTile?.nodesInNodePages||0;this.stats.get(sn).reset(),this.stats.get(sn).addCount(a)}A&&A.content&&d4(A,A.content),this.updateContentTypes(A),this._addTileToCache(A),this.options.onTileLoad(A)}}updateContentTypes(A){if(this.type===Se.I3S)switch(A.header.isDracoGeometry&&(this.contentFormats.draco=!0),A.header.textureFormat){case"dds":this.contentFormats.dds=!0;break;case"ktx2":this.contentFormats.ktx2=!0;break}else if(this.type===Se.TILES3D){const{extensionsRemoved:i=[]}=A.content?.gltf||{};i.includes("KHR_draco_mesh_compression")&&(this.contentFormats.draco=!0),i.includes("EXT_meshopt_compression")&&(this.contentFormats.meshopt=!0),i.includes("KHR_texture_basisu")&&(this.contentFormats.ktx2=!0)}}_onStartTileLoading(){this._pendingCount++,this.stats.get(z0).incrementCount()}_onEndTileLoading(){this._pendingCount--,this.stats.get(z0).decrementCount()}_addTileToCache(A){this._cache.add(this,A,i=>i._updateCacheStats(A))}_updateCacheStats(A){this.stats.get(ma).incrementCount(),this.stats.get(V0).incrementCount(),this.gpuMemoryUsageInBytes+=A.gpuMemoryUsageInBytes||0,this.stats.get(G0).count=this.gpuMemoryUsageInBytes,this.options.memoryAdjustedScreenSpaceError&&this.adjustScreenSpaceError()}_unloadTile(A){this.gpuMemoryUsageInBytes-=A.gpuMemoryUsageInBytes||0,this.stats.get(V0).decrementCount(),this.stats.get(wa).incrementCount(),this.stats.get(G0).count=this.gpuMemoryUsageInBytes,this.options.onTileUnload(A),A.unloadContent()}_destroy(){const A=[];for(this.root&&A.push(this.root);A.length>0;){const i=A.pop();for(const a of i.children)A.push(a);this._destroyTile(i)}this.root=null}_destroySubtree(A){const i=A,a=[];for(a.push(i);a.length>0;){A=a.pop();for(const c of A.children)a.push(c);A!==i&&this._destroyTile(A)}i.children=[]}_destroyTile(A){this._cache.unloadTile(this,A),this._unloadTile(A),A.destroy()}_initializeTiles3DTileset(A){if(A.queryString){const i=new URLSearchParams(A.queryString),a=Object.fromEntries(i.entries());this._queryParams={...this._queryParams,...a}}if(this.asset=A.asset,!this.asset)throw new Error("Tileset must have an asset property.");if(this.asset.version!=="0.0"&&this.asset.version!=="1.0"&&this.asset.version!=="1.1")throw new Error("The tileset must be 3D Tiles version either 0.0 or 1.0 or 1.1.");"tilesetVersion"in this.asset&&(this._queryParams.v=this.asset.tilesetVersion),this.credits={attributions:this.options.attributions||[]},this.description=this.options.description||"",this.properties=A.properties,this.geometricError=A.geometricError,this._extensionsUsed=A.extensionsUsed||[],this.extras=A.extras}_initializeI3STileset(){this.loadOptions.i3s&&"token"in this.loadOptions.i3s&&(this._queryParams.token=this.loadOptions.i3s.token)}}const Cu="4.3.3",vr={COMPOSITE:"cmpt",POINT_CLOUD:"pnts",BATCHED_3D_MODEL:"b3dm",INSTANCED_3D_MODEL:"i3dm",GLTF:"glTF"};function Su(e,A,i){ce(e instanceof ArrayBuffer);const a=new TextDecoder("utf8"),c=new Uint8Array(e,A,i);return a.decode(c)}function H4(e,A=0){const i=new DataView(e);return`${String.fromCharCode(i.getUint8(A+0))}${String.fromCharCode(i.getUint8(A+1))}${String.fromCharCode(i.getUint8(A+2))}${String.fromCharCode(i.getUint8(A+3))}`}const j4={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6},ie={BYTE:5120,UNSIGNED_BYTE:5121,SHORT:5122,UNSIGNED_SHORT:5123,INT:5124,UNSIGNED_INT:5125,FLOAT:5126,DOUBLE:5130},VA={...j4,...ie},q0={[ie.DOUBLE]:Float64Array,[ie.FLOAT]:Float32Array,[ie.UNSIGNED_SHORT]:Uint16Array,[ie.UNSIGNED_INT]:Uint32Array,[ie.UNSIGNED_BYTE]:Uint8Array,[ie.BYTE]:Int8Array,[ie.SHORT]:Int16Array,[ie.INT]:Int32Array},W4={DOUBLE:ie.DOUBLE,FLOAT:ie.FLOAT,UNSIGNED_SHORT:ie.UNSIGNED_SHORT,UNSIGNED_INT:ie.UNSIGNED_INT,UNSIGNED_BYTE:ie.UNSIGNED_BYTE,BYTE:ie.BYTE,SHORT:ie.SHORT,INT:ie.INT},H0="Failed to convert GL type";class Ke{static fromTypedArray(A){A=ArrayBuffer.isView(A)?A.constructor:A;for(const i in q0)if(q0[i]===A)return i;throw new Error(H0)}static fromName(A){const i=W4[A];if(!i)throw new Error(H0);return i}static getArrayType(A){switch(A){case ie.UNSIGNED_SHORT_5_6_5:case ie.UNSIGNED_SHORT_4_4_4_4:case ie.UNSIGNED_SHORT_5_5_5_1:return Uint16Array;default:const i=q0[A];if(!i)throw new Error(H0);return i}}static getByteSize(A){return Ke.getArrayType(A).BYTES_PER_ELEMENT}static validate(A){return!!Ke.getArrayType(A)}static createTypedArray(A,i,a=0,c){c===void 0&&(c=(i.byteLength-a)/Ke.getByteSize(A));const h=Ke.getArrayType(A);return new h(i,a,c)}}function Y4(e,A){if(!e)throw new Error(`math.gl assertion failed. ${A}`)}function Z4(e,A=[0,0,0]){const i=e>>11&31,a=e>>5&63,c=e&31;return A[0]=i<<3,A[1]=a<<2,A[2]=c<<3,A}new bi;new H;new bi;new bi;function _a(e,A=255){return Hh(e,0,A)/A*2-1}function ba(e){return e<0?-1:1}function X4(e,A,i,a){if(Y4(a),e<0||e>i||A<0||A>i)throw new Error(`x and y must be unsigned normalized integers between 0 and ${i}`);if(a.x=_a(e,i),a.y=_a(A,i),a.z=1-(Math.abs(a.x)+Math.abs(a.y)),a.z<0){const c=a.x;a.x=(1-Math.abs(a.y))*ba(c),a.y=(1-Math.abs(c))*ba(a.y)}return a.normalize()}function J4(e,A,i){return X4(e,A,255,i)}class Ui{json;buffer;featuresLength=0;_cachedTypedArrays={};constructor(A,i){this.json=A,this.buffer=i}getExtension(A){return this.json.extensions&&this.json.extensions[A]}hasProperty(A){return!!this.json[A]}getGlobalProperty(A,i=VA.UNSIGNED_INT,a=1){const c=this.json[A];return c&&Number.isFinite(c.byteOffset)?this._getTypedArrayFromBinary(A,i,a,1,c.byteOffset):c}getPropertyArray(A,i,a){const c=this.json[A];return c&&Number.isFinite(c.byteOffset)?("componentType"in c&&(i=Ke.fromName(c.componentType)),this._getTypedArrayFromBinary(A,i,a,this.featuresLength,c.byteOffset)):this._getTypedArrayFromArray(A,i,c)}getProperty(A,i,a,c,h){const g=this.json[A];if(!g)return g;const m=this.getPropertyArray(A,i,a);if(a===1)return m[c];for(let y=0;y<a;++y)h[y]=m[a*c+y];return h}_getTypedArrayFromBinary(A,i,a,c,h){const g=this._cachedTypedArrays;let m=g[A];return m||(m=Ke.createTypedArray(i,this.buffer.buffer,this.buffer.byteOffset+h,c*a),g[A]=m),m}_getTypedArrayFromArray(A,i,a){const c=this._cachedTypedArrays;let h=c[A];return h||(h=Ke.createTypedArray(i,a),c[A]=h),h}}const K4={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},$4={SCALAR:(e,A)=>e[A],VEC2:(e,A)=>[e[2*A+0],e[2*A+1]],VEC3:(e,A)=>[e[3*A+0],e[3*A+1],e[3*A+2]],VEC4:(e,A)=>[e[4*A+0],e[4*A+1],e[4*A+2],e[4*A+3]],MAT2:(e,A)=>[e[4*A+0],e[4*A+1],e[4*A+2],e[4*A+3]],MAT3:(e,A)=>[e[9*A+0],e[9*A+1],e[9*A+2],e[9*A+3],e[9*A+4],e[9*A+5],e[9*A+6],e[9*A+7],e[9*A+8]],MAT4:(e,A)=>[e[16*A+0],e[16*A+1],e[16*A+2],e[16*A+3],e[16*A+4],e[16*A+5],e[16*A+6],e[16*A+7],e[16*A+8],e[16*A+9],e[16*A+10],e[16*A+11],e[16*A+12],e[16*A+13],e[16*A+14],e[16*A+15]]},Aw={SCALAR:(e,A,i)=>{A[i]=e},VEC2:(e,A,i)=>{A[2*i+0]=e[0],A[2*i+1]=e[1]},VEC3:(e,A,i)=>{A[3*i+0]=e[0],A[3*i+1]=e[1],A[3*i+2]=e[2]},VEC4:(e,A,i)=>{A[4*i+0]=e[0],A[4*i+1]=e[1],A[4*i+2]=e[2],A[4*i+3]=e[3]},MAT2:(e,A,i)=>{A[4*i+0]=e[0],A[4*i+1]=e[1],A[4*i+2]=e[2],A[4*i+3]=e[3]},MAT3:(e,A,i)=>{A[9*i+0]=e[0],A[9*i+1]=e[1],A[9*i+2]=e[2],A[9*i+3]=e[3],A[9*i+4]=e[4],A[9*i+5]=e[5],A[9*i+6]=e[6],A[9*i+7]=e[7],A[9*i+8]=e[8],A[9*i+9]=e[9]},MAT4:(e,A,i)=>{A[16*i+0]=e[0],A[16*i+1]=e[1],A[16*i+2]=e[2],A[16*i+3]=e[3],A[16*i+4]=e[4],A[16*i+5]=e[5],A[16*i+6]=e[6],A[16*i+7]=e[7],A[16*i+8]=e[8],A[16*i+9]=e[9],A[16*i+10]=e[10],A[16*i+11]=e[11],A[16*i+12]=e[12],A[16*i+13]=e[13],A[16*i+14]=e[14],A[16*i+15]=e[15]}};function ew(e,A,i,a){const{componentType:c}=e;ce(e.componentType);const h=typeof c=="string"?Ke.fromName(c):c,g=K4[e.type],m=$4[e.type],y=Aw[e.type];return i+=e.byteOffset,{values:Ke.createTypedArray(h,A,i,g*a),type:h,size:g,unpacker:m,packer:y}}const Je=e=>e!==void 0;function tw(e,A,i){if(!A)return null;let a=e.getExtension("3DTILES_batch_table_hierarchy");const c=A.HIERARCHY;return c&&(console.warn("3D Tile Parser: HIERARCHY is deprecated. Use 3DTILES_batch_table_hierarchy."),A.extensions=A.extensions||{},A.extensions["3DTILES_batch_table_hierarchy"]=c,a=c),a?rw(a,i):null}function rw(e,A){let i,a,c;const h=e.instancesLength,g=e.classes;let m=e.classIds,y=e.parentCounts,v=e.parentIds,_=h;Je(m.byteOffset)&&(m.componentType=defaultValue(m.componentType,GL.UNSIGNED_SHORT),m.type=AttributeType.SCALAR,c=getBinaryAccessor(m),m=c.createArrayBufferView(A.buffer,A.byteOffset+m.byteOffset,h));let C;if(Je(y))for(Je(y.byteOffset)&&(y.componentType=defaultValue(y.componentType,GL.UNSIGNED_SHORT),y.type=AttributeType.SCALAR,c=getBinaryAccessor(y),y=c.createArrayBufferView(A.buffer,A.byteOffset+y.byteOffset,h)),C=new Uint16Array(h),_=0,i=0;i<h;++i)C[i]=_,_+=y[i];Je(v)&&Je(v.byteOffset)&&(v.componentType=defaultValue(v.componentType,GL.UNSIGNED_SHORT),v.type=AttributeType.SCALAR,c=getBinaryAccessor(v),v=c.createArrayBufferView(A.buffer,A.byteOffset+v.byteOffset,_));const P=g.length;for(i=0;i<P;++i){const tA=g[i].length,R=g[i].instances,z=getBinaryProperties(tA,R,A);g[i].instances=combine(z,R)}const N=new Array(P).fill(0),Y=new Uint16Array(h);for(i=0;i<h;++i)a=m[i],Y[i]=N[a],++N[a];const Z={classes:g,classIds:m,classIndexes:Y,parentCounts:y,parentIndexes:C,parentIds:v};return sw(Z),Z}function _r(e,A,i){if(!e)return;const a=e.parentCounts;return e.parentIds?i(e,A):a>0?nw(e,A,i):iw(e,A,i)}function nw(e,A,i){const a=e.classIds,c=e.parentCounts,h=e.parentIds,g=e.parentIndexes,m=a.length,y=scratchVisited;y.length=Math.max(y.length,m);const v=++marker,_=scratchStack;for(_.length=0,_.push(A);_.length>0;){if(A=_.pop(),y[A]===v)continue;y[A]=v;const C=i(e,A);if(Je(C))return C;const P=c[A],N=g[A];for(let Y=0;Y<P;++Y){const Z=h[N+Y];Z!==A&&_.push(Z)}}return null}function iw(e,A,i){let a=!0;for(;a;){const c=i(e,A);if(Je(c))return c;const h=e.parentIds[A];a=h!==A,A=h}throw new Error("traverseHierarchySingleParent")}function sw(e){const i=e.classIds.length;for(let a=0;a<i;++a)Iu(e,a,stack)}function Iu(e,A,i){const a=e.parentCounts,c=e.parentIds,h=e.parentIndexes,m=e.classIds.length;if(!Je(c))return;assert(A<m,`Parent index ${A} exceeds the total number of instances: ${m}`),assert(i.indexOf(A)===-1,"Circular dependency detected in the batch table hierarchy."),i.push(A);const y=Je(a)?a[A]:1,v=Je(a)?h[A]:A;for(let _=0;_<y;++_){const C=c[v+_];C!==A&&Iu(e,C,i)}i.pop(A)}function Ce(e){return e!=null}const on=(e,A)=>e,ow={HIERARCHY:!0,extensions:!0,extras:!0};class Bu{json;binary;featureCount;_extensions;_properties;_binaryProperties;_hierarchy;constructor(A,i,a,c={}){ce(a>=0),this.json=A||{},this.binary=i,this.featureCount=a,this._extensions=this.json?.extensions||{},this._properties={};for(const h in this.json)ow[h]||(this._properties[h]=this.json[h]);this._binaryProperties=this._initializeBinaryProperties(),c["3DTILES_batch_table_hierarchy"]&&(this._hierarchy=tw(this,this.json,this.binary))}getExtension(A){return this.json&&this.json.extensions&&this.json.extensions[A]}memorySizeInBytes(){return 0}isClass(A,i){if(this._checkBatchId(A),ce(typeof i=="string",i),this._hierarchy){const a=_r(this._hierarchy,A,(c,h)=>{const g=c.classIds[h];return c.classes[g].name===i});return Ce(a)}return!1}isExactClass(A,i){return ce(typeof i=="string",i),this.getExactClassName(A)===i}getExactClassName(A){if(this._checkBatchId(A),this._hierarchy){const i=this._hierarchy.classIds[A];return this._hierarchy.classes[i].name}}hasProperty(A,i){return this._checkBatchId(A),ce(typeof i=="string",i),Ce(this._properties[i])||this._hasPropertyInHierarchy(A,i)}getPropertyNames(A,i){this._checkBatchId(A),i=Ce(i)?i:[],i.length=0;const a=Object.keys(this._properties);return i.push(...a),this._hierarchy&&this._getPropertyNamesInHierarchy(A,i),i}getProperty(A,i){if(this._checkBatchId(A),ce(typeof i=="string",i),this._binaryProperties){const c=this._binaryProperties[i];if(Ce(c))return this._getBinaryProperty(c,A)}const a=this._properties[i];if(Ce(a))return on(a[A]);if(this._hierarchy){const c=this._getHierarchyProperty(A,i);if(Ce(c))return c}}setProperty(A,i,a){const c=this.featureCount;if(this._checkBatchId(A),ce(typeof i=="string",i),this._binaryProperties){const g=this._binaryProperties[i];if(g){this._setBinaryProperty(g,A,a);return}}if(this._hierarchy&&this._setHierarchyProperty(this,A,i,a))return;let h=this._properties[i];Ce(h)||(this._properties[i]=new Array(c),h=this._properties[i]),h[A]=on(a)}_checkBatchId(A){if(!(A>=0&&A<this.featureCount))throw new Error("batchId not in range [0, featureCount - 1].")}_getBinaryProperty(A,i){return A.unpack(A.typedArray,i)}_setBinaryProperty(A,i,a){A.pack(a,A.typedArray,i)}_initializeBinaryProperties(){let A=null;for(const i in this._properties){const a=this._properties[i],c=this._initializeBinaryProperty(i,a);c&&(A=A||{},A[i]=c)}return A}_initializeBinaryProperty(A,i){if("byteOffset"in i){const a=i;ce(this.binary,`Property ${A} requires a batch table binary.`),ce(a.type,`Property ${A} requires a type.`);const c=ew(a,this.binary.buffer,this.binary.byteOffset|0,this.featureCount);return{typedArray:c.values,componentCount:c.size,unpack:c.unpacker,pack:c.packer}}return null}_hasPropertyInHierarchy(A,i){if(!this._hierarchy)return!1;const a=_r(this._hierarchy,A,(c,h)=>{const g=c.classIds[h],m=c.classes[g].instances;return Ce(m[i])});return Ce(a)}_getPropertyNamesInHierarchy(A,i){_r(this._hierarchy,A,(a,c)=>{const h=a.classIds[c],g=a.classes[h].instances;for(const m in g)g.hasOwnProperty(m)&&i.indexOf(m)===-1&&i.push(m)})}_getHierarchyProperty(A,i){return _r(this._hierarchy,A,(a,c)=>{const h=a.classIds[c],g=a.classes[h],m=a.classIndexes[c],y=g.instances[i];return Ce(y)?Ce(y.typedArray)?this._getBinaryProperty(y,m):on(y[m]):null})}_setHierarchyProperty(A,i,a,c){const h=_r(this._hierarchy,i,(g,m)=>{const y=g.classIds[m],v=g.classes[y],_=g.classIndexes[m],C=v.instances[a];return Ce(C)?(ce(m===i,`Inherited property "${a}" is read-only.`),Ce(C.typedArray)?this._setBinaryProperty(C,_,c):C[_]=on(c),!0):!1});return Ce(h)}}const j0=4;function Fn(e,A,i=0){const a=new DataView(A);if(e.magic=a.getUint32(i,!0),i+=j0,e.version=a.getUint32(i,!0),i+=j0,e.byteLength=a.getUint32(i,!0),i+=j0,e.version!==1)throw new Error(`3D Tile Version ${e.version} not supported`);return i}const Zt=4,Ea="b3dm tile in legacy format.";function Qi(e,A,i){const a=new DataView(A);let c;e.header=e.header||{};let h=a.getUint32(i,!0);i+=Zt;let g=a.getUint32(i,!0);i+=Zt;let m=a.getUint32(i,!0);i+=Zt;let y=a.getUint32(i,!0);return i+=Zt,m>=570425344?(i-=Zt*2,c=h,m=g,y=0,h=0,g=0,console.warn(Ea)):y>=570425344&&(i-=Zt,c=m,m=h,y=g,h=0,g=0,console.warn(Ea)),e.header.featureTableJsonByteLength=h,e.header.featureTableBinaryByteLength=g,e.header.batchTableJsonByteLength=m,e.header.batchTableBinaryByteLength=y,e.header.batchLength=c,i}function Vi(e,A,i,a){return i=aw(e,A,i),i=lw(e,A,i),i}function aw(e,A,i,a){const{featureTableJsonByteLength:c,featureTableBinaryByteLength:h,batchLength:g}=e.header||{};if(e.featureTableJson={BATCH_LENGTH:g||0},c&&c>0){const m=Su(A,i,c);e.featureTableJson=JSON.parse(m)}return i+=c||0,e.featureTableBinary=new Uint8Array(A,i,h),i+=h||0,i}function lw(e,A,i,a){const{batchTableJsonByteLength:c,batchTableBinaryByteLength:h}=e.header||{};if(c&&c>0){const g=Su(A,i,c);e.batchTableJson=JSON.parse(g),i+=c,h&&h>0&&(e.batchTableBinary=new Uint8Array(A,i,h),e.batchTableBinary=new Uint8Array(e.batchTableBinary),i+=h)}return i}function Lu(e,A,i){if(!A&&(!e||!e.batchIds||!i))return null;const{batchIds:a,isRGB565:c,pointCount:h=0}=e;if(a&&i){const g=new Uint8ClampedArray(h*3);for(let m=0;m<h;m++){const y=a[m],_=i.getProperty(y,"dimensions").map(C=>C*255);g[m*3]=_[0],g[m*3+1]=_[1],g[m*3+2]=_[2]}return{type:VA.UNSIGNED_BYTE,value:g,size:3,normalized:!0}}if(A&&c){const g=new Uint8ClampedArray(h*3);for(let m=0;m<h;m++){const y=Z4(A[m]);g[m*3]=y[0],g[m*3+1]=y[1],g[m*3+2]=y[2]}return{type:VA.UNSIGNED_BYTE,value:g,size:3,normalized:!0}}return A&&A.length===h*3?{type:VA.UNSIGNED_BYTE,value:A,size:3,normalized:!0}:{type:VA.UNSIGNED_BYTE,value:A||new Uint8ClampedArray,size:4,normalized:!0}}const Ma=new H;function uw(e,A){if(!A)return null;if(e.isOctEncoded16P){const i=new Float32Array((e.pointsLength||0)*3);for(let a=0;a<(e.pointsLength||0);a++)J4(A[a*2],A[a*2+1],Ma),Ma.toArray(i,a*3);return{type:VA.FLOAT,size:2,value:i}}return{type:VA.FLOAT,size:2,value:A}}function cw(e,A,i){return e.isQuantized?i["3d-tiles"]&&i["3d-tiles"].decodeQuantizedPositions?(e.isQuantized=!1,fw(e,A)):{type:VA.UNSIGNED_SHORT,value:A,size:3,normalized:!0}:A}function fw(e,A){const i=new H,a=new Float32Array(e.pointCount*3);for(let c=0;c<e.pointCount;c++)i.set(A[c*3],A[c*3+1],A[c*3+2]).scale(1/e.quantizedRange).multiply(e.quantizedVolumeScale).add(e.quantizedVolumeOffset).toArray(a,c*3);return a}async function hw(e,A,i,a,c){i=Fn(e,A,i),i=Qi(e,A,i),i=Vi(e,A,i),dw(e);const{featureTable:h,batchTable:g}=gw(e);return await Tw(e,h,g,a,c),pw(e,h,a),mw(e,h,g),ww(e,h),i}function dw(e){e.attributes={positions:null,colors:null,normals:null,batchIds:null},e.isQuantized=!1,e.isTranslucent=!1,e.isRGB565=!1,e.isOctEncoded16P=!1}function gw(e){const A=new Ui(e.featureTableJson,e.featureTableBinary),i=A.getGlobalProperty("POINTS_LENGTH");if(!Number.isFinite(i))throw new Error("POINTS_LENGTH must be defined");A.featuresLength=i,e.featuresLength=i,e.pointsLength=i,e.pointCount=i,e.rtcCenter=A.getGlobalProperty("RTC_CENTER",VA.FLOAT,3);const a=yw(e,A);return{featureTable:A,batchTable:a}}function pw(e,A,i){if(e.attributes=e.attributes||{positions:null,colors:null,normals:null,batchIds:null},!e.attributes.positions){if(A.hasProperty("POSITION"))e.attributes.positions=A.getPropertyArray("POSITION",VA.FLOAT,3);else if(A.hasProperty("POSITION_QUANTIZED")){const a=A.getPropertyArray("POSITION_QUANTIZED",VA.UNSIGNED_SHORT,3);if(e.isQuantized=!0,e.quantizedRange=65535,e.quantizedVolumeScale=A.getGlobalProperty("QUANTIZED_VOLUME_SCALE",VA.FLOAT,3),!e.quantizedVolumeScale)throw new Error("QUANTIZED_VOLUME_SCALE must be defined for quantized positions.");if(e.quantizedVolumeOffset=A.getGlobalProperty("QUANTIZED_VOLUME_OFFSET",VA.FLOAT,3),!e.quantizedVolumeOffset)throw new Error("QUANTIZED_VOLUME_OFFSET must be defined for quantized positions.");e.attributes.positions=cw(e,a,i)}}if(!e.attributes.positions)throw new Error("Either POSITION or POSITION_QUANTIZED must be defined.")}function mw(e,A,i){if(e.attributes=e.attributes||{positions:null,colors:null,normals:null,batchIds:null},!e.attributes.colors){let a=null;A.hasProperty("RGBA")?(a=A.getPropertyArray("RGBA",VA.UNSIGNED_BYTE,4),e.isTranslucent=!0):A.hasProperty("RGB")?a=A.getPropertyArray("RGB",VA.UNSIGNED_BYTE,3):A.hasProperty("RGB565")&&(a=A.getPropertyArray("RGB565",VA.UNSIGNED_SHORT,1),e.isRGB565=!0),e.attributes.colors=Lu(e,a,i)}A.hasProperty("CONSTANT_RGBA")&&(e.constantRGBA=A.getGlobalProperty("CONSTANT_RGBA",VA.UNSIGNED_BYTE,4))}function ww(e,A){if(e.attributes=e.attributes||{positions:null,colors:null,normals:null,batchIds:null},!e.attributes.normals){let i=null;A.hasProperty("NORMAL")?i=A.getPropertyArray("NORMAL",VA.FLOAT,3):A.hasProperty("NORMAL_OCT16P")&&(i=A.getPropertyArray("NORMAL_OCT16P",VA.UNSIGNED_BYTE,2),e.isOctEncoded16P=!0),e.attributes.normals=uw(e,i)}}function yw(e,A){let i=null;if(!e.batchIds&&A.hasProperty("BATCH_ID")&&(e.batchIds=A.getPropertyArray("BATCH_ID",VA.UNSIGNED_SHORT,1),e.batchIds)){const a=A.getGlobalProperty("BATCH_LENGTH");if(!a)throw new Error("Global property: BATCH_LENGTH must be defined when BATCH_ID is defined.");const{batchTableJson:c,batchTableBinary:h}=e;i=new Bu(c,h,a)}return i}async function Tw(e,A,i,a,c){let h,g,m;const y=e.batchTableJson&&e.batchTableJson.extensions&&e.batchTableJson.extensions["3DTILES_draco_point_compression"];y&&(m=y.properties);const v=A.getExtension("3DTILES_draco_point_compression");if(v){g=v.properties;const C=v.byteOffset,P=v.byteLength;if(!g||!Number.isFinite(C)||!P)throw new Error("Draco properties, byteOffset, and byteLength must be defined");h=(e.featureTableBinary||[]).slice(C,C+P),e.hasPositions=Number.isFinite(g.POSITION),e.hasColors=Number.isFinite(g.RGB)||Number.isFinite(g.RGBA),e.hasNormals=Number.isFinite(g.NORMAL),e.hasBatchIds=Number.isFinite(g.BATCH_ID),e.isTranslucent=Number.isFinite(g.RGBA)}if(!h)return!0;const _={buffer:h,properties:{...g,...m},batchTableProperties:m};return await vw(e,_,a,c)}async function vw(e,A,i,a){if(!a)return;const c={...i,draco:{...i?.draco,extraAttributes:A.batchTableProperties||{}}};delete c["3d-tiles"];const h=await vi(A.buffer,Zh,c,a),g=h.attributes.POSITION&&h.attributes.POSITION.value,m=h.attributes.COLOR_0&&h.attributes.COLOR_0.value,y=h.attributes.NORMAL&&h.attributes.NORMAL.value,v=h.attributes.BATCH_ID&&h.attributes.BATCH_ID.value,_=g&&h.attributes.POSITION.value.quantization,C=y&&h.attributes.NORMAL.value.quantization;if(_){const N=h.POSITION.data.quantization,Y=N.range;e.quantizedVolumeScale=new H(Y,Y,Y),e.quantizedVolumeOffset=new H(N.minValues),e.quantizedRange=(1<<N.quantizationBits)-1,e.isQuantizedDraco=!0}C&&(e.octEncodedRange=(1<<h.NORMAL.data.quantization.quantizationBits)-1,e.isOctEncodedDraco=!0);const P={};if(A.batchTableProperties)for(const N of Object.keys(A.batchTableProperties))h.attributes[N]&&h.attributes[N].value&&(P[N.toLowerCase()]=h.attributes[N].value);e.attributes={positions:g,colors:Lu(e,m,void 0),normals:y,batchIds:v,...P}}const gi={URI:0,EMBEDDED:1};function Pu(e,A,i,a){e.rotateYtoZ=!0;const c=(e.byteOffset||0)+(e.byteLength||0)-i;if(c===0)throw new Error("glTF byte length must be greater than 0.");return e.gltfUpAxis=a?.["3d-tiles"]&&a["3d-tiles"].assetGltfUpAxis?a["3d-tiles"].assetGltfUpAxis:"Y",e.gltfArrayBuffer=A2(A,i,c),e.gltfByteOffset=0,e.gltfByteLength=c,i%4===0||console.warn(`${e.type}: embedded glb is not aligned to a 4-byte boundary.`),(e.byteOffset||0)+(e.byteLength||0)}async function xu(e,A,i,a){const c=i?.["3d-tiles"]||{};if(_w(e,A),c.loadGLTF){if(!a)return;if(e.gltfUrl){const{fetch:h}=a,g=await h(e.gltfUrl,i);e.gltfArrayBuffer=await g.arrayBuffer(),e.gltfByteOffset=0}if(e.gltfArrayBuffer){const h=await vi(e.gltfArrayBuffer,Za,i,a);e.gltf=Xa(h),e.gpuMemoryUsageInBytes=Ja(e.gltf),delete e.gltfArrayBuffer,delete e.gltfByteOffset,delete e.gltfByteLength}}}function _w(e,A,i){switch(A){case gi.URI:if(e.gltfArrayBuffer){const a=new Uint8Array(e.gltfArrayBuffer,e.gltfByteOffset),h=new TextDecoder().decode(a);e.gltfUrl=h.replace(/[\s\0]+$/,"")}delete e.gltfArrayBuffer,delete e.gltfByteOffset,delete e.gltfByteLength;break;case gi.EMBEDDED:break;default:throw new Error("b3dm: Illegal glTF format field")}}async function bw(e,A,i,a,c){i=Ew(e,A,i,a),await xu(e,gi.EMBEDDED,a,c);const h=e?.gltf?.extensions;return h&&h.CESIUM_RTC&&(e.rtcCenter=h.CESIUM_RTC.center),i}function Ew(e,A,i,a,c){i=Fn(e,A,i),i=Qi(e,A,i),i=Vi(e,A,i),i=Pu(e,A,i,a);const h=new Ui(e.featureTableJson,e.featureTableBinary);return e.rtcCenter=h.getGlobalProperty("RTC_CENTER",VA.FLOAT,3),i}async function Mw(e,A,i,a,c){return i=Cw(e,A,i,a),await xu(e,e.gltfFormat||0,a,c),i}function Cw(e,A,i,a,c){if(i=Fn(e,A,i),e.version!==1)throw new Error(`Instanced 3D Model version ${e.version} is not supported`);i=Qi(e,A,i);const h=new DataView(A);if(e.gltfFormat=h.getUint32(i,!0),i+=4,i=Vi(e,A,i),i=Pu(e,A,i,a),!e?.header?.featureTableJsonByteLength||e.header.featureTableJsonByteLength===0)throw new Error("i3dm parser: featureTableJsonByteLength is zero.");const g=new Ui(e.featureTableJson,e.featureTableBinary),m=g.getGlobalProperty("INSTANCES_LENGTH");if(g.featuresLength=m,!Number.isFinite(m))throw new Error("i3dm parser: INSTANCES_LENGTH must be defined");e.eastNorthUp=g.getGlobalProperty("EAST_NORTH_UP"),e.rtcCenter=g.getGlobalProperty("RTC_CENTER",VA.FLOAT,3);const y=new Bu(e.batchTableJson,e.batchTableBinary,m);return Sw(e,g,y,m),i}function Sw(e,A,i,a){const c=new Array(a),h=new H;new H,new H,new H;const g=new he,m=new wn,y=new H,v={},_=new KA,C=[],P=[],N=[],Y=[];for(let Z=0;Z<a;Z++){let tA;if(A.hasProperty("POSITION"))tA=A.getProperty("POSITION",VA.FLOAT,3,Z,h);else if(A.hasProperty("POSITION_QUANTIZED")){tA=A.getProperty("POSITION_QUANTIZED",VA.UNSIGNED_SHORT,3,Z,h);const j=A.getGlobalProperty("QUANTIZED_VOLUME_OFFSET",VA.FLOAT,3);if(!j)throw new Error("i3dm parser: QUANTIZED_VOLUME_OFFSET must be defined for quantized positions.");const $=A.getGlobalProperty("QUANTIZED_VOLUME_SCALE",VA.FLOAT,3);if(!$)throw new Error("i3dm parser: QUANTIZED_VOLUME_SCALE must be defined for quantized positions.");const lA=65535;for(let U=0;U<3;U++)tA[U]=tA[U]/lA*$[U]+j[U]}if(!tA)throw new Error("i3dm: POSITION or POSITION_QUANTIZED must be defined for each instance.");if(h.copy(tA),v.translation=h,e.normalUp=A.getProperty("NORMAL_UP",VA.FLOAT,3,Z,C),e.normalRight=A.getProperty("NORMAL_RIGHT",VA.FLOAT,3,Z,P),e.normalUp){if(!e.normalRight)throw new Error("i3dm: Custom orientation requires both NORMAL_UP and NORMAL_RIGHT.");e.hasCustomOrientation=!0}else{if(e.octNormalUp=A.getProperty("NORMAL_UP_OCT32P",VA.UNSIGNED_SHORT,2,Z,C),e.octNormalRight=A.getProperty("NORMAL_RIGHT_OCT32P",VA.UNSIGNED_SHORT,2,Z,P),e.octNormalUp)throw e.octNormalRight?new Error("i3dm: oct-encoded orientation not implemented"):new Error("i3dm: oct-encoded orientation requires NORMAL_UP_OCT32P and NORMAL_RIGHT_OCT32P");e.eastNorthUp?($A.WGS84.eastNorthUpToFixedFrame(h,_),_.getRotationMatrix3(g)):g.identity()}m.fromMatrix3(g),v.rotation=m,y.set(1,1,1);const R=A.getProperty("SCALE",VA.FLOAT,1,Z,N);Number.isFinite(R)&&y.multiplyByScalar(R);const z=A.getProperty("SCALE_NON_UNIFORM",VA.FLOAT,3,Z,C);z&&y.scale(z),v.scale=y;let rA=A.getProperty("BATCH_ID",VA.UNSIGNED_SHORT,1,Z,Y);rA===void 0&&(rA=Z);const mA=new KA().fromQuaternion(v.rotation);_.identity(),_.translate(v.translation),_.multiplyRight(mA),_.scale(v.scale);const G=_.clone();c[Z]={modelMatrix:G,batchId:rA}}e.instances=c}async function Iw(e,A,i,a,c,h){i=Fn(e,A,i);const g=new DataView(A);for(e.tilesLength=g.getUint32(i,!0),i+=4,e.tiles=[];e.tiles.length<e.tilesLength&&(e.byteLength||0)-i>12;){const m={shape:"tile3d"};e.tiles.push(m),i=await h(A,i,a,c,m)}return i}async function Bw(e,A,i,a){if(e.rotateYtoZ=!0,e.gltfUpAxis=i?.["3d-tiles"]?.assetGltfUpAxis?i["3d-tiles"].assetGltfUpAxis:"Y",i?.["3d-tiles"]?.loadGLTF){if(!a)return A.byteLength;const c=await vi(A,Za,i,a);e.gltf=Xa(c),e.gpuMemoryUsageInBytes=Ja(e.gltf)}else e.gltfArrayBuffer=A;return A.byteLength}async function Nu(e,A=0,i,a,c={shape:"tile3d"}){switch(c.byteOffset=A,c.type=H4(e,A),c.type){case vr.COMPOSITE:return await Iw(c,e,A,i,a,Nu);case vr.BATCHED_3D_MODEL:return await bw(c,e,A,i,a);case vr.GLTF:return await Bw(c,e,i,a);case vr.INSTANCED_3D_MODEL:return await Mw(c,e,A,i,a);case vr.POINT_CLOUD:return await hw(c,e,A,i,a);default:throw new Error(`3DTileLoader: unknown type ${c.type}`)}}const Lw=1952609651,Pw=1;async function xw(e,A,i){if(new Uint32Array(e.slice(0,4))[0]!==Lw)throw new Error("Wrong subtree file magic number");if(new Uint32Array(e.slice(4,8))[0]!==Pw)throw new Error("Wrong subtree file verson, must be 1");const h=Ca(e.slice(8,16)),g=new Uint8Array(e,24,h),y=new TextDecoder("utf8").decode(g),v=JSON.parse(y),_=Ca(e.slice(16,24));let C=new ArrayBuffer(0);if(_&&(C=e.slice(24+h)),await an(v,v.tileAvailability,C,i),Array.isArray(v.contentAvailability))for(const P of v.contentAvailability)await an(v,P,C,i);else await an(v,v.contentAvailability,C,i);return await an(v,v.childSubtreeAvailability,C,i),v}async function an(e,A,i,a){const c=Number.isFinite(A.bitstream)?A.bitstream:A.bufferView;if(typeof c!="number")return;const h=e.bufferViews[c],g=e.buffers[h.buffer];if(!a?.baseUrl)throw new Error("Url is not provided");if(!a.fetch)throw new Error("fetch is not provided");if(g.uri){const y=`${a?.baseUrl||""}/${g.uri}`,_=await(await a.fetch(y)).arrayBuffer();A.explicitBitstream=new Uint8Array(_,h.byteOffset,h.byteLength);return}const m=e.buffers.slice(0,h.buffer).reduce((y,v)=>y+v.byteLength,0);A.explicitBitstream=new Uint8Array(i.slice(m,m+g.byteLength),h.byteOffset,h.byteLength)}function Ca(e){const A=new DataView(e),i=A.getUint32(0,!0),a=A.getUint32(4,!0);return i+2**32*a}const Ru={dataType:null,batchType:null,id:"3d-tiles-subtree",name:"3D Tiles Subtree",module:"3d-tiles",version:Cu,extensions:["subtree"],mimeTypes:["application/octet-stream"],tests:["subtree"],parse:xw,options:{}};var Fe=null;try{Fe=new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([0,97,115,109,1,0,0,0,1,13,2,96,0,1,127,96,4,127,127,127,127,1,127,3,7,6,0,1,1,1,1,1,6,6,1,127,1,65,0,11,7,50,6,3,109,117,108,0,1,5,100,105,118,95,115,0,2,5,100,105,118,95,117,0,3,5,114,101,109,95,115,0,4,5,114,101,109,95,117,0,5,8,103,101,116,95,104,105,103,104,0,0,10,191,1,6,4,0,35,0,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,126,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,127,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,128,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,129,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,130,34,4,66,32,135,167,36,0,32,4,167,11])),{}).exports}catch{}function HA(e,A,i){this.low=e|0,this.high=A|0,this.unsigned=!!i}HA.prototype.__isLong__;Object.defineProperty(HA.prototype,"__isLong__",{value:!0});function ye(e){return(e&&e.__isLong__)===!0}function Sa(e){var A=Math.clz32(e&-e);return e?31-A:A}HA.isLong=ye;var Ia={},Ba={};function Rt(e,A){var i,a,c;return A?(e>>>=0,(c=0<=e&&e<256)&&(a=Ba[e],a)?a:(i=zA(e,0,!0),c&&(Ba[e]=i),i)):(e|=0,(c=-128<=e&&e<128)&&(a=Ia[e],a)?a:(i=zA(e,e<0?-1:0,!1),c&&(Ia[e]=i),i))}HA.fromInt=Rt;function Ue(e,A){if(isNaN(e))return A?st:Ge;if(A){if(e<0)return st;if(e>=Du)return Fu}else{if(e<=-Pa)return Ie;if(e+1>=Pa)return ku}return e<0?Ue(-e,A).neg():zA(e%or|0,e/or|0,A)}HA.fromNumber=Ue;function zA(e,A,i){return new HA(e,A,i)}HA.fromBits=zA;var Cn=Math.pow;function zi(e,A,i){if(e.length===0)throw Error("empty string");if(typeof A=="number"?(i=A,A=!1):A=!!A,e==="NaN"||e==="Infinity"||e==="+Infinity"||e==="-Infinity")return A?st:Ge;if(i=i||10,i<2||36<i)throw RangeError("radix");var a;if((a=e.indexOf("-"))>0)throw Error("interior hyphen");if(a===0)return zi(e.substring(1),A,i).neg();for(var c=Ue(Cn(i,8)),h=Ge,g=0;g<e.length;g+=8){var m=Math.min(8,e.length-g),y=parseInt(e.substring(g,g+m),i);if(m<8){var v=Ue(Cn(i,m));h=h.mul(v).add(Ue(y))}else h=h.mul(c),h=h.add(Ue(y))}return h.unsigned=A,h}HA.fromString=zi;function Qe(e,A){return typeof e=="number"?Ue(e,A):typeof e=="string"?zi(e,A):zA(e.low,e.high,typeof A=="boolean"?A:e.unsigned)}HA.fromValue=Qe;var La=65536,Nw=1<<24,or=La*La,Du=or*or,Pa=Du/2,xa=Rt(Nw),Ge=Rt(0);HA.ZERO=Ge;var st=Rt(0,!0);HA.UZERO=st;var Ar=Rt(1);HA.ONE=Ar;var Ou=Rt(1,!0);HA.UONE=Ou;var pi=Rt(-1);HA.NEG_ONE=pi;var ku=zA(-1,2147483647,!1);HA.MAX_VALUE=ku;var Fu=zA(-1,-1,!0);HA.MAX_UNSIGNED_VALUE=Fu;var Ie=zA(0,-2147483648,!1);HA.MIN_VALUE=Ie;var aA=HA.prototype;aA.toInt=function(){return this.unsigned?this.low>>>0:this.low};aA.toNumber=function(){return this.unsigned?(this.high>>>0)*or+(this.low>>>0):this.high*or+(this.low>>>0)};aA.toString=function(A){if(A=A||10,A<2||36<A)throw RangeError("radix");if(this.isZero())return"0";if(this.isNegative())if(this.eq(Ie)){var i=Ue(A),a=this.div(i),c=a.mul(i).sub(this);return a.toString(A)+c.toInt().toString(A)}else return"-"+this.neg().toString(A);for(var h=Ue(Cn(A,6),this.unsigned),g=this,m="";;){var y=g.div(h),v=g.sub(y.mul(h)).toInt()>>>0,_=v.toString(A);if(g=y,g.isZero())return _+m;for(;_.length<6;)_="0"+_;m=""+_+m}};aA.getHighBits=function(){return this.high};aA.getHighBitsUnsigned=function(){return this.high>>>0};aA.getLowBits=function(){return this.low};aA.getLowBitsUnsigned=function(){return this.low>>>0};aA.getNumBitsAbs=function(){if(this.isNegative())return this.eq(Ie)?64:this.neg().getNumBitsAbs();for(var A=this.high!=0?this.high:this.low,i=31;i>0&&(A&1<<i)==0;i--);return this.high!=0?i+33:i+1};aA.isSafeInteger=function(){var A=this.high>>21;return A?this.unsigned?!1:A===-1&&!(this.low===0&&this.high===-2097152):!0};aA.isZero=function(){return this.high===0&&this.low===0};aA.eqz=aA.isZero;aA.isNegative=function(){return!this.unsigned&&this.high<0};aA.isPositive=function(){return this.unsigned||this.high>=0};aA.isOdd=function(){return(this.low&1)===1};aA.isEven=function(){return(this.low&1)===0};aA.equals=function(A){return ye(A)||(A=Qe(A)),this.unsigned!==A.unsigned&&this.high>>>31===1&&A.high>>>31===1?!1:this.high===A.high&&this.low===A.low};aA.eq=aA.equals;aA.notEquals=function(A){return!this.eq(A)};aA.neq=aA.notEquals;aA.ne=aA.notEquals;aA.lessThan=function(A){return this.comp(A)<0};aA.lt=aA.lessThan;aA.lessThanOrEqual=function(A){return this.comp(A)<=0};aA.lte=aA.lessThanOrEqual;aA.le=aA.lessThanOrEqual;aA.greaterThan=function(A){return this.comp(A)>0};aA.gt=aA.greaterThan;aA.greaterThanOrEqual=function(A){return this.comp(A)>=0};aA.gte=aA.greaterThanOrEqual;aA.ge=aA.greaterThanOrEqual;aA.compare=function(A){if(ye(A)||(A=Qe(A)),this.eq(A))return 0;var i=this.isNegative(),a=A.isNegative();return i&&!a?-1:!i&&a?1:this.unsigned?A.high>>>0>this.high>>>0||A.high===this.high&&A.low>>>0>this.low>>>0?-1:1:this.sub(A).isNegative()?-1:1};aA.comp=aA.compare;aA.negate=function(){return!this.unsigned&&this.eq(Ie)?Ie:this.not().add(Ar)};aA.neg=aA.negate;aA.add=function(A){ye(A)||(A=Qe(A));var i=this.high>>>16,a=this.high&65535,c=this.low>>>16,h=this.low&65535,g=A.high>>>16,m=A.high&65535,y=A.low>>>16,v=A.low&65535,_=0,C=0,P=0,N=0;return N+=h+v,P+=N>>>16,N&=65535,P+=c+y,C+=P>>>16,P&=65535,C+=a+m,_+=C>>>16,C&=65535,_+=i+g,_&=65535,zA(P<<16|N,_<<16|C,this.unsigned)};aA.subtract=function(A){return ye(A)||(A=Qe(A)),this.add(A.neg())};aA.sub=aA.subtract;aA.multiply=function(A){if(this.isZero())return this;if(ye(A)||(A=Qe(A)),Fe){var i=Fe.mul(this.low,this.high,A.low,A.high);return zA(i,Fe.get_high(),this.unsigned)}if(A.isZero())return this.unsigned?st:Ge;if(this.eq(Ie))return A.isOdd()?Ie:Ge;if(A.eq(Ie))return this.isOdd()?Ie:Ge;if(this.isNegative())return A.isNegative()?this.neg().mul(A.neg()):this.neg().mul(A).neg();if(A.isNegative())return this.mul(A.neg()).neg();if(this.lt(xa)&&A.lt(xa))return Ue(this.toNumber()*A.toNumber(),this.unsigned);var a=this.high>>>16,c=this.high&65535,h=this.low>>>16,g=this.low&65535,m=A.high>>>16,y=A.high&65535,v=A.low>>>16,_=A.low&65535,C=0,P=0,N=0,Y=0;return Y+=g*_,N+=Y>>>16,Y&=65535,N+=h*_,P+=N>>>16,N&=65535,N+=g*v,P+=N>>>16,N&=65535,P+=c*_,C+=P>>>16,P&=65535,P+=h*v,C+=P>>>16,P&=65535,P+=g*y,C+=P>>>16,P&=65535,C+=a*_+c*v+h*y+g*m,C&=65535,zA(N<<16|Y,C<<16|P,this.unsigned)};aA.mul=aA.multiply;aA.divide=function(A){if(ye(A)||(A=Qe(A)),A.isZero())throw Error("division by zero");if(Fe){if(!this.unsigned&&this.high===-2147483648&&A.low===-1&&A.high===-1)return this;var i=(this.unsigned?Fe.div_u:Fe.div_s)(this.low,this.high,A.low,A.high);return zA(i,Fe.get_high(),this.unsigned)}if(this.isZero())return this.unsigned?st:Ge;var a,c,h;if(this.unsigned){if(A.unsigned||(A=A.toUnsigned()),A.gt(this))return st;if(A.gt(this.shru(1)))return Ou;h=st}else{if(this.eq(Ie)){if(A.eq(Ar)||A.eq(pi))return Ie;if(A.eq(Ie))return Ar;var g=this.shr(1);return a=g.div(A).shl(1),a.eq(Ge)?A.isNegative()?Ar:pi:(c=this.sub(A.mul(a)),h=a.add(c.div(A)),h)}else if(A.eq(Ie))return this.unsigned?st:Ge;if(this.isNegative())return A.isNegative()?this.neg().div(A.neg()):this.neg().div(A).neg();if(A.isNegative())return this.div(A.neg()).neg();h=Ge}for(c=this;c.gte(A);){a=Math.max(1,Math.floor(c.toNumber()/A.toNumber()));for(var m=Math.ceil(Math.log(a)/Math.LN2),y=m<=48?1:Cn(2,m-48),v=Ue(a),_=v.mul(A);_.isNegative()||_.gt(c);)a-=y,v=Ue(a,this.unsigned),_=v.mul(A);v.isZero()&&(v=Ar),h=h.add(v),c=c.sub(_)}return h};aA.div=aA.divide;aA.modulo=function(A){if(ye(A)||(A=Qe(A)),Fe){var i=(this.unsigned?Fe.rem_u:Fe.rem_s)(this.low,this.high,A.low,A.high);return zA(i,Fe.get_high(),this.unsigned)}return this.sub(this.div(A).mul(A))};aA.mod=aA.modulo;aA.rem=aA.modulo;aA.not=function(){return zA(~this.low,~this.high,this.unsigned)};aA.countLeadingZeros=function(){return this.high?Math.clz32(this.high):Math.clz32(this.low)+32};aA.clz=aA.countLeadingZeros;aA.countTrailingZeros=function(){return this.low?Sa(this.low):Sa(this.high)+32};aA.ctz=aA.countTrailingZeros;aA.and=function(A){return ye(A)||(A=Qe(A)),zA(this.low&A.low,this.high&A.high,this.unsigned)};aA.or=function(A){return ye(A)||(A=Qe(A)),zA(this.low|A.low,this.high|A.high,this.unsigned)};aA.xor=function(A){return ye(A)||(A=Qe(A)),zA(this.low^A.low,this.high^A.high,this.unsigned)};aA.shiftLeft=function(A){return ye(A)&&(A=A.toInt()),(A&=63)===0?this:A<32?zA(this.low<<A,this.high<<A|this.low>>>32-A,this.unsigned):zA(0,this.low<<A-32,this.unsigned)};aA.shl=aA.shiftLeft;aA.shiftRight=function(A){return ye(A)&&(A=A.toInt()),(A&=63)===0?this:A<32?zA(this.low>>>A|this.high<<32-A,this.high>>A,this.unsigned):zA(this.high>>A-32,this.high>=0?0:-1,this.unsigned)};aA.shr=aA.shiftRight;aA.shiftRightUnsigned=function(A){return ye(A)&&(A=A.toInt()),(A&=63)===0?this:A<32?zA(this.low>>>A|this.high<<32-A,this.high>>>A,this.unsigned):A===32?zA(this.high,0,this.unsigned):zA(this.high>>>A-32,0,this.unsigned)};aA.shru=aA.shiftRightUnsigned;aA.shr_u=aA.shiftRightUnsigned;aA.rotateLeft=function(A){var i;return ye(A)&&(A=A.toInt()),(A&=63)===0?this:A===32?zA(this.high,this.low,this.unsigned):A<32?(i=32-A,zA(this.low<<A|this.high>>>i,this.high<<A|this.low>>>i,this.unsigned)):(A-=32,i=32-A,zA(this.high<<A|this.low>>>i,this.low<<A|this.high>>>i,this.unsigned))};aA.rotl=aA.rotateLeft;aA.rotateRight=function(A){var i;return ye(A)&&(A=A.toInt()),(A&=63)===0?this:A===32?zA(this.high,this.low,this.unsigned):A<32?(i=32-A,zA(this.high<<i|this.low>>>A,this.low<<i|this.high>>>A,this.unsigned)):(A-=32,i=32-A,zA(this.low<<i|this.high>>>A,this.high<<i|this.low>>>A,this.unsigned))};aA.rotr=aA.rotateRight;aA.toSigned=function(){return this.unsigned?zA(this.low,this.high,!1):this};aA.toUnsigned=function(){return this.unsigned?this:zA(this.low,this.high,!0)};aA.toBytes=function(A){return A?this.toBytesLE():this.toBytesBE()};aA.toBytesLE=function(){var A=this.high,i=this.low;return[i&255,i>>>8&255,i>>>16&255,i>>>24,A&255,A>>>8&255,A>>>16&255,A>>>24]};aA.toBytesBE=function(){var A=this.high,i=this.low;return[A>>>24,A>>>16&255,A>>>8&255,A&255,i>>>24,i>>>16&255,i>>>8&255,i&255]};HA.fromBytes=function(A,i,a){return a?HA.fromBytesLE(A,i):HA.fromBytesBE(A,i)};HA.fromBytesLE=function(A,i){return new HA(A[0]|A[1]<<8|A[2]<<16|A[3]<<24,A[4]|A[5]<<8|A[6]<<16|A[7]<<24,i)};HA.fromBytesBE=function(A,i){return new HA(A[4]<<24|A[5]<<16|A[6]<<8|A[7],A[0]<<24|A[1]<<16|A[2]<<8|A[3],i)};typeof BigInt=="function"&&(HA.fromBigInt=function(A,i){var a=Number(BigInt.asIntN(32,A)),c=Number(BigInt.asIntN(32,A>>BigInt(32)));return zA(a,c,i)},HA.fromValue=function(A,i){return typeof A=="bigint"?HA.fromBigInt(A,i):Qe(A,i)},aA.toBigInt=function(){var A=BigInt(this.low>>>0),i=BigInt(this.unsigned?this.high>>>0:this.high);return i<<BigInt(32)|A});const Rw=16;function Uu(e){e==="X"&&(e="");const A=e.padEnd(Rw,"0");return HA.fromString(A,!0,16)}function Dw(e){if(e.isZero())return"X";let A=e.countTrailingZeros();const i=A%4;A=(A-i)/4;const a=A;A*=4;const h=e.shiftRightUnsigned(A).toString(16).replace(/0+$/,"");return Array(17-a-h.length).join("0")+h}function Ow(e,A){const i=kw(e).shiftRightUnsigned(2);return e.add(HA.fromNumber(2*A+1-4).multiply(i))}function kw(e){return e.and(e.not().add(1))}const Fw=3,Uw=30,Qw=2*Uw+1,Na=180/Math.PI;function Vw(e){if(e.length===0)throw new Error(`Invalid Hilbert quad key ${e}`);const A=e.split("/"),i=parseInt(A[0],10),a=A[1],c=a.length;let h=0;const g=[0,0];for(let m=c-1;m>=0;m--){h=c-m;const y=a[m];let v=0,_=0;y==="1"?_=1:y==="2"?(v=1,_=1):y==="3"&&(v=1);const C=Math.pow(2,h-1);Gw(C,g,v,_),g[0]+=C*v,g[1]+=C*_}if(i%2===1){const m=g[0];g[0]=g[1],g[1]=m}return{face:i,ij:g,level:h}}function zw(e){if(e.isZero())return"";let A=e.toString(2);for(;A.length<Fw+Qw;)A="0"+A;const i=A.lastIndexOf("1"),a=A.substring(0,3),c=A.substring(3,i),h=c.length/2,g=HA.fromString(a,!0,2).toString(10);let m="";if(h!==0)for(m=HA.fromString(c,!0,2).toString(4);m.length<h;)m="0"+m;return`${g}/${m}`}function Qu(e,A,i){const a=1<<A;return[(e[0]+i[0])/a,(e[1]+i[1])/a]}function Ra(e){return e>=.5?1/3*(4*e*e-1):1/3*(1-4*(1-e)*(1-e))}function Vu(e){return[Ra(e[0]),Ra(e[1])]}function zu(e,[A,i]){switch(e){case 0:return[1,A,i];case 1:return[-A,1,i];case 2:return[-A,-i,1];case 3:return[-1,-i,-A];case 4:return[i,-1,-A];case 5:return[i,A,-1];default:throw new Error("Invalid face")}}function Gu([e,A,i]){const a=Math.atan2(i,Math.sqrt(e*e+A*A));return[Math.atan2(A,e)*Na,a*Na]}function Gw(e,A,i,a){if(a===0){i===1&&(A[0]=e-1-A[0],A[1]=e-1-A[1]);const c=A[0];A[0]=A[1],A[1]=c}}function qw(e){const A=Qu(e.ij,e.level,[.5,.5]),i=Vu(A),a=zu(e.face,i);return Gu(a)}const Hw=100;function Da(e){const{face:A,ij:i,level:a}=e,c=[[0,0],[0,1],[1,1],[1,0],[0,0]],h=Math.max(1,Math.ceil(Hw*Math.pow(2,-a))),g=new Float64Array(4*h*2+2);let m=0,y=0;for(let v=0;v<4;v++){const _=c[v].slice(0),C=c[v+1],P=(C[0]-_[0])/h,N=(C[1]-_[1])/h;for(let Y=0;Y<h;Y++){_[0]+=P,_[1]+=N;const Z=Qu(i,a,_),tA=Vu(Z),R=zu(A,tA),z=Gu(R);Math.abs(z[1])>89.999&&(z[0]=y);const rA=z[0]-y;z[0]+=rA>180?-360:rA<-180?360:0,g[m++]=z[0],g[m++]=z[1],y=z[0]}}return g[m++]=g[0],g[m++]=g[1],g}function Gi(e){const A=jw(e);return Vw(A)}function jw(e){if(e.indexOf("/")>0)return e;const A=Uu(e);return zw(A)}function Ww(e){const A=Gi(e);return qw(A)}function Yw(e){let A;if(e.face===2||e.face===5){let i=null,a=0;for(let c=0;c<4;c++){const h=`${e.face}/${c}`,g=Gi(h),m=Da(g);(typeof i>"u"||i===null)&&(i=new Float64Array(4*m.length)),i.set(m,a),a+=m.length}A=Oa(i)}else{const i=Da(e);A=Oa(i)}return A}function Oa(e){if(e.length%2!==0)throw new Error("Invalid corners");const A=[],i=[];for(let a=0;a<e.length;a+=2)A.push(e[a]),i.push(e[a+1]);return A.sort((a,c)=>a-c),i.sort((a,c)=>a-c),{west:A[0],east:A[A.length-1],north:i[i.length-1],south:i[0]}}function Zw(e,A){const i=A?.minimumHeight||0,a=A?.maximumHeight||0,c=Gi(e),h=Yw(c),g=h.west,m=h.south,y=h.east,v=h.north,_=[];return _.push(new H(g,v,i)),_.push(new H(y,v,i)),_.push(new H(y,m,i)),_.push(new H(g,m,i)),_.push(new H(g,v,a)),_.push(new H(y,v,a)),_.push(new H(y,m,a)),_.push(new H(g,m,a)),_}function qu(e){const A=e.token,i={minimumHeight:e.minimumHeight,maximumHeight:e.maximumHeight},a=Zw(A,i),c=Ww(A),h=c[0],g=c[1],m=$A.WGS84.cartographicToCartesian([h,g,i.maximumHeight]),y=new H(m[0],m[1],m[2]);a.push(y);const v=du(a);return[...v.center,...v.halfAxes]}const Xw=4,Jw=8,Kw={QUADTREE:Xw,OCTREE:Jw};function $w(e,A,i){if(e?.box){const a=Uu(e.s2VolumeInfo.token),c=Ow(a,A),h=Dw(c),g={...e.s2VolumeInfo};switch(g.token=h,i){case"OCTREE":const v=e.s2VolumeInfo,_=v.maximumHeight-v.minimumHeight,C=_/2,P=v.minimumHeight+_/2;v.minimumHeight=P-C,v.maximumHeight=P+C;break}return{box:qu(g),s2VolumeInfo:g}}}async function Hu(e){const{subtree:A,subtreeData:i={level:0,x:0,y:0,z:0},parentData:a={mortonIndex:0,localLevel:-1,localX:0,localY:0,localZ:0},childIndex:c=0,implicitOptions:h,loaderOptions:g,s2VolumeBox:m}=e,{subdivisionScheme:y,subtreeLevels:v,maximumLevel:_,contentUrlTemplate:C,subtreesUriTemplate:P,basePath:N}=h,Y={children:[],lodMetricValue:0,contentUrl:""};if(!_)return el.once(`Missing 'maximumLevel' or 'availableLevels' property. The subtree ${C} won't be loaded...`),Y;const Z=a.localLevel+1,tA=i.level+Z;if(tA>_)return Y;const R=Kw[y],z=Math.log2(R),rA=c&1,mA=c>>1&1,G=c>>2&1,j=Mt(a.localX,rA,1),$=Mt(a.localY,mA,1),lA=Mt(a.localZ,G,1),U=Mt(i.x,j,Z),k=Mt(i.y,$,Z),x=Mt(i.z,lA,Z),X=Mt(a.mortonIndex,c,z),J=Z===v&&W0(A.childSubtreeAvailability,X);let yA,dA,OA,XA;if(J){const QA=`${N}/${P}`,jA=mi(QA,tA,U,k,x);yA=await Cr(jA,Ru,g),XA=0,dA={level:tA,x:U,y:k,z:x},OA={mortonIndex:0,localLevel:0,localX:0,localY:0,localZ:0}}else yA=A,XA=(R**Z-1)/(R-1)+X,dA=i,OA={mortonIndex:X,localLevel:Z,localX:j,localY:$,localZ:lA};if(!W0(yA.tileAvailability,XA))return Y;W0(yA.contentAvailability,XA)&&(Y.contentUrl=mi(C,tA,U,k,x));for(let QA=0;QA<R;QA++){const jA=$w(m,QA,y),te=await Hu({subtree:yA,subtreeData:dA,parentData:OA,childIndex:QA,implicitOptions:h,loaderOptions:g,s2VolumeBox:jA});(te.contentUrl||te.children.length)&&Y.children.push(te)}return Y.contentUrl||Y.children.length?Ay(Y,{level:tA,x:U,y:k,z:x},h,m):Y}function W0(e,A){let i;return Array.isArray(e)?(i=e[0],e.length>1&&el.once('Not supported extension "3DTILES_multiple_contents" has been detected')):i=e,"constant"in i?!!i.constant:i.explicitBitstream?ry(A,i.explicitBitstream):!1}function Ay(e,A,i,a){const{basePath:c,refine:h,getRefine:g,lodMetricType:m,getTileType:y,rootLodMetricValue:v,rootBoundingVolume:_}=i,C=e.contentUrl&&e.contentUrl.replace(`${c}/`,""),P=v/2**A.level,N=a?.box?{box:a.box}:_,Y=ey(N,A,i.subdivisionScheme);return{children:e.children,contentUrl:e.contentUrl,content:{uri:C},id:e.contentUrl,refine:g(h),type:y(e),lodMetricType:m,lodMetricValue:P,geometricError:P,transform:e.transform,boundingVolume:Y}}function ey(e,A,i){if(e.region){const{level:a,x:c,y:h,z:g}=A,[m,y,v,_,C,P]=e.region,N=2**a,Y=(v-m)/N,[Z,tA]=[m+Y*c,m+Y*(c+1)],R=(_-y)/N,[z,rA]=[y+R*h,y+R*(h+1)];let mA,G;if(i==="OCTREE"){const j=(P-C)/N;[mA,G]=[C+j*g,C+j*(g+1)]}else[mA,G]=[C,P];return{region:[Z,z,tA,rA,mA,G]}}if(e.box)return e;throw new Error(`Unsupported bounding volume type ${JSON.stringify(e)}`)}function Mt(e,A,i){return(e<<i)+A}function mi(e,A,i,a,c){const h=ty({level:A,x:i,y:a,z:c});return e.replace(/{level}|{x}|{y}|{z}/gi,g=>h[g])}function ty(e){const A={};for(const i in e)A[`{${i}}`]=e[i];return A}function ry(e,A){const i=Math.floor(e/8),a=e%8;return(A[i]>>a&1)===1}function qi(e,A=""){if(!A)return it.EMPTY;const a=A.split("?")[0].split(".").pop();switch(a){case"pnts":return it.POINTCLOUD;case"i3dm":case"b3dm":case"glb":case"gltf":return it.SCENEGRAPH;default:return a||it.EMPTY}}function Hi(e){switch(e){case"REPLACE":case"replace":return He.REPLACE;case"ADD":case"add":return He.ADD;default:return e}}function wi(e,A){if(/^[a-z][0-9a-z+.-]*:/i.test(A)){const a=new URL(e,`${A}/`);return decodeURI(a.toString())}else if(e.startsWith("/"))return e;return e2(A,e)}function ka(e,A){if(!e)return null;let i;if(e.content){const c=e.content.uri||e.content?.url;typeof c<"u"&&(i=wi(c,A))}return{...e,id:i,contentUrl:i,lodMetricType:sr.GEOMETRIC_ERROR,lodMetricValue:e.geometricError,transformMatrix:e.transform,type:qi(e,i),refine:Hi(e.refine)}}async function ny(e,A,i){let a=null;const c=Ua(e.root);c&&e.root?a=await Fa(e.root,e,A,c,i):a=ka(e.root,A);const h=[];for(h.push(a);h.length>0;){const g=h.pop()||{},m=g.children||[],y=[];for(const v of m){const _=Ua(v);let C;_?C=await Fa(v,e,A,_,i):C=ka(v,A),C&&(y.push(C),h.push(C))}g.children=y}return a}async function Fa(e,A,i,a,c){const{subdivisionScheme:h,maximumLevel:g,availableLevels:m,subtreeLevels:y,subtrees:{uri:v}}=a,_=mi(v,0,0,0,0),C=wi(_,i),P=await Cr(C,Ru,c),N=e.content?.uri,Y=N?wi(N,i):"",Z=A?.root?.refine,tA=e.geometricError,R=e.boundingVolume.extensions?.["3DTILES_bounding_volume_S2"];if(R){const G={box:qu(R),s2VolumeInfo:R};e.boundingVolume=G}const z=e.boundingVolume,rA={contentUrlTemplate:Y,subtreesUriTemplate:v,subdivisionScheme:h,subtreeLevels:y,maximumLevel:Number.isFinite(m)?m-1:g,refine:Z,basePath:i,lodMetricType:sr.GEOMETRIC_ERROR,rootLodMetricValue:tA,rootBoundingVolume:z,getTileType:qi,getRefine:Hi};return await iy(e,i,P,rA,c)}async function iy(e,A,i,a,c){if(!e)return null;const{children:h,contentUrl:g}=await Hu({subtree:i,implicitOptions:a,loaderOptions:c});let m,y=null;return g&&(m=g,y={uri:g.replace(`${A}/`,"")}),{...e,id:m,contentUrl:m,lodMetricType:sr.GEOMETRIC_ERROR,lodMetricValue:e.geometricError,transformMatrix:e.transform,type:qi(e,m),refine:Hi(e.refine),content:y||e.content,children:h}}function Ua(e){return e?.extensions?.["3DTILES_implicit_tiling"]||e?.implicitTiling}const ju={dataType:null,batchType:null,id:"3d-tiles",name:"3D Tiles",module:"3d-tiles",version:Cu,extensions:["cmpt","pnts","b3dm","i3dm"],mimeTypes:["application/octet-stream"],tests:["cmpt","pnts","b3dm","i3dm"],parse:sy,options:{"3d-tiles":{loadGLTF:!0,decodeQuantizedPositions:!1,isTileset:"auto",assetGltfUpAxis:null}}};async function sy(e,A={},i){const a=A["3d-tiles"]||{};let c;return a.isTileset==="auto"?c=i?.url&&i.url.indexOf(".json")!==-1:c=a.isTileset,c?oy(e,A,i):ay(e,A,i)}async function oy(e,A,i){const a=JSON.parse(new TextDecoder().decode(e)),c=i?.url||"",h=ly(c),g=await ny(a,h,A||{});return{...a,shape:"tileset3d",loader:ju,url:c,queryString:i?.queryString||"",basePath:h,root:g||a.root,type:Se.TILES3D,lodMetricType:sr.GEOMETRIC_ERROR,lodMetricValue:a.root?.geometricError||0}}async function ay(e,A,i){const a={content:{shape:"tile3d",featureIds:null}};return await Nu(e,0,A,i,a.content),a.content}function ly(e){return Ka(e)}const Qa=[0],uy={getPointColor:{type:"accessor",value:[0,0,0,255]},pointSize:1,data:"",loader:ju,onTilesetLoad:{type:"function",value:e=>{}},onTileLoad:{type:"function",value:e=>{}},onTileUnload:{type:"function",value:e=>{}},onTileError:{type:"function",value:(e,A,i)=>{}},_getMeshColor:{type:"function",value:e=>[255,255,255]}};class Wu extends ar{initializeState(){"onTileLoadFail"in this.props&&Ti.removed("onTileLoadFail","onTileError")(),this.state={layerMap:{},tileset3d:null,activeViewports:{},lastUpdatedViewports:null}}get isLoaded(){return!!(this.state?.tileset3d?.isLoaded()&&super.isLoaded)}shouldUpdateState({changeFlags:A}){return A.somethingChanged}updateState({props:A,oldProps:i,changeFlags:a}){if(A.data&&A.data!==i.data&&this._loadTileset(A.data),a.viewportChanged){const{activeViewports:c}=this.state;Object.keys(c).length&&(this._updateTileset(c),this.state.lastUpdatedViewports=c,this.state.activeViewports={})}if(a.propsChanged){const{layerMap:c}=this.state;for(const h in c)c[h].needsUpdate=!0}}activateViewport(A){const{activeViewports:i,lastUpdatedViewports:a}=this.state;this.internalState.viewport=A,i[A.id]=A;const c=a?.[A.id];(!c||!A.equals(c))&&(this.setChangeFlags({viewportChanged:!0}),this.setNeedsUpdate())}getPickingInfo({info:A,sourceLayer:i}){const a=i&&i.props.tile;return A.picked&&(A.object=a),A.sourceTile=a,A}filterSubLayer({layer:A,viewport:i}){const{tile:a}=A.props,{id:c}=i;return a.selected&&a.viewportIds.includes(c)}_updateAutoHighlight(A){const i=A.sourceTile,a=this.state.layerMap[i?.id];a&&a.layer&&a.layer.updateAutoHighlight(A)}async _loadTileset(A){const{loadOptions:i={}}=this.props,a=this.props.loader||this.props.loaders,c=Array.isArray(a)?a[0]:a,h={loadOptions:{...i}};let g=A;if(c.preload){const v=await c.preload(A,i);v.url&&(g=v.url),v.headers&&(h.loadOptions.fetch={...h.loadOptions.fetch,headers:v.headers}),Object.assign(h,v)}const m=await Cr(g,c,h.loadOptions),y=new q4(m,{onTileLoad:this._onTileLoad.bind(this),onTileUnload:this._onTileUnload.bind(this),onTileError:this.props.onTileError,...h});this.setState({tileset3d:y,layerMap:{}}),this._updateTileset(this.state.activeViewports),this.props.onTilesetLoad(y)}_onTileLoad(A){const{lastUpdatedViewports:i}=this.state;this.props.onTileLoad(A),this._updateTileset(i),this.setNeedsUpdate()}_onTileUnload(A){delete this.state.layerMap[A.id],this.props.onTileUnload(A)}_updateTileset(A){if(!A)return;const{tileset3d:i}=this.state,{timeline:a}=this.context,c=Object.keys(A).length;!a||!c||!i||i.selectTiles(Object.values(A)).then(h=>{this.state.frameNumber!==h&&this.setState({frameNumber:h})})}_getSubLayer(A,i){if(!A.content)return null;switch(A.type){case it.POINTCLOUD:return this._makePointCloudLayer(A,i);case it.SCENEGRAPH:return this._make3DModelLayer(A);case it.MESH:return this._makeSimpleMeshLayer(A,i);default:throw new Error(`Tile3DLayer: Failed to render layer of type ${A.content.type}`)}}_makePointCloudLayer(A,i){const{attributes:a,pointCount:c,constantRGBA:h,cartographicOrigin:g,modelMatrix:m}=A.content,{positions:y,normals:v,colors:_}=a;if(!y)return null;const C=i&&i.props.data||{header:{vertexCount:c},attributes:{POSITION:y,NORMAL:v,COLOR_0:_}},{pointSize:P,getPointColor:N}=this.props,Y=this.getSubLayerClass("pointcloud",Lh);return new Y({pointSize:P},this.getSubLayerProps({id:"pointcloud"}),{id:`${this.id}-pointcloud-${A.id}`,tile:A,data:C,coordinateSystem:Ct.METER_OFFSETS,coordinateOrigin:g,modelMatrix:m,getColor:h||N,_offset:0})}_make3DModelLayer(A){const{gltf:i,instances:a,cartographicOrigin:c,modelMatrix:h}=A.content,g=this.getSubLayerClass("scenegraph",Xh);return new g({_lighting:"pbr"},this.getSubLayerProps({id:"scenegraph"}),{id:`${this.id}-scenegraph-${A.id}`,tile:A,data:a||Qa,scenegraph:i,coordinateSystem:Ct.METER_OFFSETS,coordinateOrigin:c,modelMatrix:h,getTransformMatrix:m=>m.modelMatrix,getPosition:[0,0,0],_offset:0})}_makeSimpleMeshLayer(A,i){const a=A.content,{attributes:c,indices:h,modelMatrix:g,cartographicOrigin:m,coordinateSystem:y=Ct.METER_OFFSETS,material:v,featureIds:_}=a,{_getMeshColor:C}=this.props,P=i&&i.props.mesh||new n2({topology:"triangle-list",attributes:cy(c),indices:h}),N=this.getSubLayerClass("mesh",Fi);return new N(this.getSubLayerProps({id:"mesh"}),{id:`${this.id}-mesh-${A.id}`,tile:A,mesh:P,data:Qa,getColor:C(A),pbrMaterial:v,modelMatrix:g,coordinateOrigin:m,coordinateSystem:y,featureIds:_,_offset:0})}renderLayers(){const{tileset3d:A,layerMap:i}=this.state;return A?A.tiles.map(a=>{const c=i[a.id]=i[a.id]||{tile:a};let{layer:h}=c;return a.selected&&(h?c.needsUpdate&&(h=this._getSubLayer(a,h),c.needsUpdate=!1):h=this._getSubLayer(a)),c.layer=h,h}).filter(Boolean):null}}Wu.defaultProps=uy;Wu.layerName="Tile3DLayer";function cy(e){const A={};return A.positions={...e.positions,value:new Float32Array(e.positions.value)},e.normals&&(A.normals=e.normals),e.texCoords&&(A.texCoords=e.texCoords),e.colors&&(A.colors=e.colors),e.uvRegions&&(A.uvRegions=e.uvRegions),A}const fy="4.3.3",Yu={dataType:null,batchType:null,name:"Terrain",id:"terrain",module:"terrain",version:fy,worker:!0,extensions:["png","pngraw","jpg","jpeg","gif","webp","bmp"],mimeTypes:["image/png","image/jpeg","image/gif","image/webp","image/bmp"],options:{terrain:{tesselator:"auto",bounds:void 0,meshMaxError:10,elevationDecoder:{rScaler:1,gScaler:0,bScaler:0,offset:0},skirtHeight:void 0}}};({...Yu});const Va=[1],hy={...Lr.defaultProps,elevationData:En,texture:{...En,optional:!0},meshMaxError:{type:"number",value:4},bounds:{type:"array",value:null,optional:!0,compare:!0},color:{type:"color",value:[255,255,255]},elevationDecoder:{type:"object",value:{rScaler:1,gScaler:0,bScaler:0,offset:0}},workerUrl:"",wireframe:!1,material:!0,loaders:[Yu]};function za(e){return Array.isArray(e)?e.join(";"):e||""}class Zu extends ar{updateState({props:A,oldProps:i}){const a=A.elevationData!==i.elevationData;if(a){const{elevationData:h}=A,g=h&&(Array.isArray(h)||dy(h));this.setState({isTiled:g})}const c=a||A.meshMaxError!==i.meshMaxError||A.elevationDecoder!==i.elevationDecoder||A.bounds!==i.bounds;if(!this.state.isTiled&&c){const h=this.loadTerrain(A);this.setState({terrain:h})}A.workerUrl&&Ti.removed("workerUrl","loadOptions.terrain.workerUrl")()}loadTerrain({elevationData:A,bounds:i,elevationDecoder:a,meshMaxError:c,signal:h}){if(!A)return null;let g=this.getLoadOptions();g={...g,terrain:{skirtHeight:this.state.isTiled?c*2:0,...g?.terrain,bounds:i,meshMaxError:c,elevationDecoder:a}};const{fetch:m}=this.props;return m(A,{propName:"elevationData",layer:this,loadOptions:g,signal:h})}getTiledTerrainData(A){const{elevationData:i,fetch:a,texture:c,elevationDecoder:h,meshMaxError:g}=this.props,{viewport:m}=this.context,y=Mn(i,A),v=c&&Mn(c,A),{signal:_}=A;let C=[0,0],P=[0,0];if(m.isGeospatial){const tA=A.bbox;C=m.projectFlat([tA.west,tA.south]),P=m.projectFlat([tA.east,tA.north])}else{const tA=A.bbox;C=[tA.left,tA.bottom],P=[tA.right,tA.top]}const N=[C[0],C[1],P[0],P[1]],Y=this.loadTerrain({elevationData:y,bounds:N,elevationDecoder:h,meshMaxError:g,signal:_}),Z=v?a(v,{propName:"texture",layer:this,loaders:[],signal:_}).catch(tA=>null):Promise.resolve(null);return Promise.all([Y,Z])}renderSubLayers(A){const i=this.getSubLayerClass("mesh",J0),{color:a,wireframe:c,material:h}=this.props,{data:g}=A;if(!g)return null;const[m,y]=g;return new i(A,{data:Va,mesh:m,texture:y,_instanced:!1,coordinateSystem:Ct.CARTESIAN,getPosition:v=>[0,0,0],getColor:a,wireframe:c,material:h})}onViewportLoad(A){if(!A)return;const{zRange:i}=this.state,a=A.map(g=>g.content).filter(Boolean).map(g=>g[0].header.boundingBox.map(y=>y[2]));if(a.length===0)return;const c=Math.min(...a.map(g=>g[0])),h=Math.max(...a.map(g=>g[1]));(!i||c<i[0]||h>i[1])&&this.setState({zRange:[c,h]})}renderLayers(){const{color:A,material:i,elevationData:a,texture:c,wireframe:h,meshMaxError:g,elevationDecoder:m,tileSize:y,maxZoom:v,minZoom:_,extent:C,maxRequests:P,onTileLoad:N,onTileUnload:Y,onTileError:Z,maxCacheSize:tA,maxCacheByteSize:R,refinementStrategy:z}=this.props;if(this.state.isTiled)return new Lr(this.getSubLayerProps({id:"tiles"}),{getTileData:this.getTiledTerrainData.bind(this),renderSubLayers:this.renderSubLayers.bind(this),updateTriggers:{getTileData:{elevationData:za(a),texture:za(c),meshMaxError:g,elevationDecoder:m}},onViewportLoad:this.onViewportLoad.bind(this),zRange:this.state.zRange||null,tileSize:y,maxZoom:v,minZoom:_,extent:C,maxRequests:P,onTileLoad:N,onTileUnload:Y,onTileError:Z,maxCacheSize:tA,maxCacheByteSize:R,refinementStrategy:z});if(!a)return null;const rA=this.getSubLayerClass("mesh",J0);return new rA(this.getSubLayerProps({id:"mesh"}),{data:Va,mesh:this.state.terrain,texture:c,_instanced:!1,getPosition:mA=>[0,0,0],getColor:A,material:i,wireframe:h})}}Zu.defaultProps=hy;Zu.layerName="TerrainLayer";const dy=e=>e.includes("{x}")&&(e.includes("{y}")||e.includes("{-y}"));function Ga(e,A){const i=A?.globalFeatureId;return i!==void 0?gy(e,i):py(e,A?.type)}function gy(e,A){const i=Xu(e);for(const a of i){let c=0,h=a.featureIds.value[0];for(let g=0;g<a.featureIds.value.length;g++){const m=a.featureIds.value[g];if(m!==h){if(A===a.globalFeatureIds.value[c])return Sn(a,c,g);c=g,h=m}}if(A===a.globalFeatureIds.value[c])return Sn(a,c,a.featureIds.value.length)}throw new Error(`featureId:${A} not found`)}function py(e,A){const i=Xu(e);return wy(i)}function my(e,A,i){switch(e.type){case"Point":return _y(e,A,i);case"LineString":return vy(e,A,i);case"Polygon":return Ju(e,A,i);default:const a=e;throw new Error(`Unsupported geometry type: ${a?.type}`)}}function Xu(e,A){const i=[];return e.points&&(e.points.type="Point",i.push(e.points)),e.lines&&(e.lines.type="LineString",i.push(e.lines)),e.polygons&&(e.polygons.type="Polygon",i.push(e.polygons)),i}function wy(e){const A=[];for(const i of e){if(i.featureIds.value.length===0)continue;let a=0,c=i.featureIds.value[0];for(let h=0;h<i.featureIds.value.length;h++){const g=i.featureIds.value[h];g!==c&&(A.push(Sn(i,a,h)),a=h,c=g)}A.push(Sn(i,a,i.featureIds.value.length))}return A}function Sn(e,A,i){const a=my(e,A,i),c=Ty(e,A),h=yy(e,A);return{type:"Feature",geometry:a,properties:c,...h}}function yy(e,A=0,i){return e.fields&&e.fields[e.featureIds.value[A]]}function Ty(e,A=0,i){const a=Object.assign({},e.properties[e.featureIds.value[A]]);for(const c in e.numericProps)a[c]=e.numericProps[c].value[A];return a}function Ju(e,A=-1/0,i=1/0){const{positions:a}=e,c=e.polygonIndices.value.filter(y=>y>=A&&y<=i),h=e.primitivePolygonIndices.value.filter(y=>y>=A&&y<=i);if(!(c.length>2)){const y=[];for(let v=0;v<h.length-1;v++){const _=h[v],C=h[v+1],P=In(a,_,C);y.push(P)}return{type:"Polygon",coordinates:y}}const m=[];for(let y=0;y<c.length-1;y++){const v=c[y],_=c[y+1],C=Ju(e,v,_).coordinates;m.push(C)}return{type:"MultiPolygon",coordinates:m}}function vy(e,A=-1/0,i=1/0){const{positions:a}=e,c=e.pathIndices.value.filter(m=>m>=A&&m<=i);if(!(c.length>2))return{type:"LineString",coordinates:In(a,c[0],c[1])};const g=[];for(let m=0;m<c.length-1;m++){const y=In(a,c[m],c[m+1]);g.push(y)}return{type:"MultiLineString",coordinates:g}}function _y(e,A,i){const{positions:a}=e,c=In(a,A,i);return c.length>1?{type:"MultiPoint",coordinates:c}:{type:"Point",coordinates:c[0]}}function In(e,A,i){A=A||0,i=i||e.value.length/e.size;const a=[];for(let c=A;c<i;c++){const h=Array();for(let g=c*e.size;g<(c+1)*e.size;g++)h.push(Number(e.value[g]));a.push(h)}return a}const by="4.3.3",Ku={dataType:null,batchType:null,name:"Mapbox Vector Tile",id:"mvt",module:"mvt",version:by,extensions:["mvt","pbf"],mimeTypes:["application/vnd.mapbox-vector-tile","application/x-protobuf"],worker:!0,category:"geometry",options:{mvt:{shape:"geojson",coordinates:"local",layerProperty:"layerName",layers:void 0,tileIndex:void 0}}};({...Ku});const Ey={Point:$u,MultiPoint:My,LineString:Ac,MultiLineString:Cy,Polygon:ec,MultiPolygon:Sy};function $u([e,A],[i,a],c){const h=mn(i[0],a[0],e),g=mn(i[1],a[1],A);return c.unprojectFlat([h,g])}function ji(e,A,i){return e.map(a=>$u(a,A,i))}function My(e,A,i){return ji(e,A,i)}function Ac(e,A,i){return ji(e,A,i)}function Cy(e,A,i){return e.map(a=>Ac(a,A,i))}function ec(e,A,i){return e.map(a=>ji(a,A,i))}function Sy(e,A,i){return e.map(a=>ec(a,A,i))}function Iy(e,A,i){const a=i.projectFlat([A.west,A.north]),c=i.projectFlat([A.east,A.south]),h=[a,c];return{...e,coordinates:Ey[e.type](e.coordinates,h,i)}}const By=["points","lines","polygons"];function Ly(e,A,i,a){for(const c of By){const h=e[c]&&Py(e[c],A,i,a);if(h>=0)return h}return-1}function Py(e,A,i,a){const c=e.featureIds.value;if(!c.length)return-1;let h=0,g=c[c.length-1]+1;if(a){const y=xy(e,a);if(y)h=y[0],g=y[1]+1;else return-1}let m=-1;if(A in e.numericProps){const y=e.numericProps[A].value.findIndex((v,_)=>v===i&&c[_]>=h&&c[_]<g);return y>=0?e.globalFeatureIds.value[y]:-1}else A?m=qa(e.properties,y=>y[A]===i,h,g):e.fields&&(m=qa(e.fields,y=>y.id===i,h,g));return m>=0?Ny(e,m):-1}function xy(e,A){if(!e.__layers){const i={},{properties:a}=e;for(let c=0;c<a.length;c++){const{layerName:h}=a[c];h&&(i[h]?i[h][1]=c:i[h]=[c,c])}e.__layers=i}return e.__layers[A]}function Ny(e,A){if(!e.__ids){const i=[],a=e.featureIds.value,c=e.globalFeatureIds.value;for(let h=0;h<a.length;h++)i[a[h]]=c[h];e.__ids=i}return e.__ids[A]}function qa(e,A,i,a){for(let c=i;c<a;c++)if(A(e[c],c))return c;return-1}const Y0=512,Ry={...yi.defaultProps,data:En,onDataLoad:{type:"function",value:null,optional:!0,compare:!1},uniqueIdProperty:"",highlightedFeatureId:null,loaders:[Ku],binary:!0};class tc extends Lr{initializeState(){super.initializeState();const A=this.context.viewport.resolution!==void 0?!1:this.props.binary;this.setState({binary:A,data:null,tileJSON:null,hoveredFeatureId:null,hoveredFeatureLayerName:null})}get isLoaded(){return!!(this.state?.data&&super.isLoaded)}updateState({props:A,oldProps:i,context:a,changeFlags:c}){c.dataChanged&&this._updateTileData(),this.state?.data&&(super.updateState({props:A,oldProps:i,context:a,changeFlags:c}),this._setWGS84PropertyForTiles());const{highlightColor:h}=A;h!==i.highlightColor&&Array.isArray(h)&&this.setState({highlightColor:h})}async _updateTileData(){let A=this.props.data,i=null;if(typeof A=="string"&&!M3(A)){const{onDataLoad:a,fetch:c}=this.props;this.setState({data:null,tileJSON:null});try{i=await c(A,{propName:"data",layer:this,loaders:[]})}catch(h){this.raiseError(h,"loading TileJSON"),A=null}a&&a(i,{propName:"data",layer:this})}else A&&typeof A=="object"&&"tilejson"in A&&(i=A);i&&(A=i.tiles),this.setState({data:A,tileJSON:i})}_getTilesetOptions(){const A=super._getTilesetOptions(),i=this.state.tileJSON,{minZoom:a,maxZoom:c}=this.props;return i&&(Number.isFinite(i.minzoom)&&i.minzoom>a&&(A.minZoom=i.minzoom),Number.isFinite(i.maxzoom)&&(!Number.isFinite(c)||i.maxzoom<c)&&(A.maxZoom=i.maxzoom)),A}renderLayers(){return this.state?.data?super.renderLayers():null}getTileData(A){const{data:i,binary:a}=this.state,{index:c,signal:h}=A,g=Mn(i,A);if(!g)return Promise.reject("Invalid URL");let m=this.getLoadOptions();const{fetch:y}=this.props;return m={...m,mimeType:"application/x-protobuf",mvt:{...m?.mvt,coordinates:this.context.viewport.resolution?"wgs84":"local",tileIndex:c},gis:a?{format:"binary"}:{}},y(g,{propName:"data",layer:this,loadOptions:m,signal:h})}renderSubLayers(A){const{x:i,y:a,z:c}=A.tile.index,h=Math.pow(2,c),g=Y0/h,m=-g,y=Y0*i/h,v=Y0*(1-a/h),_=new KA().scale([g,m,1]);A.autoHighlight=!1,this.context.viewport.resolution||(A.modelMatrix=_,A.coordinateOrigin=[y,v,0],A.coordinateSystem=Ct.CARTESIAN,A.extensions=[...A.extensions||[],new s2]);const C=super.renderSubLayers(A);return this.state.binary&&!(C instanceof yi)&&Ti.warn("renderSubLayers() must return GeoJsonLayer when using binary:true")(),C}_updateAutoHighlight(A){const{uniqueIdProperty:i}=this.props,{hoveredFeatureId:a,hoveredFeatureLayerName:c}=this.state,h=A.object;let g=null,m=null;h&&(g=Z0(h,i),m=Ha(h));let{highlightColor:y}=this.props;typeof y=="function"&&(y=y(A)),(a!==g||c!==m)&&this.setState({highlightColor:y,hoveredFeatureId:g,hoveredFeatureLayerName:m})}_isWGS84(){return!!this.context.viewport.resolution}getPickingInfo(A){const i=super.getPickingInfo(A);if(this.state.binary&&i.index!==-1){const{data:a}=A.sourceLayer.props;i.object=Ga(a,{globalFeatureId:i.index})}return i.object&&!this._isWGS84()&&(i.object=Wa(i.object,i.tile.bbox,this.context.viewport)),i}getSubLayerPropsByTile(A){return{highlightedObjectIndex:this.getHighlightedObjectIndex(A),highlightColor:this.state.highlightColor}}getHighlightedObjectIndex(A){const{hoveredFeatureId:i,hoveredFeatureLayerName:a,binary:c}=this.state,{uniqueIdProperty:h,highlightedFeatureId:g}=this.props,m=A.content,y=ja(g);if(!(ja(i)||y))return-1;const _=y?g:i;return Array.isArray(m)?m.findIndex(C=>{const P=Z0(C,h)===_,N=y||Ha(C)===a;return P&&N}):m&&c?Ly(m,h,_,y?"":a):-1}_pickObjects(A){const{deck:i,viewport:a}=this.context,c=a.width,h=a.height,g=a.x,m=a.y,y=[this.id];return i.pickObjects({x:g,y:m,width:c,height:h,layerIds:y,maxObjects:A})}getRenderedFeatures(A=null){const i=this._pickObjects(A),a=new Set,c=[];for(const h of i){const g=Z0(h.object,this.props.uniqueIdProperty);g===void 0?c.push(h.object):a.has(g)||(a.add(g),c.push(h.object))}return c}_setWGS84PropertyForTiles(){const A="dataInWGS84";this.state.tileset.selectedTiles.forEach(a=>{a.hasOwnProperty(A)||Object.defineProperty(a,A,{get:()=>{if(!a.content)return null;if(this.state.binary&&Array.isArray(a.content)&&!a.content.length)return[];const{bbox:c}=a;if(a._contentWGS84===void 0&&C3(c)){const h=this.state.binary?Ga(a.content):a.content;a._contentWGS84=h.map(g=>Wa(g,c,this.context.viewport))}return a._contentWGS84}})})}}tc.layerName="MVTLayer";tc.defaultProps=Ry;function Z0(e,A){if(e.properties&&A)return e.properties[A];if("id"in e)return e.id}function Ha(e){return e.properties?.layerName||null}function ja(e){return e!=null&&e!==""}function Wa(e,A,i){const a={...e,geometry:{type:e.geometry.type}};return Object.defineProperty(a.geometry,"coordinates",{get:()=>Iy(e.geometry,A,i).coordinates}),a}const Ya="0123456789bcdefghjkmnpqrstuvwxyz",rc={};for(let e=0;e<Ya.length;e++)rc[Ya.charAt(e)]=e;const Dy=-90,Oy=90,ky=-180,Fy=180;function Uy(e){let A=!0,i=Oy,a=Dy,c=Fy,h=ky,g,m=0;for(let y=0,v=e.length;y<v;y++){const _=e[y].toLowerCase();m=rc[_];for(let C=4;C>=0;C--){const P=m>>C&1;A?(g=(c+h)/2,P===1?h=g:c=g):(g=(i+a)/2,P===1?a=g:i=g),A=!A}}return[a,h,i,c]}function Qy(e){const[A,i,a,c]=Uy(e);return[c,a,c,A,i,A,i,a,c,a]}const Vy={getGeohash:{type:"accessor",value:e=>e.geohash}};class nc extends Nt{indexToBounds(){const{data:A,getGeohash:i}=this.props;return{data:A,_normalize:!1,positionFormat:"XY",getPolygon:(a,c)=>Qy(i(a,c))}}}nc.layerName="GeohashLayer";nc.defaultProps=Vy;export{iu as A5Layer,nc as GeohashLayer,cu as GreatCircleLayer,yu as H3ClusterLayer,lr as H3HexagonLayer,tc as MVTLayer,hu as QuadkeyLayer,fu as S2Layer,Zu as TerrainLayer,Wu as Tile3DLayer,Lr as TileLayer,wu as TripsLayer,Nt as _GeoCellLayer,Xm as _Tile2DHeader,R3 as _Tileset2D,uu as _WMSLayer,Mn as _getURLFromTemplate};
|
|
115
|
+
//# sourceMappingURL=geo-layers.js.map
|